• 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中。

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

  • 相关阅读:
    【Spring-MVC】
    【多线程】线程池关闭
    【DDD】基于事件驱动EDA -- 待完成
    【DDD】编码实战
    【Elastic Search】01- 原理
    【DDD】基于DDD的分层设计
    【DDD】Thoughtworks笔记(编码样例) -- 未完成
    【DDD】Thoughtworks笔记(目录划分、异常设计)
    平方和求余
    Factoring a Polynomial
  • 原文地址:https://www.cnblogs.com/xing901022/p/4355649.html
Copyright © 2020-2023  润新知