转发到servlet并设置属性

时间:2014-12-20 12:33:56

标签: java jsp servlets

我正在使用java中的servlet;我正试图从一个servlet转发到另一个servlet。 我还想将一个属性传递给另一个servlet。

当我想转发到JSP时,它运行正常。我做

request.setAttribute("attrName", attribute)
request.getRequestDispatcher("forward.jsp").forward(request, response);

但是当我对servlet做同样的事情时:

request.setAttribute("attrName", attribute)
request.getRequestDispatcher("TheServlet").forward(request, response);

我的服务器吓坏了,我收到以下错误:

javax.servlet.ServletRequestWrapper.isAsyncStarted(ServletRequestWrapper.java:395)

我知道我可以使用以下行重定向到servlet:

response.sendRedirect("TheServlet");

但由于某种原因,当我重定向而不是前进时,设置属性不起作用。

1 个答案:

答案 0 :(得分:1)

redirect是发送给浏览器的HTTP响应,要求它向指定的URL提交新请求。由于它导致发出一个全新的请求,因此您设置的先前请求属性将不会在新请求中可用。

在转发到servlet方面,您是否检查了web.xml配置。它是否设置为转发的servlet看到转发的请求?

您可以将属性保存到第一个servlet中的会话,并从第二个servlet访问它。 使用http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession()

您也可以在重定向中的URL查询字符串中传递属性值。因此,您的重定向网址看起来像'myRedirectUrl?attributeName = attributeValue'

另外还尝试使用'include'方法而不是'forward'。