request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。
客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。
request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。
1 访问请求参数
在Web应用程序中,经常还需要完成用户与网站的交互。例如,当用户填写表单后,需要把数据提交给服务器处理,服务器获取到这些信息并进行处理。
request对象的getParameter()方法,可以用来获取用户提交的数据。访问请求参数的方法如下:
String userName = request.getParameter("name");
参数name与HTML标记name属性对应,如果参数值不存在,则返回一个null值,该方法的返回值为String类型。
2 在作用域中管理属性
有时,在进行请求转发时,需要把一些数据带到转发后的页面进行处理。这时,就可以使用request对象的setAttribute()方法设置数据在request范围内存取。
设置转发数据的方法使用如下:
request.setAttribute("key", Object);
参数key是键,为String类型。在转发后的页面取数据时,就通过这个键来获取数据。
参数object是键值,为Object类型,它代表需要保存在request范围内的数据。
获取转发数据的方法如下:
request.getAttribute(String name);
参数name表示键名。
在页面使用request对象的setAttribute("name",obj)方法,可以把数据obj设定在request范围内。
请求转发后的页面使用使用“getAttribute("name");”就可以取得数据obj。
使用request对象的setAttribute()方法设置数据,然后在请求转发后取得设置的数据。
3 获取Cookie
Cookie为Web应用程序保存用户相关信息提供了一种有用的方法。Cookie是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。
用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。
例如,当用户访问站点时,可以利用Cookie保存用户首选项或其他信息,这样当用户下次再访问站点时,应用程序就可以检索以前保存的信息。
在JSP中,可以通过request对象中的getCookies()方法获取Cookie中的数据。获取Cookie的方法如下:
Cookie[] cookie = request.getCookies();
request对象的getCookies()方法,返回的是Cookie[]数组。
使用request对象的addCookie()方法实现记录本次及上一次访问网页的时间。
4 获取客户信息
request对象提供了一些用来获取客户信息的方法,如下表所示:
getHeader(String name) 获得Http协议定义的文件头信息;
getHeaders(String name) 返回指定名字的request Header的所有值,其结果是一个枚举的实例;
getHeadersNames() 返回所有request Header的名字,其结果是一个枚举的实例;
getMethod() 获得客户端向服务器端传送数据的方法,如get,post,header,trace等;
getProtocol() 获得客户端向服务器端传送数据所依据的协议名称;
getRequestURI() 获得发出请求字符串的客户端地址;
getRealPath() 返回当前请求文件的绝对路径;
getRemoteAddr() 获取客户端的IP地址;
getRemoteHost() 获取客户端的机器名称;
getServerName() 获取服务器的名字;
getServerPath() 获取客户端所请求的脚本文件的文件路径;
getServerPort() 获取服务器的端口号;
5 访问安全信息
request对象提供了对安全属性的访问,如下表所示:
isSecure()返回布尔类型的值,它用于确定这个请求是否使用了一个安全协议,例如HTTPs;
isRequestedSessionIdFromCookie()返回布尔类型的值,表示会话是否使用了一个Cookie来管理会话ID;
isRequestedSessionIdFromURL()返回布尔类型的值,表示会话是否使用URL重写来管理会话ID;
isRequestedSessionIdFromValid() 检查请求的会话ID是否合法;
例如,可以通过使用request对象来确定当前请求是否使用了一个类似HTTP的安全协议:用户安全信息:<%=request.isSecure()%>
6 访问国际化信息
浏览器可以通过accept-language的HTTP报头向Web服务器指明它所使用的本地语言。
request对象中的getLocale()和getLocales()方法允许JSP开发人员获取这一信息,获取的信息属于java.util.Local类型。
java.util.Local类型的对象封装了一个国家和一种国家所使用的语言。使用这些信息,JSP开发者就可以使用语言所特有的信息作出响应。
使用这个报头的代码如下:
<%
java.util.Locale locale=request.getLocale();
if(locale.equals(java.util.Locale.US)){
out.print("Welcome to BeiJing");
}
if(locale.equals(java.util.Locale.CHINA)){
out.print("北京欢迎您");
}
%>
这段代码,如果所在区域为中国,将显示“北京欢迎您”,而所在区域为英国,则显示“Welcome to BeiJing”。