前言:
状态跟踪有四种方式:1.隐藏表单域方式 2.附加URL方式 3.Cookie方式 4.封装的Session方式。前三种是传统的做法,都有缺点。所以现在一般用Session方式,session是综合采用了附加URL和Cookie两种技术,可以用Cookie的时候,用Cookie,否则用附加URL,而所有这一切都被Java语言类库所封装好了。
Part 1 什么是隐藏表单域?
就是利用隐藏表单域
<input type="hiden" name="passwd" value="1234"> 当提交Form的时候,Server端象获取普通字段那样获取参数password的值,这种请求方式一般是post。
Part 2 什么是附加URL?
就是请求url上附加参数,比如http://localhost/abc.jsp?passwd=1234,当提交Form的时候,Server端就可以获取passwd这个参数。与隐藏表单域不同的是,显然这种是get请求方式。
Part 3 什么是Cookie?
Cookie涉及到文件,浏览器收到Server端的相应头后,把那一组信息组装成文件放到系统的某个地方,当下次请求的时候,文件内容随这请求一起发送到服务器上,让服务器辨认是否时原来的用户。Cookie可以设置有效期。示例代码如下:
Cookie newcookie=new Cookie("key","value");
newcookie.setMaxAge(86400);
response.addCookie(newcookie); Part 4 什么时Session?
Jsp的HttpSession综合了Cookie和附加URL两种技术,诞生了新的验证机制。程序员不必要考虑客户浏览器是否支持Cookie。Session也可以设置有效期。示例代码如下:
session.setAttribute("user",user);
session.setMaxInactiveInterval(10); 与其它技术不同的是,只要添加到session的对象实现了HttpSessionBindingListener接口,当Session资源被Server释放之前,可以对该对象采取永久保存等操作。即需要实现valueBound(...)和valueUnbound(...)方法。对象加入session是调用valueBound,对象从session中释放时调用valueUnbound.这项功能比较有用,比如购物车的内容,可以为用户永久保存。