本篇讲述JSP中session的相关知识和管理方法;

  先说说cookie与session

  在web中常用的两种用户信息管理方式:cookie 和 session.

  cookie是保存在用户客户端的数据,用于避免每次发送http请求时,连带过多的数据,造成复杂化。所以Cookie保存在客户端中,根据服务器端的要求,保存特定的内容,在每次http请求后,自动添加一定的内容。

  session是保存在服务器端的数据,用于验证几次请求是否属于同一会话,在同一会话中,会避免进行不必要的验证,保证用户的操作连贯性。

  合理的使用session与cookie都会保证web应用的高可以用性,以及良好的用户体验。但是不必要的操作也会影响到web安全风险和服务器的使用效率。

  session常用的方法

  session是JSP中的一个内置对象,可以在JSP代码中直接使用,他是HttpSession的实例,常用的方法如下:

    <%
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = new Date(session.getCreationTime());
session.setAttribute("username","xingoo");
session.setAttribute("password","123");
session.setAttribute("age","26"); //設置Session生命期限
//session.setMaxInactiveInterval(2); %>
Session创建时间:<%=sdf.format(d) %><br>
Session的ID编号:<%=session.getId() %><br>
Session获取:<%=session.getAttribute("username") %><br>
Session中保存的屬性:<%
String[] names = session.getValueNames();
for(int i=0;i<names.length;i++){
out.println(names[i]+"&nbsp;&nbsp;");
}
%><br>
<%
//session.invalidate();//执行销毁后,服务器直接就删除了会话的相关内容;
%>

  可得到如下的结果:

  session声明周期

  session生命周期中包含3个阶段:

  1 创建

  在第一次用户访问JSP页面时,会创建相应的session,保存在服务器中。之后的请求,服务器都会携带此session id进行校验。

  2 活动

  在同一会话期间,打开新的链接都属于同一会话。

  3 销毁

  关闭浏览器;使用session.invalidate()销毁session;会话过期

  管理session过期

  session默认时30分钟过期。

  1 通过函数方法设置过期时间,单位为秒

session.setMaxInactiveInterval(60);//单位是秒

  2 配置web.xml,单位为分钟

  <session-config>
<session-timeout>1</session-timeout>
</session-config>

  通过tomcat监控管理session

  如果第一次登陆tomcat管理界面,会报用户权限错误,需要手动为tomcat设置用户密码以及用户权限。

  在conf目录中,打开tomcat-users.xml

  在tocmat-users标签中添加下面两行:

<tomcat-users>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users>

  manager-gui用于授予用户 通过html管理tomcat 权限。

  登陆后点击 tomcat manager

  在提示对话框中输入用户名密码,技能看到下面的管理界面

  可以看到当我们访问某个有session内容的页面后,工程中的session数目变成了1.

  由于在web.xml中配置了session的过期时间为1分钟,因此后面的时间也显示了1分钟。

  点击 数字1超链接 ,就能进入session目录!

  可以看到session相关的内容,可以点击上面的按钮,刷新session管理界面。

  点击sessionid 超链接,可以进入session的详细页面,参考如下:

  可以根据该页面,检查session的相关内容等信息。

  注意:由于我使用的是tomcat 6,所以其他版本登陆位置可能有所不同。

  在Eclipse重启Tomcat,tomcat-users.xml被重置

  出现上面现象的原因是,你的eclipse在绑定tomcat后,工程中多了一个叫server的工程。

  打开该工程会发现有几个配置文件,在eclipse重启tocmat,会把这几个配置文件覆盖到我们自己安装的tocmat中。

  因此修改这里的配置文件,即可!

JSP Session管理的更多相关文章

  1. Redis3.2+Tomcat实现集群的Session管理 -- tomcat-redis-session-manager的编译和开发部署环境搭建

    已经有不少文章介绍使用tomcat-redis-session-manager来实现Redis存储Tomcat的Session,实现分布式Session管理.但是现在官方编译的tomcat-redis ...

  2. Spring Security(13)——session管理

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

  3. Spring Security 入门(1-7)Spring Security - Session管理

    参考链接:https://xueliang.org/article/detail/20170302232815082 session 管理 Spring Security 通过 http 元素下的子元 ...

  4. ②萨克斯,音符的悠扬(Session管理)

    一.前言 小朽不才,最近喜欢上了萨克斯,一年计划[传送门]中的实行.就伴随着一首萨克斯,整理了下Session管理和Session四种技术. 保存状态: #网址重写(URL rewriting) #隐 ...

  5. 008-shiro与spring web项目整合【二】认证、授权、session管理

    一.认证 1.添加凭证匹配器 添加凭证匹配器实现md5加密校验. 修改applicationContext-shiro.xml: <!-- realm --> <bean id=&q ...

  6. Spring Security教程之session管理(十一)

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

  7. Spring Security教程之session管理

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

  8. Nhibernate的Session管理

    参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...

  9. Openfire的启动过程与session管理

    说明   本文源码基于Openfire4.0.2.   Openfire的启动       Openfire的启动过程非常的简单,通过一个入口初始化lib目录下的openfire.jar包,并启动一个 ...

随机推荐

  1. 设计模式 -- 单例模式(Java&&PHP)

    所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在.就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等. 能够 ...

  2. perl随记(1)

    chmod 755 test,改变文件权限,rwx 421 chomp,如果字符串结尾有换行符,chomp 可以去掉它 正则表达式量词:*表示有或无,+表示1或多,?表示0或1 my,局部变量,只在定 ...

  3. 我对GIT的理解

    git是一个版本或项目代码管理工具.能够方便的管理多个开发人员共同协助开发的代码.在git的管理下,每个开发人员都能同时对项目进行开发,开发人员被划分成不同的分支,每个开发人员都能拥有自己的一个或者多 ...

  4. hibernate--OneToOne

    一对一(one to one) 单向关联映射 两个对象是一对一的的关系. 有两种策略可以实现一对一的关联映射 l  主键关联:即让两个对象具有相同的主键值,以表明他们之间的一对一的对应关系;数据库表不 ...

  5. poj 2711 Leapin' Lizards && BZOJ 1066: [SCOI2007]蜥蜴 最大流

    题目链接:http://poj.org/problem?id=2711 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1066 Your p ...

  6. 响应式设计Responsinator工具推荐

    from:http://www.25xt.com/allcode/4066.html 原文推荐了5种,感觉有用的吧就这一种,所以收藏过来. Responsinator工具的好处Responsinato ...

  7. Leetcode#128 Longest Consecutive Sequence

    原题地址 1. 把所有元素都塞到集合里2. 遍历所有元素,对于每个元素,如果集合里没有,就算了,如果有的话,就向左向右拓展,找到最长的连续范围,同时在每次找的时候都把找到的删掉.这样做保证了同样的连续 ...

  8. 玩具装箱 bzoj1010 斜率优化

    斜率优化的题好像都是这样的方程:左边关于j,k的一个(...)/(...)的式子,右边是个只与i有关的可算的数字: 然后把它放到二维坐标轴上,用单调队列维护一个凸壳,O(n)的复杂度: 这道题但是我发 ...

  9. 引擎设计跟踪(九.8) Gizmo helper实现与多国语言

    最近把gizmo helper的绘制做好了. 1.为了复用代码,写了utility来创建sphere, cube, cylinder, plane, ring(line), circle(solid) ...

  10. Codeforces Round #FF (Div. 2)

    又一场中国场,果然注定被虐的场... A,B:都很水,差不多模拟就好了: C题:CF难得的题意简洁, 我们可以预处理出从左到右递增的数列个数, 举个例子:1 3 2 4 5 7 L[I]       ...