Javaweb的七大傳參方式和以及各自特點
學習jsp一段時間,覺得還是需要把自己學習一些東西整理了一下,第一次發東西,還請各位多多支持
1.表單提交
html自帶的from方法,簡單易懂,便於操作,依靠於<from>標簽中的type="submit"進行表單傳輸,或者根據js進行控制提交表單。其中由method屬性決定以post或者get方式進行提交。
jsp代碼:
1 <form id="test" action="testservlet" method="post" name="test_form"> 2 賬號:<input type="text" name="user_name" id="user"><p> 3 密碼:<input type="password" name="user_password" id="password"><p> 4 <input type="submit" value="提交"> 5 </form>
java代碼(根據name屬性獲取參數):
1 String user = request.getParmeter("user_name");
2 String user = request.getParmeter("user_password");
2.URL傳參(超鏈接請求)
這種傳參方式,一般比較單一,所選取的值都是現有或者已經定義的,並且只能用get提交方式去發送請求。所以大多數情況下,超鏈接只用來作為跳轉接口,而一般不會被用作傳遞參數的功能。不過,當JS來進行動態處理時,URL的方式還是十分靈活的,這裏就不一一舉例了。
1 <a href = "test.jsp?user_name=aaa&user_password=bbb"><!--jsp代碼-->
1 String user = request.getParameter("user_name");
2 String pass = request.getParameter("user_password");//java取值代碼
3.Javabean傳參
JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取。
javabean使用有如此好處
1.提高代碼的可復用性:對於通用的事務處理邏輯,數據庫操作等都可以封裝在JavaBean中,通過調用JavaBean的屬性和方法可快速進行程序設計。
2.程序易於開發維護:實現邏輯的封裝,使事務處理和顯示互不幹擾。
3.支持分布式運用:多用JavaBean,盡量減少java代碼大量出現在顯示界面。
4.可以便捷地傳遞數據。
以下用代碼舉個小栗子:
javabean代碼:
1 package model;
2
3 public class User{
4 private String user_name;
5 private String user_password;
6 public String getUser_name() {
7 return user_name;
8 }
9 public void setUser_name(String user_name) {
10 this.user_name = user_name;
11 }
12 public String getUser_password() {
13 return user_password;
14 }
15 public void setUser_password(String user_password) {
16 this.user_password = user_password;
17 }
18 }
傳遞參數的頁面:
1 <jsp:useBean id="user" class="model.User" scope="session" />
2 <%
3 user.setUser_name("小明");
4 user.setUser_password("******");
5 %>
6 <a href="test.jsp">提交</a>
接收頁面:
1 <jsp:useBean id="user" class="entity.User" scope="session"></jsp:useBean>
2 <!--下面的動作方法當然可以獲取到值-->
3 姓名:<jsp:getProperty name="user" property="user_name"/>
4 密碼:<jsp:getProperty name="user" property="user_password"/>
5 <!--下面的普通方法當然也可以-->
6 姓名:<%=user.getUser_name()%><br>
7 密碼:<%=user.getUser_password()%><br>
4.session對象傳參
Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。
當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄後,服務器將終止該會話,Session 對象最常見的一個用法就是存儲用戶的首選項。
簡單來說,就是服務器在確定每一個用戶過後都會存放用戶相關信息在服務器端,這個被存放的值的集合就是session對象。
傳參界面與接收的界面:
1 <%
2 //傳參界面
3 session.setAttribute("user_name", "小明");
4 session.setAttribute("user_password", "******");
5 %>
6 <a href="test.jsp">提交</a>
7 <%
8 //接收界面
9 out.println("姓名:"+session.getAttribute("username"));
10 out.println("密碼:"+session.getAttribute("user_password"));
11 %>
5.cookie
Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客 戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務 器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容。Java中把Cookie封裝成了javax.servlet.http.Cookie類,每個Cookie都是該Cookie類的對象,服務器通過操作Cookie類對象對客戶端Cookie進行操作。
java代碼
1 Cookie cookie = new Cookie("username","password");// 新建Cookie
2 cookie.setMaxAge(3600); // 設置生命周期為3600秒
3 response.addCookie(cookie); // 輸出到客戶端
6.application全局變量
application對象代表JSP所屬的WEB應用本身,可用於JSP頁面,或者Servlet之間交換信息。常用的方法有getAttribute(String attName), setAttribute(String attName,String attValue)和getInitParameter(String Param)等。
服務器啟動後就產生了這個application對象,當客戶再所訪問的網站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務器關閉。
但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內置的application對象。
傳參界面與接收的界面:
1 <%
2 //傳參界面
3 application.setAttribute("user_name", "小明");
4 application.setAttribute("user_password", "******");
5 %>
6 <a href="test.jsp">提交</a>
7 <%
8 //接收界面
9 out.println("姓名:"+application.getAttribute("username"));
10 out.println("密碼:"+application.getAttribute("user_password"));
11 %>
7.request對象
request對象是當客戶端向服務器端發送請求時,服務器為本次請求創建的,並在調用Servlet的service方法時,將該對象傳遞給service方法。
Request對象中封裝了客戶端發送過來的所有的請求數據。只要是有關於客戶端請求的信息,都可以藉由它來取得,例如請求標頭、請求方法、請求參數、客戶端IP,客戶端瀏覽器等等信息。
當然,它進行正常傳參時是和session與application類似的,畢竟同屬於四大範圍域。
1 <%
2 //傳參界面
3 request.setAttribute("user_name", "小明");
4 request.setAttribute("user_password", "******");
5 %>
6 <a href="test.jsp">提交</a>
7 <%
8 //接收界面
9 out.println("姓名:"+request.getAttribute("username"));
10 out.println("密碼:"+request.getAttribute("user_password"));
11 %>
8.jsp動作傳參
1.jsp:forward動作做頁面跳轉時傳遞參數。
2.jsp:param它可以實現主頁面向包含頁面傳遞參數。
傳參界面:
1 <jsp:forward page="test.jsp">
2 <jsp:param name="name" value="小明" />
3 <jsp:param name="password" value="******" />
4 </jsp:forward>
接收界面
1 <%
2 out.println("姓名:" + request.getParameter("user_name"));
3 out.println("密碼:" + request.getParameter("user_password"));
4 %>
這就是八種常見傳參方式的小例子以及我個人的理解,其中除了cookie作為存儲在客戶端文本的傳參方式(減輕服務器端壓力,傳輸信息量大,安全性差),其他都是服務端的傳參模式(信息量小,安全好),謝謝大家支持。
Javaweb的七大傳參方式和以及各自特點