客户端可通过 HTML 表单或在网页地址后面提供参数的方法提交数据,然后通过 request 对象的相关方法来获取这些数据。request 对象封装了客户端的请求信息,包括用户提交的信息以及客户端的一些信息,服务端通过 request 对象可以了解到客户端的需求,然后做出响应。
request 对象是 HttpServletRequest(接口)的实例。请求信息的内容包括请求的标题头(Header)信息(如浏览器的版本信息语言和编码方式等),请求的方式(如 HTTP 的 GET 方法、POST 方法等),请求的参数名称、参数值和客户端的主机名称等。
request 对象提供了一些方法,主要用来处理客户端浏览器提交的请求中的各项参数和选项。表 1 列出了 request 对象常用的方法。下面介绍 request 对象的应用。
方法 | 说明 |
---|---|
Object getAttribute(String name) |
用于返回由 name 指定的属性值,如果指定的属性值不存在, 则返回一个 null 值 |
Enumeration getAttributeNames() | 用于返回 request 对象的所有属性的名称集合 |
String getCharacterEncoding() | 用于返回一个 String,它包含请求正文中所使用的字符编码 |
int getContentLength() | 用于返回请求正文的长度(字节数),如果不确定,返回 -1 |
String getContenType() | 得到请求体的 MIME 类型 |
ServletlnputStream getInputStream() | 用于返回请求的输入流,用来显示请求中的数据 |
String getParameter(String name) |
用于获取客户端传送给服务器端的参数。主要由 name 指定, 通常是表单中的参数 |
Enumeration getParameterNames() | 用于获取客户端传送的所有参数的名字集合 |
String getParameterValues(String name) | 用于获得指定参数的所有值,由 name 指定 |
String getProtocol() | 用于返回客户端向服务器端传送数据所依据的协议名称 |
String getMethod() |
用于获得客户端向服务器端传送数据的参数方法,主要有两个, 分别是 get() 和 post() |
String getServerName() | 用于获得服务器端的主机名字 |
int getServletPath() | 用于获得 JSP 文件相对于根地址的地址 |
String getRemoteAddr() | 用于获得客户端的网络地址 |
String getRemoteHost() | 用于获取发送此请求的客户端主机名 |
String getRealPath(String path) | 用于获取一虚拟路径的真实路径 |
cookie[] get Cookie() | 用于获取所有的 Cookie 对象 |
void setAttribute(String key,Object obj) | 设置属性的属性值 |
boolean isSecure() |
返回布尔类型的值,用于确定这个请求是否使用了一个安全协 议,如 HTTP |
boolean isRequestedSessionldPromCookie() |
返回布尔类型的值,表示会话是否使用了一个 Cookie 来管理 会话 ID |
boolean isRequestedSessionIdFromURL() |
返回布尔类型的值,表示会话是否使用了一个URL来管理会话 ID |
boolean isRequestedSessionldFromVoid() | 检查请求的会话 ID 是否合法 |
request 对象就是利用表 1 列举的那些 get 方法,来获取客户端的信息。
【例1】应用 request 对象获取客户信息,代码如下:
<%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title> request对象获取客户信息 </title> </head> <body> 客户提交信息的方式:<%=request.getMethod() %> <br/> 使用的协议:<%=request.getProtocol() %> <br/> 获取提交数据的客户端IP地址:<%=request.getRemoteAddr() %> <br/> 获取服务器端的名称:<%=request.getServerName() %> <br/> 获取服务器端口号:<%=request.getServerPort() %> <br/> 获取客户端的机器名称:<%=request.getRemoteHost() %> <br/> </body> </html>
送行结果如图 1 所示。