[英]Forward to a servlet and set attribute
我正在使用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");
但是由於某種原因,當我重定向而不是轉發時,set Attribute無法正常工作。
redirect是發送給瀏覽器的HTTP響應,請求其向指定的URL提交新請求。 由於它會導致發出全新請求,因此您設置的先前請求屬性將在新請求中不可用。
關於轉發到servlet,您是否檢查了web.xml配置。 是否進行了設置,以便轉發的servlet看到轉發的請求?
您可以將屬性保存到第一個servlet中的會話中,然后從第二個servlet中訪問它。 使用http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession()
您也可以在重定向的URL查詢字符串中傳遞屬性值。 因此您的重定向URL看起來像是“ myRedirectUrl?attributeName = attributeValue”
另外,請嘗試使用“包含”方法而不是“前進”方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.