一.session
session是一种服务端的会话技术。主要作用是为了标识一次会话,并且在一次会话期间共享数据。
1.获取session对象
//通过req.getSession()获取当前会话对象
HttpSession session = req.getSession();
2.session到期时间
1.默认到期时间
当客户端第一次请求 servlet 并且操作 session 时,session 对象生成,Tomcat 中 session 默认的存活时间为 30min,即你不操作界面的时间,一旦有操作,session 会重新计时。可以在 Tomcat 中的 web.xml 文件中进行修改。
2.自己设定销毁时间
//通过session.setMaxInactiveInterval(int)来设定不活动时间,单位秒 HttpSession session = req.getSession(); session.setMaxInactiveInterval(5);
3.设置立即失效
//让session立刻失效 session.invalidate();
4.关闭浏览器
session主要依赖cookie实现,当关闭浏览器时,cookie因有效时间到期而消失,导致session也失效
5.关闭服务器
当服务器非正常关闭时,seesion销毁;当服务器正常关闭时,session将被序列化到磁盘上,保存到工作空间目录下的session.ser文件中。此时,当保存在session中的对象实现了Serializable接口,在下次服务器启动时,将自动加载到内存中。
3.session和cookie的区别
区别:
1.session保存在服务器,cookie保存在客户端
2.session是以对象的形似保存在服务器,cookie则以字符串的形式保存在和客户端
3.session适合做客户端的身份验证,cookie适合保存用户的个人信息
4.cookie的安全性不如session。cookie信息存放在本地不安全,他人可以分析本地的cookie并且进行cookie欺诈。
5.单个cookie存储的限制是3k。一般浏览器所含有的cookie的最大数量在30到50之间。而session则没有大小限制。
6.session不能区分路径,同一用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;cookie中如果设置了参数路径,那么同一个网站下的cookie互相访问不到
二.ServletContext
1.ServletContext的三种获取方式
1.通过request获取
ServletContext servletContext = request.getServletContext();
2.通过Session获取
ServletContext servletContext = request.getSession().getServletContext();
3.通过ServletConfig获取
ServletConfig servletConfig = getServletConfig(); ServletContext servletContext4 = servletConfig.getServletContext();
4.直接获取(通过获取父类方法)
ServletContext servletContext = getServletContext();
2.往ServletContext中存数据
servletContext.setAttribute("uname", "憨憨");
三.ServletContext和session作用域的比较
1.Servlet三大作用域
Request(一次请求)、Session(一次会话)、ServletContext(Application)(整个应用)