簡體   English   中英

轉發到servlet並設置屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM