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

时间:2013-02-04 00:06:52

标签: java jsp servlets friendly-url

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

我正在尝试这个:

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

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

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

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

我需要的是一个组合。另外,我在将URL参数传递给Servlet时发现的内容也不太详细,所以对此的一个很好的参考也非常受欢迎!

2 个答案:

答案 0 :(得分:3)

  

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

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

E.g。

@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()方法来细分可用部分中的路径信息。

答案 1 :(得分:1)

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

request.getRequestDispatcher().forward(JSPurl)

我们假设您有一个网址分支/sales/。在此网址分支下,您可以允许/implemented/usersales.jsp提供以下网址:

  • /销售/ liquour /用户/ {区域}
  • /销售/ liquour /软/用户/ {区域}
  • /销售/洗浴用品/用户/ {类型}

以及/implemented/products.jsp要提供的以下网址 - / sales / groceries / products / {section} - / sales / groceries / meat / products / {region} - /销售/杂货/蔬菜/豆类/产品/ {region}

您可以将servlet类org.myorg.SalesHandler的web.xml servlet映射映射到/ sales /。

在org.myorg.SalesHandler servlet类的服务方法重写中, 分析URL模式(使用regexp或其他方式),然后使用

有条件地转发请求
request.getRequestDispatcher().forward(JSPurl)

JAX-RS

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

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

JAX-RS起初可能看起来令人生畏,但它实际上非常简单直观。