Session的意思是会话,一次会话就是打开页面至关闭页面(注意页面跳转不是关闭页面)的过程中保存服务器端的信息(封装为一个对象,HttpSession对象;WEB容器中维护了大量的HttpSession对象),在会话保存在服务器端。Session不仅在javaweb中存在,只要是web开发,都有会话这种机制。
cookie可以将会话状态保存在客户端,Session将会话保存在服务器端。
HttpServletRequest对象可以获取HttpSession对象:
一、简单例子
- 新建一个空项目,里面加一个webapp模板的module;新建一个java文件夹,里面新建一个AccessMySelfSession类:
这里用HttpServletRequest对象的getSession()获取用户的Session,HttpServletRequest对象的getRemoteAddr()获取用户信息,将两者在控制台输出。
2.配置web.xml文件:
3.编辑index.jsp文件:
4.编译运行
点击超链接:
注意:红色下划线标出的便是用户Session的信息
刷新网页页面发现它不变:
关闭项目重新启动(getRemoteAddr()获取的用户信息不变,session的信息改变):
session的实现原理:
注意:浏览器禁用cookie后会导致无法获取到对应的会话(HttpSession)对象。
补充:
二、HttpSession的常用方法
1.void setAttribute(String name,Object value):向会话范围存储一个数据
2.Object getAttribute(String name):从session中获取数据
例如,在上述项目中修改AccessMySelfSession类:
上图中的setAttribute()将username变量保存在Session中(setAttribute()可以保存任意类型的变量)。
添加一个HttpServlet子类,该类获取Session中的数据:
修改web.xml文件配置访问路径:
在web.jsp中添加一个a标记:
启动运行项目:
点击第一个超链接:
按返回按钮后点击第二个超链接:
控制台输出结果:
3 void invalidate(string name):销毁session



