小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

4.9 JSP的內(nèi)置對(duì)象 - request對(duì)象 - AJava

 西門獨(dú)孤 2011-02-13

4.9  request對(duì)象

request對(duì)象可以獲得客戶端的輸入信息。request對(duì)象包括了從客戶端傳來的請(qǐng)求信息。在HTTP 1.1協(xié)議中,客戶端請(qǐng)求信息是從客戶端通過HTTP頭(HTTP Header)和消息體傳送到服務(wù)器端的。

請(qǐng)求的參數(shù)是一個(gè)請(qǐng)求的組成部分,它們被作為字符串從客戶端傳送到JSP/Servlet容器,并被用于初始化request對(duì)象。

request對(duì)象的基類是javax.servlet.http.HttpServletRequest接口,它可用的主要方法如下所示。

1)getCookies()

該方法返回客戶端的Cookie對(duì)象數(shù)組,這些Cookie對(duì)象是javax.servlet.http.Cookie類的實(shí)例對(duì)象。

2)getHeader(String name)

該方法可以獲得HTTP協(xié)議所定義的特定HTTP文件頭的信息。該方法的參數(shù)name可以是HTTP文件頭的名字,如User-Agent。

3)getAttribute(String name)

該方 法返回參數(shù)name所指定的屬性值,如果不存在那個(gè)屬性,則返回null值。這些屬性被綁定在當(dāng)前的HTTP請(qǐng)求對(duì)象(request)上。如果我們需要 將某個(gè)屬性綁定在request對(duì)象上,可以使用setAttribute()方法。請(qǐng)參考setAttribute()方法的介紹。

4)getAttributeNames()

使用 getAttributeNames()方法可以返回和當(dāng)前request對(duì)象所綁定的每一個(gè)屬性的名字。返回值是一個(gè)枚舉對(duì)象 (Enumeration),使用getAttributeNames()方法和getAttribute()方法可以獲得所有和當(dāng)前request對(duì)象 綁定的屬性值和名稱。它的使用方法如下所示:

<%

    Enumeration enum=request. getAttributeNames();

    while(enum.hasMoreElements())

    {

        String attributeName=(String)enum.nextElement();

        out.println(“Attribut Name-->”+attributeName+”<br>”);

        String attributeValue=

             (String)request.getAttribute(attributeName);

        out.println(“Attribut Value-->”+attributeName+”<br>”);

    }

%>

5)getHeaderNames()

使用getHeaderNames()方法可以獲得當(dāng)前request對(duì)象中包含的每一個(gè)HTTP Header的名字,這也是一個(gè)枚舉對(duì)象(Enumerration)。

6)getHeader(String name)

該方法返回指定名字的HTTP Header的值,比如調(diào)用request.getHeader("User-Agent")將返回客戶端所用瀏覽器的名稱、版本號(hào)、操作系統(tǒng)平臺(tái)類型等信息。

7)getMethod()

該方法可以獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方式,可能的值有GET、POST或者PUT等方式。

8)getParameter(String name)

可以獲得客戶端傳送給服務(wù)器端的參數(shù)值,該參數(shù)的名稱是name。

9)getParameterNames()

該方法可以獲得客戶端傳送給服務(wù)器端的所有的參數(shù)名字。這個(gè)方法的返回值是一個(gè)枚舉對(duì)象(Enumeration),它的使用方法如下所示:

<%

    Enumeration enum=request. getParameterNames ();

    while(enum.hasMoreElements())

    {

        String parameterName=(String)enum.nextElement();

        out.println(“Parameter Name-->”+ parameterName +”<br>”);

        String parameterValue=

             (String)request.getAttribute(parameterValue);

        out.println(“ParameterValue-->”+ parameterValue +”<br>”);

    }

%>

10)getParameterValues(String name)

使用這個(gè)方法可以獲得由客戶端向服務(wù)器端傳送 的指定參數(shù)的所有值。因?yàn)橥粋€(gè)參數(shù)可能被賦多個(gè)值,如果使用getParameter()方法,那么僅會(huì)獲得該參數(shù)的第一個(gè)值,后面的值都被忽略了。但 是使用getParameterValues()方法,就可以獲取賦給指定參數(shù)的所有值,這個(gè)方法的返回類型是字符串?dāng)?shù)組。它的使用方法如下所示:

<%

       String []tempArray=request.getParameterValues(“friends”);

       List paraList=tempArray.asList();

 

       for(int i=0, i<paraList.size(); i++)

       {

            out.println(“friends: ”+i+”-->”+(String)paraList.get(i)+”<br>”);

       }

%>

或:

<%

       String []tempArray=request.getParameterValues(“friends”);

 

       for(int i=0, i< tempArray.length; i++)

       {

            out.println(“friends: ”+i+”-->”+ tempArray [i]+”<br>”);

       }

