JSP中四種傳遞引數的方法
今天老師講了jsp中四種傳遞引數的方法,我覺得總結一下,挺好的,以備後用!
1、form表單
2、request.setAttribute();和request.getAttribute();
3、超連結:<a herf="index.jsp"?a=a&b=b&c=c>name</a>
4、<jsp:param>
下面一一舉例說明:
1、form表單
form.jsp:
<%@page contentType="text/html; charset=GB2312"%> <html> <head> <title> form.jsp file </title> </head> <body style="background-color:lightblue"> <h2 style="font-family:arial;color:red;font-size:25px;text-align:center">登入頁面</h2> <form action="result.jsp" method="get" align="center"> 姓名:<input type="text" name="name" size="20" value="" maxlength="20"><br/> 密碼:<input type="password" name="password" size="20" value="" maxlength="20"><br/> <!--在愛好前空一個空格,是為了排版好看些--> 愛好:<input type="checkbox" name="hobby" value="唱歌">唱歌 <input type="checkbox" name="hobby" value="足球">足球 <input type="checkbox" name="hobby" value="籃球">籃球<br/><br/> <input type="submit" name="submit" value="登入"> <input type="reset" name="reset" value="重置"><br/> </form> </body> </html>
result.jsp:
注意:form表單的提交方式為get,在引數傳遞時會遇到中文亂碼的問題,一個簡單的解決方法是,將接受到的字串先轉換成一個byte陣列,再用String構造一個新的編碼格式的String,如:<%@page language="java" import="java.util.*" pageEncoding="GB2312"%> <html> <head> <title> result.jsp file </title> </head> <body bgcolor="ffffff"> <% request.setCharacterEncoding("GB2312"); String name=request.getParameter("name"); name=new String(name.getBytes("iso-8859-1"),"GB2312"); String pwd=request.getParameter("password"); String[] hobby=request.getParameterValues("hobby");//注意這裡的函式是getParameterValues()接受一個數組的資料 %> <% if(!name.equals("") && !pwd.equals("")) { %> 您好!登入成功!<br/> 姓名:<%=name%><br/> 密碼:<%=pwd%><br/> 愛好:<% for(String ho: hobby) { ho=new String(ho.getBytes("iso-8859-1"),"GB2312"); out.print(ho+" "); } %> <% } else { %> 請輸入姓名或密碼! <% } %> </body> </html>
String name=request.getParameter("name");
name=new String(name.getBytes("iso-8859-1"),"GB2312");
如果form表單的提交方式為post,解決亂碼問題的簡單辦法是,使用 request.setCharacterEncoding("GB2312");設定request的編碼方式。
為什麼會出現中文亂碼問題呢?因為Tomcat伺服器預設的系統編碼方式為iso-8859-1,你傳遞引數給伺服器時,使用的是預設的iso-8859-1的編碼方式,但是伺服器向你返回資訊時,是按page指令中設定的編碼方式,如:<%@page language="java" import="java.util.*" pageEncoding="GB2312"%>,這樣就混合了兩種編碼方式,所以會出現亂碼,所以解決之道就是統一傳遞和接收的編碼方式。
2、request.setAttribute()和request.getAttribute()
set.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>
set.jsp file
</title>
</head>
<body style="background-color:lightblue">
<%
request.setAttribute("name","心雨");
%>
<jsp:forward page="get.jsp"/>
</body>
</html>
get.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>
get.jsp file
</title>
</head>
<body style="background-color:lightblue">
<%
out.println("傳遞過來的引數是:"+request.getAttribute("name"));
%>
</body>
</html>
request.setAttribute()和request.getAttribute()是配合<jsp:forward>或是include指令來實現的。
3、超連結:<a herf="index.jsp?a=a&b=b&c=c">name</a>
href.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>
href.jsp file
</title>
</head>
<body style="background-color:lightblue">
<a href="getHerf.jsp?name=心雨&password=123">傳遞引數</a>
</body>
</html>
getHref.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>
getHref.jsp file
</title>
</head>
<body style="background-color:lightblue">
<%
String name=request.getParameter("name");
name=new String(name.getBytes("iso-8859-1"),"gb2312");
out.print("name:"+name);
%>
<br/>
<%
out.print("password:"+request.getParameter("password"));
%>
</body>
</html>
這種傳遞引數的方法和form表單的get方式類似,是通過位址列傳遞的引數,其亂碼解決方法也和form 的get方式一樣。
4、<jsp:param>
param.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>
param.jsp file
</title>
</head>
<body style="background-color:lightblue">
<%request.setCharacterEncoding("GB2312");%>
<jsp:forward page="getParam.jsp">
<jsp:param name="name" value="心雨"/>
<jsp:param name="password" value="123"/>
</jsp:forward>
</body>
</html>
getParam.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>
getParam.jsp file
</title>
</head>
<body style="background-color:lightblue">
<%
String name=request.getParameter("name");
out.print("name:"+name);
%>
<br/>
<%
out.print("password:"+request.getParameter("password"));
%>
</body>
</html>
這裡發現了一個奇怪的問題,還是在中文亂碼的問題上,在form表單的例子中,如果傳遞方式為post,則只需要在接收引數的頁面設定request的編碼方式就可以了,即request.setCharacterEncoding("GB2312");,注意是在接收引數的頁面,如果將該句放到form表單裡,那麼不起作用,仍然是亂碼。而在本例中,為了使傳遞的引數不出現亂碼,卻是將request.setCharacterEncoding("GB2312");放在傳送引數的頁面中,才會正常顯示中文,放在接收引數的頁面中,不起作用。也許這就是<jsp:param>和form表單傳遞引數不同的地方。為什麼會有這個不同呢?可能是因為form表單中的引數是由客戶端傳送到服務端上的,需要經過一個request的打包過程,但是<jsp:param>傳遞的引數本身就是在伺服器端的,不需要經歷由客戶端到服務端這麼一個過程,但是伺服器裡的引數傳遞是這麼回事呢?這個問題,我不知道了!真是知識是一個擴大的圓圈,你知道的越多,那麼不知道的就越多!努力吧!
相關推薦
JSP中四種傳遞引數的方法
今天老師講了jsp中四種傳遞引數的方法,我覺得總結一下,挺好的,以備後用! 1、form表單 2、request.setAttribute();和request.getAttribute(); 3、超連結:<a herf="index.jsp"?a=a&b=b
四種傳遞引數的方法
主程式在呼叫子程式時,往往要向子程式傳遞一些引數;同樣,子程式執行後也經常要把一些結果引數傳回給主程式。主程式與子程式之間的這種資訊傳遞稱為引數傳遞。 引數傳遞有四種方法:暫存器引數傳遞,約定儲存單元引數傳遞,利用CALL後續區進行引數傳遞,利用堆疊進行引數傳遞。 一、
JSP 的四種傳值方法
url字尾追加引數Form表單設定cookies設定session1.url追加引數<a href="next.jsp?paramA=A¶mB=B...">URL 後面追加引數</a
HTTP協議中四種交互方法學習
-s 方法學 tps style 數字 get 放置 服務 冪等 一、Get Get用於獲取信息,註意,他只是獲取、查詢數據,也就是說它不會修改服務器上的數據。而根據HTTP規範, 獲取信息的過程是安全和冪等的。GET請求的數據會附在URL之後,以“?”分割URL和傳輸數據
jsp中四種範圍變數
jsp頁面中有四種範圍變數:request,session,application,pageContext。 這四種區別還是很好區分的,以我的思路方法: 有3個jsp頁面: p1.jsp T
SpringMVC 學習 十一 springMVC控制器向jsp或者別的控制器傳遞引數的四種方法
以後的開發,大部分是傳送ajax,因此這四種傳遞引數的方法,並不太常用。作為了解吧 第一種:使用原生 Servlet 在控制器的響應的方法中新增Servlet中的一些作用域:HttpRequestServlet,或者HttpSession。 【注意】在方法中,ServletContext的物件是不能作為
向scrapy中的spider傳遞引數的幾種方法
有時需要根據專案的實際需求向spider傳遞引數以控制spider的行為,比如說,根據使用者提交的url來控制spider爬取的網站。在這種情況下,可以使用兩種方法向spider傳遞引數。 第一種方法
JavaScript中四種呼叫函式的方法
理解函式的四種呼叫方式對理解this有很大的幫助 1.函式呼叫 即直接呼叫,比如fn(),this指向函式當時的context,在瀏覽器中是window,在node中是global 2.方法呼叫 比如Obj.fn() this指向Obj. 如a.b.c.d.f()那t
unity中四種讀取txt檔案的方法和一種寫入txt方法
//注意:要讀取的檔案的編碼型別要為utf-8,不然會出現中文亂碼或者直接不顯示,如果是其它編碼方式可以把檔案 //另儲存為utf-8的格式 using UnityEngine; using System.Collections; using System.IO;//用法三的
iOS中常用的四種資料持久化方法簡介
OS中的資料持久化方式,基本上有以下四種:屬性列表、物件歸檔、SQLite3和Core Data NSUserDefaults,用於儲存配置資訊 SQLite,用於儲存查詢需求較多的資料 CoreData,用於規劃應用中的物件 使用基本物件型別定製的個性化快取方案1.屬性列表 涉及到的主要類:NSUs
PHOTOSHOP中常用的四種摳圖方法
最近不斷有人問怎樣換照片背景的問題,實際上是關於摳圖的問題,把你需要的內容從照片中摳出來了,換背景就輕而易舉了。現介紹四種最常用的摳圖和換背景的方法,供參考: 一、如果照片的主體與背景反差較大,邊沿較清楚,如下圖所示,用“抽出”工具摳圖最簡單。 操作方法如下:
分享php中四種webservice實現的簡單架構方法及例項
本人所瞭解的webservice有以下幾種:PHP本身的SOAP,開源的NUSOAP,商業版的PHPRPC,以及使用二進位制傳輸資料流的HessianPHP,那麼一下就簡單的介紹下這幾種webservice在php中的使用,雖然網上也有很多這方面的資料,但是這是我個人實踐所得,當然也是從網上找的資料
java中四種許可權修飾符,靜態程式碼塊,構造程式碼塊,構造方法執行順序。
一、java中類有四種許可權 1、要想僅能在本類中訪問使用private修飾。 2、要想本包中的類都可以訪問不加修飾符即可。 3、要想本包中的類與其他包中的子類可以訪問使用protected修飾。(不在同一包中時,只能在子類裡面可以呼叫,其他測試類建物件都不行,只給不同包中的子
JAVA中四種常見建立物件方法
一、使用new關鍵字 這是我們最常見的也是最簡單的建立物件的方式,通過這種方式我們還可以呼叫任意的夠贊函式(無參的和有參的)。 比如:Student student = new Student(); 二、呼叫物件的clone的方法 無論何時我們呼叫一
C++中四種執行緒同步的方法
現在流行的程序執行緒同步互斥的控制機制,其實是由最原始最基本的4種方法實現的。由這4種方法組合優化就有了.Net和Java下靈活多變的,程式設計簡便的執行緒程序控制手段。 這4種方法具體定義如下 在《作業系統教程》ISBN 7-5053-6193-7 一書中能夠找到
UDP中四種不同的NAT型別及檢測方法【轉發與點評】
UDP中四種不同的NAT型別及檢測方法 考慮到UDP的無狀態特性,目前針對其的NAT實現大致可分為Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四種。 值得指出的是,對於TCP協議而言,一般來說,目
ionic專案中跨頁面傳遞引數的幾種方式
1、使用angularjs自帶的$cacheFactory服務 $cacheFactory 從字面直譯即為快取工廠,可以用它來生成快取物件,快取物件以key-value的方式進行資料的儲存,在整個應用
oracle中四種不同方法迴圈輸出1-10
set serveroutput ondeclare i int:=10; j int:=0; begin loop j:=j+1; if j<11 then dbms_output.put_line(j); elsif j>11 th
C++中四種進程或線程同步互斥的控制方法
實現 適合 begin 執行 als 零基礎 time 並發 多少 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net 現在流行的進程線程同步互斥的控制機
關於springmvc不用model直接返回jsp中參數傳遞的兩種情況
宋體 返回 name param gmv 分享圖片 請求 技術 con 1.springmvc中controller一開始參數是一個實體類,不加model默認轉發到jsp,jsp裏要通過${實體類(首字母小寫).屬性名}來獲取實體類裏的屬性值: controller中