5.2 request对象
request对象提供了对在客户请求中给出的信息的访问。Java服务器小程序容器将这些信息打包在一个对象中,该对象具有与协议有关的javax.servlet.ServletRequest的子类型。对于我们的目的,协议是HTTP,因此默认对象是javax.servlet.HttpServletRequest类型。其主要用于接受客户端通过http协议连接传输到服务器端的数据。它具有请求作用域,这意味着服务器小程序容器在请求时创建它,在请求完成时撤消它。
Request隐含变量是生成的服务器小程序的_jspService方法的一个形参。下面一段代码是从Tomcat JSP容器所生成的服务器小程序中提取的,它显不了这个参数:
//Request隐含对象是一个形参
Public void_jspservice(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
用户在使用request变量时,会通过它所引用的HttpServletRequest对象向JavaServer Pages提供了以下类型的服务:
在HttpServletRequest对象包含了从当前JSP页的URL查询字符串得到的信息,可能还包从HTML表单传递来的URL数据信息。为方便学习首先我们了解request对象的常用的几种方法,如表5-2所示。
表 5-2 request对象常用方法
|
方法特征 |
用法 |
|
getCookies() |
返回客户端的cookie对象,结果是一个cookie数组 |
|
public HttpSession getSession(boolean create) |
取得会话对象,如果还没有会话实例,则创建新的 |
|
getHeader(String name) |
获得http协议定义的传送文件头信息,如:request.getHeader(“User-Agent”)返回客户端浏览器的版本号、类型 |
|
getAttribute(String name) |
返回name指定的属性值,若不存在指定的属性,就返回空值(null) |
|
getattributeNames() |
返回request对象所有属性的名字,结果集是一个Enumeration(枚举)类的实例 |
|
getHeaderNames() |
返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例 |
|
getHeaders(String name) |
返回指定名字的request header的所有值,结果集是一个Enumeration(枚举)类的实例 |
|
getMethod() |
获得客户端向服务器端传送数据的方法有GET、POST、PUT等类型 |
|
getParameter(String name) |
获得客户端传送给服务器端的参数值,该参数由name指定 |
|
getparameterNames() |
获得客户端传送给服务器端的所有的参数名,结果集是一个Enumeration(枚举)类的实例 |
|
getParameterValues(String name) |
获得指定参数所有值 |
|
getQueryString() |
获得查询字符串,该串由客户端以GET方法向服务器端传送 |
|
getRequestURI() |
获得发出请求字符串的客户端地址 |
|
getServletPath() |
获得客户端所请求的脚本文件的文件路径 |
|
setAttribute(String name,Java.lang.Object o) |
设定名字为name的request参数值,该值由Object类型的o指定 |
|
getServerName() |
获得服务器的名字 |
|
getServerPort() |
获得服务器的端口号 |
|
getRemoteAddr() |
获得客户端的IP地址 |
|
getRemoteHost() |
获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址 |
|
getProtocol() |
获取客户端向服务器端传送数据所依据的协议名称,如http/1.1 |