是否可以在JSP頁面上使用request.setAttribute
然後在HTML Submit上在Servlet
中獲得相同的請求屬性?在JSP頁面中使用request.setAttribute
回答
不幸的是,Request對象只有在頁面加載完成後纔可用 - 一旦完成,您將失去所有值,除非它們已經存儲在某個地方。
如果你想堅持通過請求屬性,您需要:
- 有一個隱藏的輸入您的形式,如
<input type="hidden" name="myhiddenvalue" value="<%= request.getParameter("value") %>" />
。這將作爲請求參數在servlet中可用。 - 把它放在會議(見
request.getSession()
- 在JSP這可作爲簡單session
)
我建議使用會話,因爲它更易於管理。
糾正我,如果錯了...我想請求不連續的頁面之間仍然存在..
認爲你從第1頁穿越 - >第3頁。
您有一定的價值 - 2>頁使用getAttribute在頁面2中檢索到的頁面1中的setAttribute設置請求對象,然後如果您嘗試在同一個請求對象中再次設置某些內容以在頁面3中檢索它,那麼它將給予您空值作爲「創建的請求JSP和提交JSP時生成的請求是完全不同的請求,並且放在第一個上的任何屬性在第二個上將不可用「。
我的意思是在第2頁是這樣的失敗:
凡爲同樣的事情已經在第1頁的情況下,像工作:
所以我想我會需要進行任Phill建議的兩個選項。
Phil Sacre的回覆是正確的,但是會話不應該只用於它的地獄。您只應將此用於確實需要在會話的整個生命週期中生存的值,例如用戶登錄。通常會看到人們過度使用會話並遇到更多問題,特別是在處理收藏或用戶返回他們以前訪問過的頁面時,只發現他們的值仍然來自上次訪問。一個聰明的程序儘可能地減少變量的範圍,壞的程序會使用會話太多。
我認爲菲爾是正確的請求選項是可用的,直到頁面加載。所以如果我們想將價值發送到另一個頁面,我們希望將其設置在隱藏標籤中或在會話中設置,如果您只需要其他頁面上的值而不超過該值,那麼隱藏標籤是最好的選擇,如果您需要該值在當時的多個頁面上,會話比隱藏的標籤更好。
嘗試
request.getSession().setAttribute("SUBFAMILY", subFam);
request.getSession().getAttribute("SUBFAMILY");
如果你希望你的要求仍然存在,試試這個:
例如:你的JSP或Servlet頁面
request.getSession().setAttribute("SUBFAMILY", subFam);
上任何接收頁面上使用下面的線路檢索您的會話和數據:
SubFamily subFam = (SubFamily)request.getSession().getAttribute("SUBFAMILY");
你可以做到這一點使用的pageContext屬性,雖然:
在JSP:
<form action="Enter.do">
<button type="SUBMIT" id="btnSubmit" name="btnSubmit">SUBMIT</button>
</form>
<% String s="opportunity";
pageContext.setAttribute("opp", s, PageContext.APPLICATION_SCOPE); %>
在Servlet(鏈接到 「Enter.do」 的url-pattern):
String s=(String) request.getServletContext().getAttribute("opp");
除了APPLICATION_SCOPE之外,還有其他一些作用域,比如SESSION_SCOPE。 APPLICATION_SCOPE用於ServletContext屬性。
- 1. 在jsp頁面中執行request.setAttribute,在java代碼中執行request.getAttribute
- 2. 角色了request.setAttribute JSP
- 3. 如何在JSP頁面中使用taglib
- 4. 如何在JSP頁面中使用Iterables?
- 5. 如何在jsp頁面中使用css
- 6. 如何在jsp頁面中使用servlet?
- 7. 在Jsp頁面使用jquery分頁
- 8. 在JSP頁面
- 9. 如何在JSP頁面中包含JSP
- 10. 在JSP頁面上使用Bootstrap模式
- 11. 在JSP頁面中調試?
- 12. Flexbox的在JSP頁面中
- 13. 如何使在JSP頁面中
- 14. 其他JSP頁面在相同的jsp頁面中打開
- 15. 如何在JSP頁面中包含JSP頁面?
- 16. javascript在jsp頁面
- 17. java.lang.ExceptionInInitializerError在JSP頁面
- 18. PropertyNotFoundException在JSP頁面
- 19. 如何使用一個jsp頁面中的數據到另一個jsp頁面
- 20. 在jsp中調用java函數頁面
- 21. 如何在Android中調用JSP頁面
- 22. 在JSP頁面中的作用域
- 23. 在jsp頁面中禁用favicon
- 24. 在Servlet中創建會話並在JSP頁面中使用?
- 25. Ajax從JSP頁面調用servlet頁面
- 26. JSP頁面javax.el.PropertyNotFoundException
- 27. 從JSP頁面調用另一個JSP頁面
- 28. 在其他jsp頁面讀取jsp頁面內容到html
- 29. 當session.setAttribute或request.setAttribute被調用時Servlet不會轉發到jsp
- 30. 從anathor jsp頁面調用jsp方法
也許這不是不幸。 JSP腳本是一個不好的習慣。使用會話時要小心,管理起來比較容易,但有時在可伸縮性方面它是「昂貴的」。 – 2008-10-23 14:43:33