javascript
JSP 页面传值方法总结
? JSP 頁面間傳遞參數是項目中經常需要的,這應該算是 web 基本功吧。
? 試著將各種方式總結下來,需要時可以進行權衡利弊選擇最合適的方式。
1. URL 鏈接后追加參數
<a href="next.jsp?paramA=A¶mB=B...">URL 后面追加參數</a><jsp:include page="next.jsp"><jsp:param name="paramA" value="A"/></jsp:include> <jsp:forward page="next.jsp"><jsp:param name="paramA" value="B"/></jsp:forward> response.sendRedirect("next.jsp?paramA=A¶mB=B...")window.location = "next.jsp?paramA=A¶mB=B..."? ?上述幾種代碼執行時都將攜帶參數跳轉到 next.jsp 頁面中。
? ?在 next.jsp 頁面中獲取對應參數的方式如下:
//內嵌的 java 代碼 <%String paramA = request.getParameter("paramA"); %>//如果引入了 EL {param.paramA}? ?優點:簡單性和多瀏覽器支持(沒有瀏覽器不支持URL)。
缺點:
? ?1)傳輸的數據只能是字符串,對數據類型和大小都有一定的限制;
? ?2)傳輸數據的值會在瀏覽器地址欄里面被看到,安全性等級低。
2. Form
<form action="next.jsp" method="post"> <input type="text" name="paramA" value="A"> <input type="hidden" name="paramB" value="B"> <input type="submit" value="提交"> </form>? ???在 next.jsp 頁面中獲取對應參數的方式與 (1)是類似的。
優點:
1)簡單性和多瀏覽器支持(同樣沒有瀏覽器不支持 form);
2) 可以提交的數據量比 URL 方式要大的多;
3)傳輸的值會在瀏覽器的地址欄中顯示出來,但是有一點黑手段的同樣能從頁面源碼中將參數列表構造出來;
缺點:
1)傳輸的數據也只能是字符串,對數據類型有一定的限制;
3. 設置 Cookie
? ?用客戶端的認證憑證小小 Cookie 當然也能實現 JSP 頁面的傳值。
<% Cookie c=new Cookie("paramA","A"); c.setMaxAge(60*60); //cookie 有效期1分鐘response.addCookie(c); //將cookie 添加到 http響應中%>? ?想要在 next.jsp 頁面讀取 cookie,需要調用 request.getCookies() 方法來獲得一個javax.servlet.http.Cookie 對象的數組。
? ?然后遍歷這個數組,使用getName()方法和getValue()方法來獲取每一個cookie的名稱和值。
//內嵌的 java 代碼 <%Cookie cookie = null;// 獲取cookies的數據,是一個數組Cookie[] cookies = request.getCookies();if(cookies != null ){for (int i = 0; i < cookies.length; i++){cookie = cookies[i];out.print("參數名 : " + cookie.getName());out.print("<br>");out.print("參數值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");out.print("------------------------------------<br>");}}else{out.println("<h2>沒有發現 Cookie</h2>");} %>//EL 獲取方式 ${cookie.paramA.value}優點:
1)Cookie 的值能夠持久化,即使客戶端機器關閉,下次打開還是可以得到里面的值;
2) Cookie 可以幫助服務器端保存多個狀態信息,但是不用服務器端專門分配存儲資源,減輕了服務器端的負擔。
缺點:
1)雖然安全性相比 URL 和 Form 要提高了許多,但是也存在黑手段獲取客戶端 cookie,暴露客戶信息。
4. 設置 Session
? ?個人認為 session 和 cookie 一個在服務端一個在客戶端。
? ?在它們中添加鍵值對后,不僅僅是提供了頁面之間的傳遞,其實是一種數據共享的解決方案。
<% session.setAttribute("paramA","A"); response.sendRedirect("next.jsp"); %>??? 想要在 next.jsp 讀取 session 的方法:
//內嵌java 片段 <%=session.getAttribute("paramA") %>//EL 獲取方式 {session.paramA}? ?Session 的優缺點可以參照 Cookie。
?
轉載于:https://www.cnblogs.com/java-class/p/6358964.html
總結
以上是生活随笔為你收集整理的JSP 页面传值方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数进阶学习之二 声明 定义
- 下一篇: begin.lydsy 入门OJ题库:1