session的使用
来源:互联网 发布:maven 指定java版本 编辑:程序博客网 时间:2024/06/03 17:44
Session
=====================================================================
1.简介
------------------------------------------------------------
Session代表服务器与浏览器的一次会话过程.数据保存在服务器端
初次访问服务器上的一个jsp,服务器在响应头中设置了临时cookie(会话级,关闭浏览器就消失),并加上了一JSESSIONID,第二次访问jsp,浏览器将存储JSESSIONID的cookie随着请求一起发送到服务器,服务器通JSESSIONID到内存中找到上次生成的session对象,从而实现客户端(浏览器)共享session。
JSESSIONID也可以拼在url上,如:
http:///localhost:8080/testApp/test.jsp;JSESSIONID=XX?param1=value1,
JSESSIONID可以通过request.getSession().getId()得到,url中如果有JSESSIONID,服务器就不会从cookie中取了。
2.session的创建
------------------------------------------------------------
session是服务器创建的对象,放在服务器内存中;
以Tomcat为例,当使用浏览器访问一个jsp时,Tomcat会先根据jsp生成java文件,再编译成class,
最后运行,输出内容到浏览器,浏览器解析呈现给用户。
java和class文件会放到<Tomcat安装目录>/work/Catalina/localhost/<你的应用>/org/apache/jsp/<相应包>下,
比如你有个test.jsp,那么就会生成test_jsp.java文件。打开test_jsp.java,找到其_jspService方法,
会看到声明了一些我们常说的jsp内置对象。
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
JspWriter out = null;
再往下看,会看到有一句session = pageContext.getSession();
这里生成了session对象,也就是说,访问jsp时,服务器自动生成了session对象
(可以在jsp的page声明中加入session="false",禁用session)。
3.session的销毁
------------------------------------------------------------
session销毁:
1)服务器被强制关闭,肯定啥都没有了,这要看服务器具体的实现,像Tomcat正常关闭(使用shutdown)的话,
是会对session序列化到硬盘上的,重新启动后,会读取,原有的session依然存在。
2)程序中调用session.invalidate(),销毁当前session方法。
3)session超时(失效),超时指的是服务器连续一段时间内(超出了应用中设置的最低时限)没有接收到session所在客户端的请求,服务器从内存中移除该session对象。
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。
设置session失效的几种方法:
1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。
2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<!-- 设置session失效,单位分 -->
<session-config>
<session-timeout>6</session-timeout>
</session-config>
3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到<session-config>元素,
tomcat默认设置是30分钟,只要修改这个值就可以了。
优先级1 > 2 > 3
浏览器窗口关闭,session会消失吗?
session的创建和销毁由服务器端控制,浏览器关闭后,没有请求再访问(通过JSESSIONID查找)服务器内存中的该session了,超过设置的失效时间,服务器会自动销毁该session.
jsp页面可以添加 <%@ page session="false"%>
不是不让页面创建Session,而是在此JSP页面无法使用session.
=====================================================================
1.简介
------------------------------------------------------------
Session代表服务器与浏览器的一次会话过程.数据保存在服务器端
初次访问服务器上的一个jsp,服务器在响应头中设置了临时cookie(会话级,关闭浏览器就消失),并加上了一JSESSIONID,第二次访问jsp,浏览器将存储JSESSIONID的cookie随着请求一起发送到服务器,服务器通JSESSIONID到内存中找到上次生成的session对象,从而实现客户端(浏览器)共享session。
(服务器设置的临时cookie:JSESSIONID是会话级的,关闭浏览器就消失,再打开浏览器访问时,
JSESSIONID为空,所以服务器会重新生成一个JSESSIONID,这就是session是会话级别的)
cookie中session的标识是JSESSIONID
JSESSIONID也可以拼在url上,如:
http:///localhost:8080/testApp/test.jsp;JSESSIONID=XX?param1=value1,
JSESSIONID可以通过request.getSession().getId()得到,url中如果有JSESSIONID,服务器就不会从cookie中取了。
2.session的创建
------------------------------------------------------------
session是服务器创建的对象,放在服务器内存中;
以Tomcat为例,当使用浏览器访问一个jsp时,Tomcat会先根据jsp生成java文件,再编译成class,
最后运行,输出内容到浏览器,浏览器解析呈现给用户。
java和class文件会放到<Tomcat安装目录>/work/Catalina/localhost/<你的应用>/org/apache/jsp/<相应包>下,
比如你有个test.jsp,那么就会生成test_jsp.java文件。打开test_jsp.java,找到其_jspService方法,
会看到声明了一些我们常说的jsp内置对象。
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
JspWriter out = null;
再往下看,会看到有一句session = pageContext.getSession();
这里生成了session对象,也就是说,访问jsp时,服务器自动生成了session对象
(可以在jsp的page声明中加入session="false",禁用session)。
3.session的销毁
------------------------------------------------------------
session销毁:
1)服务器被强制关闭,肯定啥都没有了,这要看服务器具体的实现,像Tomcat正常关闭(使用shutdown)的话,
是会对session序列化到硬盘上的,重新启动后,会读取,原有的session依然存在。
2)程序中调用session.invalidate(),销毁当前session方法。
3)session超时(失效),超时指的是服务器连续一段时间内(超出了应用中设置的最低时限)没有接收到session所在客户端的请求,服务器从内存中移除该session对象。
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。
设置session失效的几种方法:
1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。
2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<!-- 设置session失效,单位分 -->
<session-config>
<session-timeout>6</session-timeout>
</session-config>
3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到<session-config>元素,
tomcat默认设置是30分钟,只要修改这个值就可以了。
优先级1 > 2 > 3
浏览器窗口关闭,session会消失吗?
session的创建和销毁由服务器端控制,浏览器关闭后,没有请求再访问(通过JSESSIONID查找)服务器内存中的该session了,超过设置的失效时间,服务器会自动销毁该session.
jsp页面可以添加 <%@ page session="false"%>
不是不让页面创建Session,而是在此JSP页面无法使用session.
session是消耗服务器内存的,所以要合理使用session,不要什么东西都往session里放。
session是在调用HttpServletRequest.getSession(true)语句时才创建session对象
Cookie与Session的区别
- cookie数据存放在客户的浏览器上,session数据放在服务器上;
- cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
- session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
- 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K;
Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,上面我讲到服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie。
0 0
- 使用flex 的session
- hibernate Session的使用
- SESSION 的使用
- Session使用的方法
- session的使用原则
- session的使用
- servlet session的使用
- Session的使用
- 使用session的原则
- session的使用详解
- Struts2 -- session的使用
- session 的使用
- Struts2 -- session的使用
- Session 对象的使用
- session.flush()的使用
- session的使用
- Session的使用技巧
- session.flush()的使用
- Android studio插件加载问题
- Android Translucent System Bar + actionbarsherlock + SlidingTabLayout 综合实践
- priority_queue
- Oracle dbms_random包的用法
- 谷歌三篇论文之二---MapReduce
- session的使用
- postman 插件安装
- 模板2
- There is no Action mapped for namespace [/] and action name [login] associate解决办法 .
- Ubuntu下开启Mysql远程访问的方法
- Android动画效果(二) 仿QQ点赞动画
- memory_target和/dev/shm的关系
- leetcode 349 Intersection of Two Arrays C++
- 【1139】数据结构上机测试2-2:单链表操作B