JSP Session管理

JSP Session管理

  本篇讲述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中。

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

<br>JSP Login.jsp <br><br><br><br><%@ page contentType="text/html;charset=GB2312" %><br><br><html><br><head><br><title>CH5 - Login.jsp</title><br></head><br><body><br><br><h2>javax.servlet.http.HttpSession - session 对象</h2> <br><form action=Login.jsp method="POST" ><br>Login Name: <input type="text" name="Name"><br><br>Login Password: <input type="text" name="Password" ><br><br><input type="submit" value="Send"><br><br><form><br><br><% if (request.getParameter("Name") != null &&<br> request.getParameter("Password") != null) { <br>String Name = request.getParameter("Name");<br>String Password = request.getParameter("Password");<br><br>if (Name.equals("mike") && Password.equals("1234")) { <br>session.setAttribute("Login", "OK");<br>response.sendRedirect("Member.jsp");<br>}<br>else { <br>out.println("登录错误,请输入正确名称"); <br>} <br>}<br>%><br><br></body><br></html> <br><br><br>JSP Member.jsp <br><br><br><br><%@ page contentType="text/html;charset=GB2312" %><br><br><html><br><head><br><title>CH5 - Member.jsp</title><br></head><br><body><br><br><h2>javax.servlet.http.HttpSession - session 对象</h2> <br><% <br>String Login = (String)session.getAttribute("Login");<br><br>if (Login != null && Login.equals("OK")) { <br>out.println("欢迎进入");<br>session.invalidate(); <br>} <br>else { <br>out.println("请先登录,谢谢") ;<br>out.println("<br>经过五秒之后,网页会自动返回Login.jsp");<br><br>response.setHeader("Refresh","5;URL=Login.jsp"); <br>}<br>%><br><br></body><br></html> <br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值