Gab*_*enn 8 java parameters servlets forward
我的目标是我现在无法实现的目标:
我有一个servlet,比如'ReportServlet'.它需要一个请求参数,比如'p'.我显然可以通过以下方式获取参数:
request.getParameter("p");
Run Code Online (Sandbox Code Playgroud)
我的JSP中的查询字符串是:
<a href="<c:url value="/report"/>?p=value">report</a>
Run Code Online (Sandbox Code Playgroud)
而且每件事都很好.
现在:我有另一个servlet,比如'PreProcessingServlet'.我想将PreProcessingServlet转发到ReportServlet,传递一个在PreProcessingServlet中计算的'p'参数.我试过了 :
RequestDispatcher rd = getServletContext().getRequestDispatcher("/report?p="+value);
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)
但参数'p'在请求的queryString成员中,而不在参数中.
如何使用查询参数传递'p'参数,我可以从JSP和前进中以相同的方式检索'p'.
我不想使用请求属性,因为我想要一个独特的解决方案来从JSP和转发中获取参数.
我想我错过了什么,但我找不到什么!
Sot*_*lis 18
如有疑问,请始终遵守规范.在这种情况下,请参阅章节9.1.1 Query Strings in Request Dispatcher Paths
该
ServletContext
和ServletRequest
创造方法RequestDispatcher
使用路径信息的对象允许的查询字符串信息的路径可选附件.例如,开发人员可以RequestDispatcher
使用以下代码获取a :Run Code Online (Sandbox Code Playgroud)String path = "/raisins.jsp?orderno=5"; RequestDispatcher rd = context.getRequestDispatcher(path); rd.include(request, response);
用于创建
RequestDispatcher
优先级的查询字符串中指定的 参数,该参数优先于传递给包含的servlet的其他同名参数.与a关联的参数的RequestDispatcher
范围仅适用于包含或转发呼叫的持续时间.
所以你可以做得很好
RequestDispatcher rd = getServletContext().getRequestDispatcher("/report?p="+value);
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)
并且该参数p
仅可用于HttpServletRequest
映射到处理指定路径的资源,即./report
在这种情况下.如果是a HttpServlet
,则可以使用
request.getParameter("p");
Run Code Online (Sandbox Code Playgroud)
哪里request
是HttpServletRequest
方法参数.
当forward(..)
调用终止并且执行返回到您的时PreProcessingServlet
,该参数将不再在本地HttpServletRequest
对象中可用.
归档时间: |
|
查看次数: |
29486 次 |
最近记录: |