1.cookie的概念和作用
cookie是保存在客户端的,也就是说存在于我们客户端的一个文本文件;servlet提供了Cookie类,可以将文本信息封装成cookie对象;怎么放置呢?这里HttpServletResponse接口提供了addCookie方法,将cookie添加到响应中,然后保到文本信息里面;而HttpServletRequest接口提供了getCookie方法,从文本信息中取到cookie,也就是请求中获取cookie,也就是cookie是以文本的形式存在于客户端中,利用2个接口存取;
2.session
session是客户端对服务器的一次连续的访问过程,我们称之为会话,也就是说我们访问服务器。第一个页面连接成功后,服务器端就会创建一个session;这个session 首先会检查有没有sessionID,如果没有就会创建一个新的session,如果有,他将会维持原来的session;而这个sessionID是一个既不会重复,也不容易找到规律的以仿造的字符串;而这个会话对象我们用HttpSession这个接口来表示,它有setAttibute(存储整个会话期间需要保存的值)/getAttribute(当然就是把值取出来)/removeAttribute(移除某个值)方法;而getSession是通过请求获取会话的方法;
而JSP中也有一个内置对象session,是HttpSession的对象,默认情况下,JSP总是获得session对象,可以直接使用,因为他是内置的,不需要想servlet那样,需要request.getSession获取;
3.会话的实现机制
会话的实现依赖于容器;而会话的保存时间和cookie是不一样的,cookie我存的时候有一个时间;而session存的是一个会话范围,即为了有效使用内存,以及保证安全性,会话在一定时间不被使用(称之为会话超时),将被销毁;这个设置可以通过三种方式设置;
a.web.xml中配置会话超时时间(最小min);
b.setMaxInactiveInterval方法设置超时时间(单位s);
c.Invalidate将某会话设置为失效;
4.URL重写
现在大多数情况session都是根据cookie来写的,而有的时候客户端浏览器会禁止发送cookie;如果cookie被禁止那么基于cookie的session将会失效;所以此时我们可以通过URL重写的技术来实现;