java - 转发到 servlet 并设置属性

标签 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");

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

最佳答案

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

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

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

您还可以在重定向的 URL 查询字符串中传递属性值。因此,您的重定向 URL 将类似于“myRedirectUrl?attributeName=attributeValue”

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

关于java - 转发到 servlet 并设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27580284/

相关文章:

java - Apache Camel : Why I can't send bean text to jms

java - 如何从项目中查找未使用的 Java 类和 JSP 文件

javascript - 如何使用 javascript 引用另一个页面元素

java - IllegalStateException:HttpServlet.service 中为 null

java - 如何在 Android 10 中以编程方式设置自定义主题属性

java - 创建包含 HyperLinkistener 和 MouseAdapter 的父类(super class)

java - 从 Android 中的 JSONArray 中提取值

java - 无法使用 Spring JDBC 将 jsp 表单详细信息发送到数据库

java - 从 Servlet 获取复选框值

java - 在与 GWT Module Base 不同的上下文中调用 GWT 服务?