黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

JSP教程
JSP高級教程

JSP request對象

客戶端可通過 HTML 表單或在網(wǎng)頁地址后面提供參數(shù)的方法提交數(shù)據(jù),然后通過 request 對象的相關(guān)方法來獲取這些數(shù)據(jù)。request 對象封裝了客戶端的請求信息,包括用戶提交的信息以及客戶端的一些信息,服務(wù)端通過 request 對象可以了解到客戶端的需求,然后做出響應(yīng)。

request 對象是 HttpServletRequest(接口)的實例。請求信息的內(nèi)容包括請求的標(biāo)題頭(Header)信息(如瀏覽器的版本信息語言和編碼方式等),請求的方式(如 HTTP 的 GET 方法、POST 方法等),請求的參數(shù)名稱、參數(shù)值和客戶端的主機名稱等。

request 對象提供了一些方法,主要用來處理客戶端瀏覽器提交的請求中的各項參數(shù)和選項。表 1 列出了 request 對象常用的方法。下面介紹 request 對象的應(yīng)用。

表1 request對象常用的方法

方法

說明

Object getAttribute(String name)

用于返回由 name 指定的屬性值,如果指定的屬性值不存在,則返回一個 null 值

Enumeration getAttributeNames()

用于返回 request 對象的所有屬性的名稱集合

String getCharacterEncoding()

用于返回一個 String,它包含請求正文中所使用的字符編碼

int getContentLength()

用于返回請求正文的長度(字節(jié)數(shù)),如果不確定,返回 -1

String getContenType()

得到請求體的 MIME 類型

ServletlnputStream getInputStream()

用于返回請求的輸入流,用來顯示請求中的數(shù)據(jù)

String getParameter(String name)

用于獲取客戶端傳送給服務(wù)器端的參數(shù)。主要由 name 指定,通常是表單中的參數(shù)

Enumeration getParameterNames()

用于獲取客戶端傳送的所有參數(shù)的名字集合

String getParameterValues(String name)

用于獲得指定參數(shù)的所有值,由 name 指定

String getProtocol()

用于返回客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱

String getMethod()

用于獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的參數(shù)方法,主要有兩個,分別是 get() 和 post()

String getServerName()

用于獲得服務(wù)器端的主機名字

int getServletPath()

用于獲得 JSP 文件相對于根地址的地址

String getRemoteAddr()

用于獲得客戶端的網(wǎng)絡(luò)地址

String getRemoteHost()

用于獲取發(fā)送此請求的客戶端主機名

String getRealPath(String path)

用于獲取一虛擬路徑的真實路徑

cookie[] get Cookie()

用于獲取所有的 Cookie 對象

void setAttribute(String key,Object obj)

設(shè)置屬性的屬性值

boolean isSecure()

返回布爾類型的值,用于確定這個請求是否使用了一個安全協(xié)議,如 HTTP

boolean isRequestedSessionldPromCookie()

返回布爾類型的值,表示會話是否使用了一個 Cookie 來管理會話 ID

boolean isRequestedSessionIdFromURL()

返回布爾類型的值,表示會話是否使用了一個URL來管理會話ID

boolean isRequestedSessionldFromVoid()

檢查請求的會話 ID 是否合法

獲取客戶信息

request 對象就是利用表 1 列舉的那些 get 方法,來獲取客戶端的信息。

例1:應(yīng)用 request 對象獲取客戶信息,代碼如下:

<%@ page contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>
    request對象獲取客戶信息
</title>
</head>
<body>
客戶提交信息的方式:<%=request.getMethod() %> <br/>
使用的協(xié)議:<%=request.getProtocol() %> <br/>
獲取提交數(shù)據(jù)的客戶端IP地址:<%=request.getRemoteAddr() %> <br/>
獲取服務(wù)器端的名稱:<%=request.getServerName() %> <br/>
獲取服務(wù)器端口號:<%=request.getServerPort() %> <br/>
獲取客戶端的機器名稱:<%=request.getRemoteHost() %> <br/>
</body>
</html>

送行結(jié)果如圖 1 所示。

圖1 應(yīng)用request對象獲取客戶信息

獲取請求參數(shù)

用戶借助表單向服務(wù)器提交數(shù)據(jù),完成用戶與網(wǎng)站之間的交互,大多數(shù) Web 應(yīng)用程序都是這樣的。表單中包含文本框、列表、按鈕等輸入標(biāo)記。當(dāng)用戶在表單中輸入信息后,單擊 Submit 按鈕提交給服務(wù)器處理。

