如何将参数从漂亮的 URL 传递到 JSP 页面?

Posted

技术标签:

【中文标题】如何将参数从漂亮的 URL 传递到 JSP 页面?【英文标题】:How to pass on parameters from pretty URL to JSP pages? 【发布时间】:2013-01-18 16:29:08 【问题描述】:

我试图同时做两件事,但我似乎找不到可以同时做这两件事的答案。

我正在尝试这个:

我希望以/user/parameter 结尾的 URL 映射到我可以访问参数的 JSP 页面 user.jsp。

我找到了使用这种方法将参数从 web.xml 文件传递​​到 JSP 的方法

<init-param>
<param-name>someParam</param-name>
<param-value>itsValue</param-value>
</init-param>

我找到了创建 URL 过滤器并将它们映射到 Java Servlet 的方法。

我需要的是一个组合。另外,我在将 URL 参数传递给 Servlets 时发现的内容也不是很详细,因此也非常欢迎提供一个很好的参考!

【问题讨论】:

【参考方案1】:

我希望以 /user/parameter 结尾的 URL 映射到 JSP 页面 user.jsp,我可以在其中访问参数。

/user/* 上映射一个servlet,并使用HttpServletRequest#getPathInfo() 提取路径信息。

例如

@WebServlet("/user/*")
public class UserServlet extends HttpServlet 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        String pathInfo = request.getPathInfo(); // "/parameter"
        // ...
        request.getRequestDispatcher("/WEB-INF/user.jsp").forward(request, response);
    


基本上就是这样。使用常用的String 方法,如substring() 和/或split(),将路径信息分解为可用部分。

【讨论】:

【参考方案2】:

使用 base-url servlet 解析 URL 并执行条件 servlet 转发到适当的 JSP。

request.getRequestDispatcher().forward(JSPurl)

假设您有一个 URL 分支 /sales/。在此 URL 分支下,您将允许 /implemented/usersales.jsp 为以下 URL 提供服务:

/sales/liquour/users/region /sales/liquour/soft/users/region /sales/toiletries/users/type

以及由/implemented/products.jsp 提供服务的以下网址 - /sales/groceries/products/section - /sales/groceries/meat/products/region - /sales/groceries/vegetables/beans/products/region

您将有一个 web.xml servlet 映射,用于将 servlet 类 org.myorg.SalesHandler 映射到 /sales/。

在 org.myorg.SalesHandler servlet 类中的服务方法覆盖中, 分析 URL 模式(使用正则表达式或其他方式),然后使用有条件地转发请求

request.getRequestDispatcher().forward(JSPurl)

JAX-RS

但是当我们有 jax-rs 时,你为什么要这样做呢?

How to forward from a JAX-RS service to JSP?.

JAX-RS 乍一看可能令人望而生畏,但实际上实现起来非常简单直观。

【讨论】:

以上是关于如何将参数从漂亮的 URL 传递到 JSP 页面?的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么实现页面之间传递参数?

如何从Spring表单传递参数到@RequestParam?

将参数从jsp页面传递给java类而不使用servlet [重复]

将数组作为url参数传递并重定向到新页面

从jsp页面跳转到另一个jsp页面怎么传递参数

JAVA后台 关于如何从后台传递信息在jsp前端