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
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原创文章,未经本站允许不得转载。