request对象
request对象是使用最多的一个对象,主要作用是接收客户端发送过来的请求信息,例如请求的参数,发送的头信息等。使用时主要是作为接收方使用。它是HttpServletRequest类的实例。
在使用request对象时经常碰到的问题是出现NullPointerException异常,这是由于在使用表单传递参数时,用户没有在表单中输入内容或选择复选框内容,因此在使用时要判断接收的数据是否为null。
此外在使用表单接收数据之外还可以使用地址栏重写来进行参数的传递,一般格式是:动态页面地址?参数名称1=参数内容1&参数名称2=参数内容2........
主要方法:
getParameter 取得参数值
getParameterNames 取得参数名
getParameterValues 取得某个参数下的所有值的数组
其他方法如下:
1 object getAttribute(String name) 返回指定属性的属性值
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
3 String getCharacterEncoding() 返回字符编码方式
4 int getContentLength() 返回请求体的长度(以字节数)
5 String getContentType() 得到请求体的MIME类型
6 ServletInputStream getInputStream() 得到请求体中一行的二进制流
7 String getParameter(String name) 返回name指定参数的参数值
8 Enumeration getParameterNames() 返回可用参数名的枚举
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组 如checkbox这种多选框可用此方法
10 String getProtocol() 返回请求用的协议类型及版本号
11 String getScheme() 返回请求用的计划名,如:http.https及ftp等
12 String getServerName() 返回接受请求的服务器主机名
13 int getServerPort() 返回服务器接受此请求所用的端口号
14 BufferedReader getReader() 返回解码过了的请求体
15 String getRemoteAddr() 返回发送此请求的客户端IP地址
16 String getRemoteHost() 返回发送此请求的客户端主机名
17 void setAttribute(String key,Object obj) 设置属性的属性值
18 String getRealPath(String path) 返回一虚拟路径的真实路径
19 void setCharacterEncoding(String code)用于设置传递的字符编码,可用于解决乱码问题
POST提交和GET提交有什么不同?
一般使用post提交的情况较多,使用get提交之后,提交的内容会显示在地址栏之后,而使用post提交是不会在地址栏显示参数的。其实直接输入地址栏访问就等于get提交方式,而post只是应用在表单上的操作。
同时post提交还可以传输更多的数据。
response对象
response对象的主要作用是对客户端的请求进行回应,Web服务器把请求处理后将结果发送给客户端。response对象属于javax.servlet.http.HttpServletResponse接口的实例。
response对象常用的方法有:addCookie()、setHeader()、sendRedirect()。
设置头信息:使用response对象可以向客户端设置头信息,下面给一个定时跳转的实例。
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>jump</title>
</head>
<body>
<h2>三秒后跳转到百度,如果没有跳转请按<a href="www.baidu.com">这里</a></h2>
<%
response.setHeader("refresh","3;URL=https://www.baidu.com");
%>
</body>
</html>
使用sendRedirect()方法可以直接跳转到设置页面。
response.sendRedirect("https://www.baidu.com");
同时使用response对象还可以设置cookie。
设置cookie:
<body>
<%
<span style="white-space:pre"> </span>Cookie c1 = new Cookie("zzh","lunatictwo");
<span style="white-space:pre"> </span>Cookie c2 = new Cookie("nhpop","hnistnhpop");
<span style="white-space:pre"> </span>c1.setMaxAge(60); //设置cookie过期时间,在过期时间之内重开浏览器不会过期
<span style="white-space:pre"> </span>c2.setMaxAge(60);
<span style="white-space:pre"> </span>response.addCookie(c1);
<span style="white-space:pre"> </span>response.addCookie(c2);
%>
</body>
获取cookie:
<body>
<%
Cookie c[] =request.getCookies();
for(int i=0;i<c.length;i++){
%>
<h3><%=c[i].getName() %> --------------- <%=c[i].getValue() %></h3>
<%
}
%>
</body>
session对象
session对象在以前的《研究购物车信息存储方式》文章中有提到过,其实session就是一个用来存储和识别身份信息的对象,可以通俗的理解为身份识别卡,有了这个卡就能识别不同的用户,每人一张,对号入座。
session对象是javax.servlet.http.HttpSession接口的实例化对象,所以session只能应用在HTTP协议中。
HttpSession接口的常用方法有:
使用session可以保存用户信息,从而可以判断用户是否登录,进行用户注销(invalidate),同时还可以判断是否是新用户(isNew)。
还可以使用getCreationTime和getLastAccessedTime两个方法取得用户的浏览时间。
application对象
application对象是javax.servlet.ServletContext接口的实例化对象,常用的方法如表所示:
application对象中最重要的是属性的操作,在之前的文章中已经总结过,另外使用application对象还可以取得虚拟目录对应的绝对路径。
config对象
config对象是javax.servlet.ServletConfig接口的实例化对象,主要功能是取得初始化的配置信息。
常用的方法如图:
使用config对象中的getInitParameter()方法可以取得初始化的配置参数,所有的配置参数都在web.xml文件中进行配置。
pageContext对象
pageContext对象是javax.servlet.jsp.PageContext类的实例,主要表示一个jsp页面的上下文,主要方法有: