关于http session

http session,并不是java平台独有的概念,而是跟http协议相关的,任何平台都涉及到这个问题

需要session的根源在于,http协议本身是一种无状态的协议,也就是说每个请求都会被服务器认为是一个新请求。但是实际的业务场景,往往需要服务端能够记住客户端曾经进行过的操作,因此这就需要http session来发挥作用

http session的实现在不同的平台会有所不同,java ee平台的servlet规范只是定义了服务端需要能提供“某种机制”来保存session,具体的实现由servlet容器供应商来实现。比如可以将数据保存在内存中,也可以持久化到文件系统里,也可以保存到数据库中,规范并没有做强制的要求

但是,就像数据库的记录必须要有一个主键,文件必须要有一个文件名一样,http session也要求必须有一个唯一的session id在客户端和服务端之间传递。试想,如果没有这样一个唯一标识的存在,服务端就算保存了数据在session中,又怎么能知道哪个session对应哪一个客户端的请求呢?

servlet规定了HttpSession接口来提供session机制。API也十分简单,通过HttpServletRequest.getSession()得到HttpSession,然后调用HttpSession.isNew()方法来判断这是否是一个新的session,并提供了HttpSession.getAttribute()和HttpSession.setAttribute()方法来设置session scope的属性

猜你喜欢

转载自kyfxbl.iteye.com/blog/1360815