javaWeb中的session

什么是sesson?

服务器会为每个浏览器 创建单独Session对象,Session对象用来保存与对应浏览器相关会话数据

session和cookie的区别?

Session和Cookie 相比,Cookie 数据保存客户端,Session数据保存服务器端
Cookie 好处:保存客户端,不占用服务器资源 (记住用户名密码、上次访问时间 、商品浏览记录 ...) 缺点:安全性
Session 好处:数据保存服务器端,更加安全 ,缺点:占用服务器资源,当Session数据非常多时,服务器压力非常大

Session原理

1、当客户端访问服务器,第一次 request.getSession() API得到执行,随机创建Session对象,为对象创建唯一编号 id
2、服务器会将创建Session 的编号 id 以Cookie形式 发送给客户端
3、客户端接收 session的编号,保存起来(会话级别、持久级别)
4、客户端下次访问服务器,因为cookie中含有session的id ,会自动携带session的id
5、服务器端,从cookie中获得session的id,并且request.getSession()时,根据session的id查找到服务器端对应Session对象

关闭浏览器再打开,Session中数据还在不在?

cookie持久的,获得之前session的id ---- 找到相应信息
cookie是会话级别,关闭浏览器后丢掉 session的id ,服务器端session数据还在,但是找不到信息
***浏览器关闭 与Session存在无关 ,关闭浏览器只是丢失保存在cookie中 session的id

*** 手动设置jsessionid持久化
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60 * 60);
cookie.setPath("/day7");
response.addCookie(cookie);

Session生命周期 :
1、创建 :request.getSession() (没有jsessionid找不到对应Session)
2、失效 :
(1) 服务器正常关闭,重启后,session数据还有,中止服务器,启动,session数据丢失
** 正常关闭服务器,session中数据会被序列化到 tomcat/work 目录,重启后重新加载
(2) 自动过期 ,当session持续一段时间没有使用,服务器就会自动删除session对象
tomcat/conf/web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>
默认session过期时间 30分钟

API 进行设置 session.setMaxInactiveInterval(int interval) 单位秒

(3) 手动销毁session ---- session.invalidate() 销毁当前session对象,清除里面所有数据

禁用cookie?

如果客户端禁用cookie,会怎么样 ?服务器Session对象还是存在的 ,客户端无法找到Session
*** cookie 禁用解决 ,在url地址上 拼接jsessionid
http://localhost/day7/session/cart.jsp;jsessionid=5509175E258A27EBAA3BF972E5D309EF (分号 ; 不是 ?)

使用response 提供现成API : encodeURL
*** 禁用cookie 使用所有url 必须都进行重写,只要有一个没重写,session丢失 ,无法获得丢失session的数据

原文地址:https://www.cnblogs.com/zhuangwf/p/10807262.html

时间: 2024-08-01 18:00:58

javaWeb中的session的相关文章

JavaWeb中session创建于销毁的问题

今天遇到一个奇怪的问题,自己添加了一个session的监听,用来监听在线的人数.但打开浏览器时一直没有走进这个监听中来.最后百度找到了原因: 我们一直存在一个误区,javaweb中的session什么时候创建?我一直认为是第一次与浏览器建立连接的时候,就自动创建一个session.其实不然! 只有在server端的代码调用request.getSession(true)这个方法时,才互创建一个session.其中true表示,如果存在一个相同的session,则直接返回,如果不存在,则创建一个新

个人对JavaWeb中MVC与三层架构的区别理解

JavaWeb中MVC是指B/S结构开发中的一种设计模式,能够将Web页面与业务逻辑以及数据库操作之间的耦合性降到最低点,易于代码的重用以及后期维护.而三层架构的概念在JavaWeb中则是指Web层,业务层,数据层.但三层架构中却是把MVC中的Model,也就是JavaBeans分成业务层和数据层,而把Controller控制器以及View视图合并成Web层.二者之间最大的区别在于MVC只限于JavaWeb,而三层架构则能够实现在非Web应用平台之上,只需替换掉Web层足以,而业务层与数据层依旧

JavaWeb学习总结——Session(转载)

JavaWeb学习总结--Session(转载) 一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务. 二.Session和Cookie的主要区别 Cookie是把用户的数据写给用户的浏览器. S

JavaWeb中的监听器

JavaWeb中的监听器 l  事件源:三大域! ServletContext ¨       生命周期监听:ServletContextListener,它有两个方法,一个在出生时调用,一个在死亡时调用: 2       void contextInitialized(ServletContextEvent sce):创建SErvletcontext时 2       void contextDestroyed(ServletContextEvent sce):销毁Servletcontext

JavaWeb中的绝对路径和相对路径问题

在开发的时候,因为路径,往往会造成很多问题.所以开发时,JavaWeb尽可能的用绝对路径 a.jsp <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><body> <h1>A page</h1> <a href="pathProblem/b.jsp">To B page</a> </body>&

JavaWeb:Cookie和Session

JavaWeb:Cookie和Session Cookie处理 什么是Cookie Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息.Java Servlet 显然支持 HTTP Cookie. 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie.例如:姓名.年龄或识别号码等. 浏览器将这些信息存储在本地计算机上,以备将来使用. 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户.

十:JavaWeb中的监听器(一)

2.1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件. 2.2.Servlet监听器的分类 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象 Servlet规范针对这三个对

EJB3.0中的session bean以及MDB解析

大型业务系统面临的主要问题就是高并发性和事务访问,客户端的数量与服务器端的分布式对象数量存在一定程度的正比关系,客户端数量越多,服务器端分布式对象也就越多,如何解决这种高并发的问题也就成了企业级架构首先要解决的问题.EJB作为一种服务器端分布式组件,为我们提供了应对策略. EJB提供了两种管理大量分布式对象的策略:实例池化和激活.下面分别对EJB组件模型中的三种模型进行一些分析. 第一种:无状态的会话Bean(Stateless session bean) Stateless session b

asp.net中一般处理程序中添加session

asp.net中使用一般处理程序(.ashx)添加session,利用context.session["xxx"] = value的方式把值保存到session:运行的时候会出现该对象尚未引用. 解决办法:1,在一般处理程序的类后面添加IRequiresSessionState.例如public class xxx : IHttpHandler, IRequiresSessionState. 2,引入session所使用的类库,using System.Web.SessionState