Session是Servlet三大域对象之一(ServletContext、Session、request)
Session的生命周期:浏览器打开访问这个网站开始,到退出这个网站或者超时之后结束
Session作用域:被整个浏览器的任何页面共享
在Servlet的doget()方法中获取session
HttpSession session =request.getSession();
session.setAttribute("username", "小明");
在项目下新建页面,用el表达式取username
${username}
在浏览器中访问Servlet,再去访问页面,每个页面都可以取到 小明
何时失效?Tomca默认失效时间30min
可以设置何时失效时间-->session.setMaxInactiveInterval(10);//10s后失效
创建Cookie
Cookie cookie = new Cookie("pwd", "123");
设置cookie失效时间
cookie.setMaxAge(60*60);
把cookie加到浏览器
response.addCookie(cookie);
获取cookie
//获取request提交上来的所有的cookie的数组
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie coo : cookies){//遍历数组
System.out.println(coo.getName());//名字
System.out.println(coo.getValue());//值
}
}
查看coookie
可以选择360极速浏览器,查看设置的cookie
在jsp界面打印cookie
<% Cookie[] cookies = request.getCookies(); String username = ""; String pwd = ""; if(cookies != null){ for(Cookie cookie : cookies){ if(cookie.getName().equals("pwd")){ pwd = cookie.getValue(); } } } %> cookie中的pwd: <%=pwd %>先要通过Servlet创建cookie,再访问页面才能显示cookie的值
Session的运行依赖sessionid,而sessionid时存在cookie中的,,也就是说如果浏览器禁用了cookie,session也会失效(但是可以通过URL重写实现)
Session的钝化:将session的信息从内存中写到硬盘中
Session的活化:将session的信息从硬盘中读到内存中
一个直观感受: 访问Servlet且创建了session,停止服务器,在work目录下生成session.ser文件
再次启动服务器 session.ser文件没了 跑到内存中去了
