分享

4.9 JSP的内置对象 - request对象 - AJava

 西门独孤 2011-02-13

4.9  request对象

request对象可以获得客户端的输入信息。request对象包括了从客户端传来的请求信息。在HTTP 1.1协议中,客户端请求信息是从客户端通过HTTP头(HTTP Header)和消息体传送到服务器端的。

请求的参数是一个请求的组成部分,它们被作为字符串从客户端传送到JSP/Servlet容器,并被用于初始化request对象。

request对象的基类是javax.servlet.http.HttpServletRequest接口,它可用的主要方法如下所示。

1)getCookies()

该方法返回客户端的Cookie对象数组,这些Cookie对象是javax.servlet.http.Cookie类的实例对象。

2)getHeader(String name)

该方法可以获得HTTP协议所定义的特定HTTP文件头的信息。该方法的参数name可以是HTTP文件头的名字,如User-Agent。

3)getAttribute(String name)

该方 法返回参数name所指定的属性值,如果不存在那个属性,则返回null值。这些属性被绑定在当前的HTTP请求对象(request)上。如果我们需要 将某个属性绑定在request对象上,可以使用setAttribute()方法。请参考setAttribute()方法的介绍。

4)getAttributeNames()

使用 getAttributeNames()方法可以返回和当前request对象所绑定的每一个属性的名字。返回值是一个枚举对象 (Enumeration),使用getAttributeNames()方法和getAttribute()方法可以获得所有和当前request对象 绑定的属性值和名称。它的使用方法如下所示:

<%

    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()方法可以获得当前request对象中包含的每一个HTTP Header的名字,这也是一个枚举对象(Enumerration)。

6)getHeader(String name)

该方法返回指定名字的HTTP Header的值,比如调用request.getHeader("User-Agent")将返回客户端所用浏览器的名称、版本号、操作系统平台类型等信息。

7)getMethod()

该方法可以获得客户端向服务器端传送数据的方式,可能的值有GET、POST或者PUT等方式。

8)getParameter(String name)

可以获得客户端传送给服务器端的参数值,该参数的名称是name。

9)getParameterNames()

该方法可以获得客户端传送给服务器端的所有的参数名字。这个方法的返回值是一个枚举对象(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)

使用这个方法可以获得由客户端向服务器端传送 的指定参数的所有值。因为同一个参数可能被赋多个值,如果使用getParameter()方法,那么仅会获得该参数的第一个值,后面的值都被忽略了。但 是使用getParameterValues()方法,就可以获取赋给指定参数的所有值,这个方法的返回类型是字符串数组。它的使用方法如下所示:

<%

       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()

这个方法可以获得请求字符串,该字符串由客户端以GET方式向服务器端传送。读者可能会问,什么是请求字符串?我们留心观察一下浏览器的地址栏,有时候URL的后面跟了一个问号,问号的后面是一列字符串,这一列字符串就是所谓的请求字符串。例如下面的URL:

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

其中username=george&password=george就是请求字符串。

12)getRequestURI()

getRequestURI()方法可以获得和当前request对象相应的URL地址,也就是客户端通过浏览器所请求的URI地址。

13)getServletPath()

该方法可以获得客户端所请求的服务器端程序的文件路径。

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

该方 法可以将某个参数和它的值与当前的request对象绑定起来,利用这个方法,我们可以在两个不同的网页之间通过此request对象传递信息,这个方法 应该和getAttribute()方法协同使用。首先在第一个网页中调用setAttribute()方法,设定被绑定的参数的名称和它的值,然后重定 向到第二个JSP程序,接着在后者中调用getAttribute()方法,获得相应参数的值。这个方法的参数——name代表参数的名称,obj代表和 参数名对应的参数值,这是一个java.lang.Object类型的对象。

15)getServerName()

该方法可以获取服务器的名称。

16)getServerPort()

该方法可以获取服务器提供HTTP服务的端口号,默认值一般是80。

17)getRemoteAddr()

该方法用于获得发送HTTP请求的客户端地址。利用这个方法,我们可以屏蔽来自某些IP地址的访问。

18)getRemoteHost()

该方法可以获取当前HTTP连接的客户端的计算机名称,这个方法一般不可能真的取得客户端电脑的名字,这时,它将会返回客户端电脑的IP地址,这和getRemoteAddr()方法的作用一样。

19)getProtocol()

该方法可以获取客户端向服务器端通信所依据的协议名称。

javax.servlet.http.HttpServletRequest接口继承自javax.servlet.Servlet Request接口,因此request对象也可以使用ServletRequest接口的方法。

在程序4-16中,演示了如何使用request对象的各种方法去获取当前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>

执行结果如图4-15所示。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多