前言
在Web开发中,request、response、session和application对象是非常重要的对象。本章我们将着重对这四个对象进行介绍和实际应用Demo演示。
4.1 request对象
request对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据。request对象包含了请求的头信息(Header)、系统信息(比如:编码方式)、请求的方式(比如:GET或POST)、请求的参数名称和参数值等信息;还提供了获取cookie和session等对象、数据的方法。
4.1.1 获取用户提交的信息
通过request对象可以获取用户在网页表单中所输入的数据内容,或者通过超链接或jsp:param传递的参数。request对象提供了以下几个方法来获取用户提交的信息:
String getParameter(String name):返回给定参数的值,当传递给此方法的参数名没有实际参数与之对应时,返回 null 。使用 getParameter (String name) 取得的值都是 字符串类型 ,需要转换为需要的类型。
String[] getParameterValues(String name):根据页面表单中的输入控件名称获取对应的多个值,一般用于获取复选框,复选列表框等输入控件,获取里面输入的多个值,参数name就是输入控件的名称。
Enumeration getParameterNames():返回值类型:枚举类型Enumeration。得到客户端提交的所有参数的名称。
例如,如果有一个表单如下:
性别:男 女
爱好:音乐 运动 阅读
那么在test.jsp中可以使用以下代码来获取用户提交的信息:
<%
//获取姓名
String name = request.getParameter(“name”);
//获取性别
String gender = request.getParameter(“gender”);
//获取爱好
String[] hobby = request.getParameterValues(“hobby”);
%>
4.1.2 处理汉字信息
在form表单采用post方式提交请求时,需要设置request对象的编码方式,保证能够正确地取到数据。request对象提供了以下方法来设置编码方式:
void setCharacterEncoding(String chaen):设置request对象使用指定编码方式读取请求参数。
例如,如果要设置request对象使用UTF-8编码方式读取请求参数,可以使用以下代码:
<%
request.setCharacterEncoding(“UTF-8”);
4.1.3 常用方法举例
除了上述方法外,request对象还提供了一些其他常用方法来获取客户端或服务器端的相关信息。以下是一些常用方法举例:
String getProtocol():获取客户向服务器提交信息所使用的通信协议,比如HTTP/1.1等。
String getServletPath():获取客户请求的JSP页面文件的目录。
int getContentLength(): 获取客户提交的整个信息的长度。
String getMethod():获取客户提交信息的方式,如:post或get。
String getHeader(String s): 获取HTTP头文件中由参数s指定的头名字的值²。
Enumeration getHeaderNames():获取头名字的一个枚举。
Enumeration getHeaders(String s):获取头文件中指定头名字的全部值的一个枚举。
String getRemoteAddr():获取用户的IP地址。
String getRemoteHost(): 获取客户机的名称(如果获取不到,就获取IP地址)。
String getServerName():获取服务器名称。
int getServerPort():获取服务器端口号。
例如,如果要在一个JSP页面中显示客户端和服务器端的相关信息,可以使用以下代码:
<%
out.println(“通信协议:” + request.getProtocol() + “
”);
out.println(“请求页面:” + request.getServletPath() + “
”);
out.println(“请求方式:” + request.getMethod() + “
”);
out.println(“请求长度:” + request.getContentLeng