【问题标题】:How to pass on parameters from pretty URL to JSP pages?如何将参数从漂亮的 URL 传递到 JSP 页面?
【发布时间】: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 时发现的内容也不是很详细,因此也非常欢迎提供一个很好的参考!

【问题讨论】:

    标签: java jsp servlets friendly-url


    【解决方案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 乍一看可能令人望而生畏,但实际上实现起来非常简单直观。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多