Javaweb的八種傳值方式

1.表單提交

html自帶的from方法,簡單易懂,便于操作,依靠于<from>標簽中的type="submit"進行表單傳輸,或者根據(jù)js進行控制提交表單。其中由method屬性決定以post或者get方式進行提交。

jsp代碼:

<form id="test" action="testservlet" method="post" name="test_form">
賬號:<input type="text" name="user_name" id="user"><p>
密碼:<input type="password" name="user_password" id="password"><p>
<input type="submit" value="提交">
</form>

java代碼(根據(jù)name屬性獲取參數(shù)):

String user = request.getParmeter("user_name");
String user = request.getParmeter("user_password");

2.URL傳參(超鏈接請求)

這種傳參方式,一般比較單一,所選取的值都是現(xiàn)有或者已經(jīng)定義的,并且只能用get提交方式去發(fā)送請求。所以大多數(shù)情況下,超鏈接只用來作為跳轉(zhuǎn)接口,而一般不會被用作傳遞參數(shù)的功能。不過,當JS來進行動態(tài)處理時,URL的方式還是十分靈活的,這里就不一一舉例了。
這里還可以通過href向servlet傳參

<a href = "test.jsp?user_name=aaa&user_password=bbb"><!--jsp代碼-->
String user = request.getParameter("user_name");
String pass = request.getParameter("user_password");//java取值代碼

3.Javabean傳參

JavaBean 通過提供符合一致性設(shè)計模式的公共方法將內(nèi)部域暴露成員屬性,set和get方法獲取。

Javabean使用有如此好處

1.提高代碼的可復用性:對于通用的事務處理邏輯,數(shù)據(jù)庫操作等都可以封裝在JavaBean中,通過調(diào)用JavaBean的屬性和方法可快速進行程序設(shè)計。
2.程序易于開發(fā)維護:實現(xiàn)邏輯的封裝,使事務處理和顯示互不干擾。
3.支持分布式運用:多用JavaBean,盡量減少java代碼大量出現(xiàn)在顯示界面。
4.可以便捷地傳遞數(shù)據(jù)。

以下用代碼舉個小栗子:
Javabean代碼:

 package model;
  
 public class User{
      private String user_name;
      private String user_password;
      public String getUser_name() {
          return user_name;
      }
      public void setUser_name(String user_name) {
           this.user_name = user_name;
      }
      public String getUser_password() {
           return user_password;
      }
      public void setUser_password(String user_password) {
           this.user_password = user_password;
      }
 }

傳遞參數(shù)的頁面:

<jsp:useBean id="user" class="model.User" scope="session" />
<%
    user.setUser_name("小明"); 4    user.setUser_password("******")  
%>
<a href="test.jsp">提交</a>

接收頁面:

<jsp:useBean id="user" class="entity.User" scope="session"></jsp:useBean>
<!--下面的動作方法當然可以獲取到值-->
姓名:<jsp:getProperty name="user" property="user_name"/>
密碼:<jsp:getProperty name="user" property="user_password"/>
<!--下面的普通方法當然也可以-->
姓名:<%=user.getUser_name()%><br>
密碼:<%=user.getUser_password()%><br>

4.session對象傳參

Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉(zhuǎn)時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創(chuàng)建一個 Session 對象。當會話過期或被放棄后,服務器將終止該會話,Session 對象最常見的一個用法就是存儲用戶的首選項。

簡單來說,就是服務器在確定每一個用戶過后都會存放用戶相關(guān)信息在服務器端,這個被存放的值的集合就是session對象。

傳參界面與接收的界面:

<%
//傳參界面
session.setAttribute("user_name", "小明");
session.setAttribute("user_password", "******");
%>
<a href="test.jsp">提交</a>
<%
//接收界面
out.println("姓名:"+session.getAttribute("username")); 
out.println("密碼:"+session.getAttribute("user_password"));
%>

5.cookie

Cookie實際上是一小段的文本信息??蛻舳苏埱蠓掌?,如果服務器需要記錄該用戶狀態(tài),就使用response向客 戶端瀏覽器頒發(fā)一個Cookie??蛻舳藶g覽器會把Cookie保存起來。當瀏覽器再請求該網(wǎng)站時,瀏覽器把請求的網(wǎng)址連同該Cookie一同提交給服務 器。服務器檢查該Cookie,以此來辨認用戶狀態(tài)。服務器還可以根據(jù)需要修改Cookie的內(nèi)容。Java中把Cookie封裝成了javax.servlet.http.Cookie類,每個Cookie都是該Cookie類的對象,服務器通過操作Cookie類對象對客戶端Cookie進行操作。

java代碼

Cookie cookie = new Cookie("username","password");// 新建Cookie
cookie.setMaxAge(3600);       // 設(shè)置生命周期為3600秒
response.addCookie(cookie); // 輸出到客戶端

6.application全局變量

application對象代表JSP所屬的WEB應用本身,可用于JSP頁面,或者Servlet之間交換信息。常用的方法有getAttribute(String attName), setAttribute(String attName,String attValue)getInitParameter(String Param)等。

服務器啟動后就產(chǎn)生了這個application對象,當客戶再所訪問的網(wǎng)站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務器關(guān)閉。

但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內(nèi)置的application對象。

傳參界面與接收的界面:

<%
//傳參界面
application.setAttribute("user_name", "小明");
application.setAttribute("user_password", "******");
%>
<a href="test.jsp">提交</a>
<%
//接收界面
out.println("姓名:"+application.getAttribute("username")); 
out.println("密碼:"+application.getAttribute("user_password")); 
%>

7.request對象

request對象是當客戶端向服務器端發(fā)送請求時,服務器為本次請求創(chuàng)建的,并在調(diào)用Servlet的service方法時,將該對象傳遞給service方法。

Request對象中封裝了客戶端發(fā)送過來的所有的請求數(shù)據(jù)。只要是有關(guān)于客戶端請求的信息,都可以藉由它來取得,例如請求標頭、請求方法、請求參數(shù)、客戶端IP,客戶端瀏覽器等等信息。

當然,它進行正常傳參時是和session與application類似的,畢竟同屬于四大范圍域。

<%
//傳參界面
request.setAttribute("user_name", "小明"); 
request.setAttribute("user_password", "******"); 
%>
<a href="test.jsp">提交</a>
<%
//接收界面
out.println("姓名:"+request.getAttribute("username")); 
out.println("密碼:"+request.getAttribute("user_password")); 
%>

8.jsp動作傳參

1.jsp:forward動作做頁面跳轉(zhuǎn)時傳遞參數(shù)。

2.jsp:param它可以實現(xiàn)主頁面向包含頁面?zhèn)鬟f參數(shù)。

傳參界面:

<jsp:forward page="test.jsp">
<jsp:param name="name" value="小明"  />
<jsp:param name="password" value="******" />
</jsp:forward></pre>

接收界面

<%
out.println("姓名:" + request.getParameter("user_name"));
out.println("密碼:" + request.getParameter("user_password"));
%>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容