![](https://img.haomeiwen.com/i8555760/48365ea9fc3ab73d.png)
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,判断是不是新创建的sessionsession.setAttribute(Strings,Objecto);//在session范围内保存对象session.getAttribute(Strings);//获取在session范围内保存的对象,一般涉及到cast强转session.removeAttribute(Strings);//去除session范围内的键为s的对象session.getId();//返回sessionID,返回值为Stringsession.invalidate();//使session立即失效,包括保存在session范围内的对象
总结
Session将信息保存在服务器端,而cookie保存在客户端,session比cookie安全,但是session更加占用资源。如果客户端禁用了cookie,那么服务器端的session也无法使用。这种问题的解决方案是重写url。
网友评论