您现在的位置是:网站首页>博客详情博客详情

JavaEE之Session理解

边小丰2019年01月30日 JavaEE 163人已围观


摘要: 在互联网生活中,通常大家在使用浏览器的时候会接触到session。由于HTTP的无状态性,也就是说,当打开浏览器输入http://www.bianxiaofeng.com 网址,然后该请求会被服务器处理后,返回所请求的网页的内容,至此,整个Request/Response过程已经完全结束了。当你接下


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实例,然后才能使用。构建方式有两种:

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

常用方法

        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。


__EOF__

作  者Dimple
出  处/view/18
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击下方的鼓掌一下。您的鼓励是博主的最大动力!如有疑问请留言!


文章评论

我的名片

网名:Dimple | 裤兜有怪兽

职业:Java开发工程师

现居:四川省-成都市

Email:bianxiaofeng@sohu.com

每日一句

最近更新

点击排行

猜你喜欢