【发布时间】:2014-02-19 13:50:31
【问题描述】:
有一个我暂时无法实现的目标:
我有一个 servlet,比如“ReportServlet”。它需要一个请求参数,比如'p'。 我显然可以通过以下方式获取参数:
request.getParameter("p");
我的 JSP 中的查询字符串是:
<a href="<c:url value="/report"/>?p=value">report</a>
一切正常。
现在:我有另一个 servlet,比如“PreProcessingServlet”。我想将 PreProcessingServlet 转发给 ReportServlet,传递一个在 PreProcessingServlet 中计算的“p”参数。我试过了:
RequestDispatcher rd = getServletContext().getRequestDispatcher("/report?p="+value);
rd.forward(request, response);
但是参数 'p' 在请求的 queryString 成员中,而不是在参数中。
我如何传递“p”参数,使用查询参数以从 JSP 和转发中检索“p”的方式相同。
我不想使用请求属性,因为我想要一个独特的解决方案来从 JSP 和转发中获取参数。
我想我错过了一些东西,但我找不到什么!
【问题讨论】:
-
如果是转发,则不需要传参数,参数已经存在,是同一个请求对象。
-
@SotiriosDelimanolis 您应该将其发布为答案
-
@SotiriosDelimanolis 这就是问题所在:参数不在请求中。它是从 PreProcessingServlet 中的其他来源计算的。我编辑问题
-
'我显然不想使用请求属性。' - 为什么这么明显?
-
老实说,注入或修改查询字符串是没有意义的。客户端向他们想要的 URI 发出他们想要的请求。由服务器来处理给定的请求。使用请求属性。无论您将其发送到什么资源,它们都将在
forward之后可用。
标签: java servlets parameters forward