用戶提交的表單數(shù)據(jù)存放在 request 對象里,通常在 JSP 代碼中用 getParameter() 或者 getParameterValues() 方法來獲取表單傳送過來的數(shù)據(jù),前者用于獲取單值,如文本框、按鈕等;后者用于獲取數(shù)組,如復(fù)選框或者多選列表項。使用格式如下:

String getParameter(String name);
String[] getParameterValues(String name);

以上兩種方法的參數(shù) name 與 HTML 標(biāo)記的 name 屬性對應(yīng),如果不存在,則返回 null。

另外要注意的是,利用 request 的方法獲取表單數(shù)據(jù)時,默認(rèn)情況下,字符編碼為 ISO-8859-1,所以,當(dāng)獲取客戶提交的漢字字符時,會出現(xiàn)亂碼問題,必須進行特殊處理。

首先,將獲取的字符串用 ISO-8859-1 進行編碼,并將編碼存放到一個字節(jié)數(shù)組中,然后再將這個數(shù)組轉(zhuǎn)化為字符串對象即可,這種方法僅適用于處理表單提交的單值數(shù)據(jù)或者查詢字符串中所傳遞的參數(shù)。關(guān)鍵代碼如下:

String s1=request.getParameter("UserName");
byte tempB[]=s1.getByte("ISO-8859-1");
String s1=new String(tempB);

在處理中文字符亂碼問題時,下面設(shè)置編碼格式的語句在獲取表單提交的單值或者數(shù)組數(shù)據(jù)時都更為常用:

<%
request.setCharacterEncoding("GBK");    //設(shè)置編碼格式為中文編碼,或者utf-8
%>

例2:應(yīng)用 request 對象獲取請求參數(shù)。在 3-5.jsp 頁面中,利用表單向 3-5-1.jsp 頁面提交用戶的注冊信息,包括用戶名、密碼和愛好。

3-5.jsp 的代碼如下:

<%@ page contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>
    request對象獲取請求參數(shù)
</title>
</head>
<body>
<h2> 個人注冊 </h2>
<form name="form1" method="post" action="3-5-1.jsp">
用戶名:<input name="username" type="text"/> <br>
密&nbsp;&nbsp;&nbsp;碼:<input name="pwd" type="text" /> <br>
<input name="inst" type="checkbox" value="音樂">音樂
<input name="inst" type="checkbox" value="舞蹈">舞蹈
<input name="inst" type="checkbox" value="讀書">讀書
<input name="inst" type="checkbox" value="游泳">游泳 <br>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</form>
</body>
</html>

3-5-1.jsp 的代碼如下:

<%@ page contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>
    request對象獲請求參數(shù)
</title>
</head>
<body>
<h2> 獲取到的注冊信息如下:</h2>
<%
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");
String inst[]=request.getParameterValues("inst");
out.println("用戶名為:"+username+"<br>");
out.println("密碼為:"+pwd+"<br>");
out.println("愛好為:");
for(int i=0;i<inst.length;i++)
   out.println(inst[i]+" ");
%>
</body>
</html>

3-5.jsp 運行結(jié)果如圖 2(a) 所示。程序 3-5.jsp 通過表單向 3-5-l.jsp 提交信息,3-5-l.jsp 通過 request 對象獲取用戶提交的表單數(shù)據(jù)并進行處理,運行結(jié)果如圖 2(b) 所示。

a)

b)

圖2 request對象獲取請求參數(shù)

獲取查詢字符串

為了在網(wǎng)頁之間傳遞值,常常在請求的 URL 地址后面附加查詢字符串,語法如下:

?變量名1=值1&變量名2=值2...

可以有多個變量參數(shù),參數(shù)之間使用 & 來連接,變量的值可以是 JSP 表達(dá)式。利用 request getParameter() 方法獲取查詢字符串中的所有變量及其值。

例3:應(yīng)用 request 對象獲取查詢字符串,實現(xiàn)頁面之間傳值的目的。在 3-6.jsp 頁面中設(shè)置要傳遞的數(shù)據(jù),當(dāng)單擊“顯示”肘,超鏈接到 3-6-1.jsp 頁面,并將所傳遞的信息顯示出來。

3-6.jsp 的代碼如下:

<%@ page contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>
request對象獲取查詢字符串
</title>
</head>
<body>
<%
String address="北京";
String college="清華大學(xué)";
%>
<h4>請單擊下面的鏈接查看我的相關(guān)信息</h4>
<a href="3-6-1.jsp?name=白淺&add=<%=address%>&col=<%=college%>">顯示</a>
</body>
</html>

