JavaEE之Session理解

Session应用场景

在互联网生活中,通常大家在使用浏览器的时候会接触到session。由于HTTP的无状态性,也就是说,当打开浏览器输入http://www.bianxiaofeng.com 网址,然后该请求会被服务器处理后,返回所请求的网页的内容,至此,整个Request/Response过程已经完全结束了。当你接下来访问网站的时候,网站服务器端是不认识你的。这就是无状态性。为了解决这个问题(比如在某个需要输入密码的网页登录,不能说每一次打开该网站的新的网页就要输入一次密码。对吧?)。此时session的作用就体现出来了。简单的说。就是让服务器知道你就是你。

面对无状态性的解决方案

Java Servlet 通过引入session机制来跟踪客户端的状态。当用户访问网站的时候,网站会分配给该客户端一个sessionID用于标识该客户端,至此,在接下来的一段时间内,用户可以请求不同的服务器资源。当网页被关闭的时候,服务器会释放掉这个ID。比如在线购物的过程,浏览物品,到添加购物车到付款完成关闭页面这整个过程就是一个session。

Session的使用

session的使用方式很多,常见的方式是使用jsp和servlet。

jsp的9大内置对象中就有session,所以在jsp页面可以直接使用。在servlet中,需要构建出session实例,然后才能使用。构建方式有两种:

1
2
3
4
HttpSession session=request.getSession();
HttpSession session=request.getSession(Boolean b);
//参数为true:若会话存在就返回该对话,如果不存在就创建一个对话;
//参数为false:若会话存在就返回该对话,如果不存在就返回null

常用方法

1
2
3
4
5
6
session.isNew();//返回值为Boolean,判断是不是新创建的session
session.setAttribute(String s,Object o);//在session范围内保存对象
session.getAttribute(String s);//获取在session范围内保存的对象,一般涉及到cast强转
session.removeAttribute(String s);//去除session范围内的键为s的对象
session.getId();//返回sessionID,返回值为String
session.invalidate();//使session立即失效,包括保存在session范围内的对象

总结

Session将信息保存在服务器端,而cookie保存在客户端,session比cookie安全,但是session更加占用资源。如果客户端禁用了cookie,那么服务器端的session也无法使用。这种问题的解决方案是重写url。

-------------The End-------------

本文标题:JavaEE之Session理解

文章作者:Dimple

发布时间:2018年03月26日 - 19:03

最后更新:2018年09月17日 - 20:09

原始链接:http://www.bianxiaofeng.com/2018/03/26/2018-3-26-193523/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

na,给我一个棒棒糖!
0%