JSP request对象详解

request是HttpServletRequest类的实例。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。

方法

1. string getProtocol()  //返回请求用的协议类型及版本号

request.getProtocol() 输出:HTTP/1.1

2. getServletConfig().getServletContext().getServerInfo()   //服务器信息

输出:JavaServer Web Dev Kit/1.0 EA (JSP 1.0; Servlet 2.1; Java 1.2; Windows NT 5.0 x86; java.vendor=Sun Microsystems Inc.)

3. String getRemoteAddr() 返回发送此请求的客户端IP地址 

request.getRemoteAddr()  输出:192.168.0.106

4. String getRemoteHost() 返回发送此请求的客户端主机名 

5. String getCharacterEncoding() 返回字符编码方式

request.getCharacterEncoding()  输出:GB2312

6. int getContentLength() 返回请求体的长度(以字节数)
7. String getContentType() 得到请求体的MIME类型 8. string getAuthType()  获取Authorization头

request.getContentType()  输出:basic或者digest

9. string getMethod()  获取请求类型

输出:通常是GET或者POST。但偶尔也会出现HEAD,PUT, Delete,OPTIONS,或者 TRACE.

10. string getPathInfo() 获取URL中的附加路径信息

输出:URL中Servlet路径之后、查询字符串之前的那部分。

11. string getPathTranslated()  映射到服务器实际路径之后的路径信息  

12. string getQueryString()   这是字符串形式的附加到URL后面的查询字符串,数据仍旧是URL编码的。  

13. string getRemoteUser()  如果提供了Authorization头,则代表其用户部分。它代表发出请求的用户的名字。 

14. string getRequestedSessionId()   输出SessionId 

15. string getRequestURI()   请求URL 

16. string getServletPath()   URL中调用Servlet的那一部分,不包含附加路径信息和查询字符串 

17. string getHeader()  获取请求头部信息

getHeader("Accept") //访问Accept的HTTP头。
getHeader("Host")  //输出:192.168.0.1:8080

18. String getServerName() 返回接受请求的服务器主机名

request.getServerName()  输出:192.168.0.1

19. int getServerPort() 返回服务器接受此请求所用的端口号 

request.getServerPort()  输出:8080

20. ServletInputStream getInputStream() 得到请求体中一行的二进制流

21. String getScheme() 返回请求用的计划名,如:http.https及ftp等 

22. BufferedReader getReader() 返回解码过了的请求体

23. void setAttribute(String key,Object obj) 设置属性的属性值

24. String getRealPath(String path) 返回一虚拟路径的真实路径

25. String getParameter(String name) 返回name指定参数的参数值

26. Enumeration getParameterNames() 返回可用参数名的枚举

27. String[] getParameterValues(String name) 返回包含参数name的所有值的数组

例子

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> 
<%@ page import="java.util.*" %> 
<htm> 
<head> 
</head>
<body> 
客户使用的协议是: 
<% 
    String strProtocol = request.getProtocol(); 
    out.print(strProtocol); 
%> 
<br/> 
获取客户提交信息的页面: 
<% 
    String strPath = request.getServletPath(); 
    out.print(strPath); 
%> 
<br/> 
接受客户提交信息的长度 
<% 
    int intLength = request.getContentLength(); 
    out.print(intLength); 
%> 
<br/> 
客户提交信息的方式: 
<% 
    String strMethod = request.getMethod(); 
    out.print(strMethod); 
%> 
<br/> 
获取HTTP头文件中User-agent的值 
<% 
    String strUserAgent = request.getHeader("User-Agent"); 
    out.print(strUserAgent); 
%> 
<br/> 
获取HTTP头文件中的accept值 
<% 
    String strAccept = request.getHeader("accept"); 
    out.print(strAccept); 
%> 
<br/> 
获取HTTP头的Host的值 
<% 
    String strHost = request.getHeader("Host"); 
    out.print(strHost); 
%> 
<br/> 
获取HTTP头文件中accept-encoding的值 
<% 
    String strAcceptEncoding = request.getHeader("accept-encoding"); 
    out.print(strAcceptEncoding); 
%> 
<br/> 
获取客户的IP地址 
<% 
    String strIP = request.getRemoteAddr(); 
    out.print(strIP); 
%> 
<br/> 
获取客户机的名称 
<% 
    String strClientName = request.getRemoteHost(); 
    out.print(strClientName); 
%> 
<br/> 
获得服务器的名称 
<% 
    String strServerName = request.getServerName(); 
    out.print(strServerName); 
%> 
<br/> 
获得服务器端口号 
<% 
    int strServerPort = request.getServerPort(); 
    out.print(strServerPort); 
%> 
<br/> 
获取客户端提交的所有参数名字:<br/> 
<% 
    Enumeration<String> enumer = request.getParameterNames(); 
    while(enumer.hasMoreElements()) 
    { 
        String s = (String) enumer.nextElement(); 
        out.print(s); 
        out.print("<br/>"); 
    } 
%> 
<br/> 
获取头名字的一个枚举:<br/> 
<% 
    Enumeration<String> enumHead = request.getHeaderNames(); 
    while(enumHead.hasMoreElements()) 
    { 
        String s = (String) enumHead.nextElement(); 
        out.print(s); 
        out.print("<br/>"); 
    } 
%> 
<br/> 
获取头文件中指定头名字的全部值的一个枚举<br/> 
<% 
    Enumeration<String> enumCookies = request.getHeaders("cookie"); 
    while(enumCookies.hasMoreElements()) 
    { 
        String s = (String)enumCookies.nextElement(); 
        out.print(s); 
        out.print("<br/>"); 
    } 
%> 
<br/> 
</body> 
</html>

执行结果:

客户使用的协议是: HTTP/1.1 
获取客户提交信息的页面: /request.jsp 
接受客户提交信息的长度 -1 
客户提交信息的方式: GET 
获取HTTP头文件中User-agent的值 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3) 
获取HTTP头文件中的accept值 */* 
获取HTTP头的Host的值 localhost:8080 
获取HTTP头文件中accept-encoding的值 gzip, deflate 
获取客户的IP地址 127.0.0.1 
获取客户机的名称 127.0.0.1 
获得服务器的名称 localhost 
获得服务器端口号 8080 
获取客户端提交的所有参数名字: 
获取头名字的一个枚举: 
accept 
accept-language 
ua-cpu 
accept-encoding 
user-agent 
host 
connection 
cookie 
获取头文件中指定头名字的全部值的一个枚举 
Theme=blue; LastCookie=CookieLastOptID=1; JSESSIONID=B8D823A3675689F8DBFD85F60F42F3A6

总结

1. request为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的<FORM>段中的HTML控件的值。也提供使用Secure Socket Layer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。

2. request可以理解为客户端向服务器请求的信息,就是客户端向服务器请求时,把自己的浏览器信息、HTTP变量和保存在客户端的Cookie告诉服务器,这样服务器就可以根据这些信息判断是谁请求的,之前有没有请求过,对应客户端的Session是什么等等。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。