%>

11)getQueryString()

這個(gè)方法可以獲得請(qǐng)求字符串,該字符串由客戶端以GET方式向服務(wù)器端傳送。讀者可能會(huì)問,什么是請(qǐng)求字符串?我們留心觀察一下瀏覽器的地址欄,有時(shí)候URL的后面跟了一個(gè)問號(hào),問號(hào)的后面是一列字符串,這一列字符串就是所謂的請(qǐng)求字符串。例如下面的URL:

http://127.0.0.1:8080/login.jsp?username=george&password=george

其中username=george&password=george就是請(qǐng)求字符串。

12)getRequestURI()

getRequestURI()方法可以獲得和當(dāng)前request對(duì)象相應(yīng)的URL地址,也就是客戶端通過瀏覽器所請(qǐng)求的URI地址。

13)getServletPath()

該方法可以獲得客戶端所請(qǐng)求的服務(wù)器端程序的文件路徑。

14)setAttribute(String name, Java.lang.Object obj)

該方 法可以將某個(gè)參數(shù)和它的值與當(dāng)前的request對(duì)象綁定起來,利用這個(gè)方法,我們可以在兩個(gè)不同的網(wǎng)頁之間通過此request對(duì)象傳遞信息,這個(gè)方法 應(yīng)該和getAttribute()方法協(xié)同使用。首先在第一個(gè)網(wǎng)頁中調(diào)用setAttribute()方法,設(shè)定被綁定的參數(shù)的名稱和它的值,然后重定 向到第二個(gè)JSP程序,接著在后者中調(diào)用getAttribute()方法,獲得相應(yīng)參數(shù)的值。這個(gè)方法的參數(shù)——name代表參數(shù)的名稱,obj代表和 參數(shù)名對(duì)應(yīng)的參數(shù)值,這是一個(gè)java.lang.Object類型的對(duì)象。

15)getServerName()

該方法可以獲取服務(wù)器的名稱。

16)getServerPort()

該方法可以獲取服務(wù)器提供HTTP服務(wù)的端口號(hào),默認(rèn)值一般是80。

17)getRemoteAddr()

該方法用于獲得發(fā)送HTTP請(qǐng)求的客戶端地址。利用這個(gè)方法,我們可以屏蔽來自某些IP地址的訪問。

18)getRemoteHost()

該方法可以獲取當(dāng)前HTTP連接的客戶端的計(jì)算機(jī)名稱,這個(gè)方法一般不可能真的取得客戶端電腦的名字,這時(shí),它將會(huì)返回客戶端電腦的IP地址,這和getRemoteAddr()方法的作用一樣。

19)getProtocol()

該方法可以獲取客戶端向服務(wù)器端通信所依據(jù)的協(xié)議名稱。

javax.servlet.http.HttpServletRequest接口繼承自javax.servlet.Servlet Request接口,因此request對(duì)象也可以使用ServletRequest接口的方法。

在程序4-16中,演示了如何使用request對(duì)象的各種方法去獲取當(dāng)前HTTP連接的信息。

【程序4-16】snoop.jsp

01        <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

02        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

03        <html>

04        <body bgcolor="white">

05            <h1>

06                Request Information

07            </h1>

08         

09            <font size=”4”>

10            JSP Request Method: <%out.println(request.getMethod()); %>

11            <br>

12            Request URI: <%out.println(request.getRequestURI()); %>

13            <br>

14            Request Protocol: <%out.println(request. getProtocol()); %>

15            <br>

16            Servlet path: <%out.println(request.getServletPath ()); %>

17            <br>

18            Path info: <%out.println(request.getPathInfo()); %>

19            <br>

20            Path translated: <%out.println(request.getPathTranslated()); %>

21            <br>

22            Query string: <%out.println(request.getQueryString()); %>

23            <br>

24            Content length: <%out.println(request.getContentLength()); %>

25            <br>

26            Content type: <%out.println(request.getContentType()); %>

27            <br>

28            Server name: <%out.println(request.getServerName()); %>

29            <br>

30            Server port: <%out.println(request.getServerPort()); %>

31            <br>

32            Remote user: <%out.println(request.getRemoteUser()); %>

33            <br>

34            Remote address: <%out.println(request.getRemoteAddr()); %>

35            <br>

36            Remote host: <%out.println(request.getRemoteHost()); %>

37            <br>

38            Authorization scheme: <%out.println(request.getAuthType()); %>

39            <hr>

40            The browser you are using is: <%out.println(request.getHeader

41                 (“User-Agent”)); %>

42            <hr>

43            </font>

44        </body>

45        </html>

執(zhí)行結(jié)果如圖4-15所示。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多