JSP内置对象:操作cookie、session对象

操作cookie

Cookie是由服务器写到客户端的小文件或字符串,用来保存一些信息
主要方法

Cookie(String name,String value)        实例化Cookie对象,同时设置名称和内容
getName()                               获取Cookie的名称
getValue()                              获取Cookie的内容
setMaxAge(int expiry)                   设置Cookie的保存时间,以秒为单位

所有的Cookie都是由服务器端设置到客户端上去的,所以要向客户端增加Cookie必须使用response对象的addCookie方法。而从客户端读取Cookie,则需要使用request对象的getCkkoie方法,可以得到一个Cookie数组

示例: 设置Cookie

<form action="" method="post">
	用户:<input name="user" type="text"> 密码:<input name="password"
		type="password"> <input type="submit" value="提交">
</form>
<%
	String name = request.getParameter("user");
	String password = request.getParameter("password");
	Cookie c1 = new Cookie("userName", name);
	c1.setMaxAge(60 * 60 * 24 * 7);
	response.addCookie(c1);
	Cookie c2 = new Cookie("password", password);
	c2.setMaxAge(60 * 60 * 24 * 7);
	response.addCookie(c2);
%>

示例: 读取Cookie

<%
String name = "";
String password = "";
Cookie[] cookies = request.getCookies();
if (cookies != null) {
	for (int i = 0; i < cookies.length; i++) {
		Cookie c = cookies[i];
		if (c.getName().equals("userName")) {
			name = c.getValue();
		}
		if (c.getName().equals("password")) {
			password = c.getValue();
		}
	}
}
%>

session对象

客户浏览器与服务器间的交互称为会话,在web中称为session

工作机制
在客户第一次访问网站时,服务器会为每个客户创建一个session对象,包括Id、创建时间等属性。不同客户使用自己的session对象,相互之间不会产出影响
用户从首次访问服务器开始到关闭浏览器,只要最后访问的时间不超时,服务器就会一直为用户保留session对象,保存在session中的用户信息也就一直存在

1、利用Cookie的会话跟踪
通常,在浏览器第一次请求服务器时,会产生一个取值唯一的字符串JSESSIONID作为用户的访问标识。服务器会将其存储,用来区分不同的用户

Cookie字符串
Cookie:JSESSIONID=D379891CC461B49844......

2、URL重新
如果浏览器不支持Cookie或用户禁用Cookie,将不会产生sessionID,此时将通过URL重写处理。客户程序在每个URL的尾部添加一些额外的数据用来标识会话,服务器将这个标识符与它存储的用户相关数据关联起来

http://host/path/file.html;jsessionid=.......................

3、session的作用
session对象建立后,客户浏览器访问的任何页面都可以使用session对象存储的信息,因此session对象经常用于临时存储可供多个页面共享的数据
session中保存的信息不能是基本数据类型(int、double等),必须是Java相应的对象(Integer、Double、String等)

主要方法

getId()              返回session对象的sessionId
getAttribute()       返回指定名称的session属性值
setAttribute()       设置指定名称的session属性值,新值会替换旧值
removeAttribute()    删除指定名称的session属性值
setMaxInactiveInterval()     设置超时时间(秒)
getMaxInactiveInterval()     返回超时时间,负值表示用不超时
invalidate()         取消session,使session不可用
等

你可能感兴趣的:(jsp)