3-6-1.jsp 的代碼如下:

<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>
    request對象獲取查詢字符串
</title>
</head>
<body>
<%
String m_name=request.getParameter("name");
String m_add=request.getParameter("add");
String m_col=request.getParameter("col");
//處理中文亂碼
String ch_name=new String(m_name.getBytes("ISO-8859-1"),"utf-8");
String ch_add=new String(m_add.getBytes("ISO-8859-1"),"utf-8");
String ch_col=new String(m_col.getBytes("ISO-8859-1"),"utf-8");
%>
<%out.println(ch_name+"您好");%><br>
<%out.println("您來自中國"+ch_add);%><br>
<%out.println("畢業(yè)于"+ch_col);%><br>
</body>
</html>

運行結(jié)果分別如圖 3(a) 和 (b) 所示。

(a)

(b)

圖3 request對象獲取查詢字符串

在作用域中管理屬性

在進行請求轉(zhuǎn)發(fā)時,往往需要把一些數(shù)據(jù)帶到轉(zhuǎn)發(fā)后的頁面進行處理。這時,就可以使用 request 對象的 setAttribute() 方法設(shè)置數(shù)據(jù)在 request 范圍內(nèi)存取。

1. 設(shè)置轉(zhuǎn)發(fā)數(shù)據(jù)的格式

request.setAttribute("key",value);

參數(shù) key 是鍵,為 String 類型。在轉(zhuǎn)發(fā)后的貢面就通過這個鍵來獲取數(shù)據(jù)。參數(shù) value 是鍵值,為 Object 類型,它代表需要保存在 request 范圍內(nèi)的數(shù)據(jù)。

2. 獲取轉(zhuǎn)發(fā)數(shù)據(jù)的格式

request.getAttribute("key");

參數(shù) key 表示鍵名,如果指定的屬性值不存在,則返回一個 null 值。

在頁面使用 request 對象的 setAttribute(“key”,value) 方法,可以把數(shù)據(jù) value 設(shè)定在 request 范圍內(nèi)。請求轉(zhuǎn)發(fā)后的頁面使用 getAttribute(“key”) 就可以取得數(shù)據(jù) value。

提示:

這一對方法在不同的請求之間傳遞數(shù)據(jù),而且從上一個請求到下一個請求必須是轉(zhuǎn)發(fā)請求(使用 動作來實現(xiàn)),即保存的屬性在 request 屬性范圍(request scope)內(nèi),而不能是重定向請求(使用 response.sendRedirect() 或者超級鏈接來實現(xiàn))。

例4:通過 request 對象在作用域中管理屬性。使用 request 對象的 setAttribute() 方法設(shè)置數(shù)據(jù),然后在請求轉(zhuǎn)發(fā)后利用 getAttribnte() 取得設(shè)置的數(shù)據(jù)。代碼如下:

<!--3-7.jsp-->
<%@ page contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>
request對象在作用域中管理屬性
</title>
</head>
<body>
<% request.setAttribute("str","歡迎學(xué)習(xí)request對象的使用方法!"); %>
<jsp:forward page="3-7-1.jsp"/>
</body>
</html>
<!--3-7-1.jsp-->
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>
    request對象在作用域中管理屬性
</title>
</head>
<body>
<% out.println("頁面轉(zhuǎn)發(fā)后獲取的屬性值:"+request.getAttribute("str")); %>
</body>
</html>

運行結(jié)果如圖 4 所示。

運行結(jié)果如圖 4 所示。

提示:

在 3-7.jsp 中,若將語句<jsp:forward page="3-7-1.jsp"/>改成response.sendRedirect("3-7.jsp")或者<a href="3-7-1.jsp">跳轉(zhuǎn)</a>,就不能獲得 request 范圍內(nèi)的屬性值。

獲取 Cookie

Cookie 是一小段文本信息,伴隨著用戶請求和頁面在 Web 服務(wù)器和瀏覽器之間傳遞。Cookie 常常用來保存用戶信息,以便 Web 應(yīng)用程序能進行讀取,并且當(dāng)用戶每次訪問站點時,Web 應(yīng)用程序都可以讀取 Cookie 包含的信息。

例如,當(dāng)用戶訪問站點時,可以利用 Cookie 保存用戶首選項或其他信息,這樣,當(dāng)用戶再次訪問站點時,應(yīng)用程序就可以撿索以前保存的信息。

1.通過 request 對象的 getCookies() 方法獲取 Cookie 中的數(shù)據(jù)。獲取 Cookie 的方法如下:

Cookie[] cookie=request.getCookies();

request 對象的 getCookies() 方法返回的是 Cookie[] 數(shù)組。

2.通過 response 對象的 addCookie() 方法添加一個 Cookie 對象。添加 Cookie 的方法如下:

response.addCookie(Cookie cookie)

例5:通過 request 對象獲取 Cookie。使用 request 對象的 get () 方法和 response 對象的 addCookie() 方法,記錄本次及上次訪問網(wǎng)頁的時間,代碼如下:

<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>
    request對象獲取Cookie
</title>
</head>
<body>
<%
    Cookie[] cookies=request.getCookies();   //從request中獲得Cookie集
    Cookie cookies_response=null;         //初始化Cookie對象為空
    String t=new java.util.Date().toLocaleString();   //取得當(dāng)前訪問時間
    if(cookies==null)
    {
          cookies_response=new Cookie("AccessTime"," ");
          out.println("您第一次訪問,本次訪問時間:"+t+"<br>");
          cookies_response.setValue(t);
          response.addCookie(cookies_response);
    }
    else
    {
          cookies_response=cookies[0];
          out.println("本次訪問時間:"+t+"<br>");
        out.println("上一次訪問時間:"+cookies_response.getValue());
        cookies_response.setValue(t);
        response.addCookie(cookies_response);
    }
%>
</body>
</html>

結(jié)果如圖 5 所示。

圖5 request 對象獲取 Cookie

訪問安全信息

request 對象提供了訪問安全屬性的方法,主要包括以下 4 種。

1. isSecure()。

2. isRequestedSessionldFromCookie()。

3. isRequestedSessionldFromURL()。

4. isRequestedSessionldFromValid()。

例如,可使用 request 對象來確定當(dāng)前請求是否使用了一個類似 HTTP 的安全協(xié)議:用戶安全信息:<%=reguest,isSecure() %>

訪問國際化信息

很多 Web 應(yīng)用程序都能夠根據(jù)客戶瀏覽器的設(shè)置做出國際化響應(yīng),這是因為瀏覽器會通過 accept-language 的 HTTP 報頭向 Web 服務(wù)器指明它所使用的本地語言,JSP 開發(fā)人員就可以利用 request 對象中的 getLocale() 和 getLocales() 方法獲取這一信息,獲取的信息屬于 Java.util.Local 類型。

使用報頭的具體代碼如下:

<%
java.util.Local locale=request.getLocale();
if(locale.equals(java.util.Locale.US))
{
out.print("Welcome to Beijing");
}
if(locale.equals(java.util.Local.CHINA))
{
out.print("北京歡迎您");
}
%>

上述代碼表示,如果所在區(qū)域為中國,將顯示“北京歡迎您”,而所在區(qū)域為英國,則顯示“Welcome to Beijing”。

全部教程
主站蜘蛛池模板: 欧美久久天天综合香蕉伊 | 性欧美videofree另类 | 91久久精品国产91性色tv | 午夜体验| 三级黄色片免费观看 | 性美国xxxxx| 成年性视频bbixx | 精品91自产拍在线观看一区 | 97狠狠操| 免费在线色视频 | 色综合色 | 欧美一级爽快片淫片高清在线观看 | 日韩欧美一区二区三区中文精品 | 天天爽夜夜 | 日本高清一区二区三区不卡免费 | 国产午夜影院 | 日本午夜视频在线 | 日日摸夜夜添欧美一区 | 中国一级特黄真人毛片 | 久久综合狠狠综合久久97色 | 国产欧美日韩精品第一区 | 日本韩国三级在线 | 国产色啪午夜免费视频 | 午夜黄网站 | 国产亚洲精品自在线亚洲情侣 | 日韩理论在线播放 | 国产成人精彩在线视频50 | 一级特黄国产高清毛片97看片 | 亚洲图片欧洲图片aⅴ | 久久综合五月开心婷婷深深爱 | 日本资源在线 | 久久成人国产精品免费 | 97国产大学生情侣11在线视频 | 成人手机在线观看 | 99超级碰碰成人香蕉网 | 日韩专区亚洲综合久久 | 91久久精品国产一区二区 | 黄色午夜| 久久精品国产欧美成人 | 天天综合网天天综合色 | 午夜涩涩 |