chen888的gravatar头像
chen888 2017-09-26 11:30:23

jsp+servlet登录demo例子之设置Session有效时间的三种方式

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

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

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

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

下面介绍session声明周期

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

  1 创建

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

  2 活动

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

  3 销毁

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

在Session中保存用户信息,不可能总是有效,所以有设置Session的有效时间,如下:

(1)在主页面或者公共页面中加入:

    HttpSession session=request.getSession(true);  

    session.setMaxInactiveInterval(900);
   参数900单位是秒,即在没有活动15分钟后,session将失效。
    这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。
(2)比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<session-config>
<session-timeout>15</session-timeout>
</session-config>

这里的15也就是15分钟失效.
(3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中
找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。

需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:
(1)-->(2)--->(3)

 

先看效果图:

jsp+servlet登录demo例子之设置Session有效时间的三种方式jsp+servlet登录demo例子之设置Session有效时间的三种方式

这样,当session过了有效时间,用户点击其他操作时,session中就没有用户的相应信息,用户再次进入主页或登录页面的时候,就会显示用户没有登录。

jsp+servlet登录demo例子之设置Session有效时间的三种方式jsp+servlet登录demo例子之设置Session有效时间的三种方式

项目访问地址:http://localhost:8080/jsp-servlet/login.jsp

项目结构图:

jsp+servlet登录demo例子之设置Session有效时间的三种方式

主要代码:

jsp+servlet登录demo例子之设置Session有效时间的三种方式

以上就是本登录demo例子的全部内容,希望对大家的学习有所帮助。

适合初学者学习。。


打赏

已有2人打赏

最代码客服的gravatar头像 最代码官方的gravatar头像

文件名:jsp-servlet.zip,文件大小:828.112K 下载
  • /
      • /jsp-servlet
        • /jsp-servlet/.classpath
        • /jsp-servlet/.project
          • /jsp-servlet/.settings
            • /jsp-servlet/.settings/.jsdtscope
            • /jsp-servlet/.settings/org.eclipse.jdt.core.prefs
            • /jsp-servlet/.settings/org.eclipse.wst.common.component
            • /jsp-servlet/.settings/org.eclipse.wst.common.project.facet.core.xml
            • /jsp-servlet/.settings/org.eclipse.wst.jsdt.ui.superType.container
            • /jsp-servlet/.settings/org.eclipse.wst.jsdt.ui.superType.name
最代码最近下载分享源代码列表最近下载
wuge123  LV8 2023年6月21日
斧头帮副帮主  LV5 2023年3月30日
xixiwoaini  LV3 2023年3月19日
wanglinddad  LV55 2021年10月14日
梦奇渊  LV7 2021年6月22日
1420568818  LV7 2021年5月28日
xquser  LV9 2020年5月20日
zhangxuefu  LV11 2020年4月16日
812795769  LV15 2020年4月10日
李白qwe  LV2 2019年12月17日
最代码最近浏览分享源代码列表最近浏览
一起加油  LV5 2024年3月5日
asddwh  LV13 2023年12月29日
xuhaoa  LV2 2023年11月10日
wuge123  LV8 2023年6月21日
斧头帮副帮主  LV5 2023年3月30日
xixiwoaini  LV3 2023年3月19日
无名氏111  LV33 2022年10月16日
zjmyth 2021年12月2日
暂无贡献等级
second  LV5 2021年10月27日
wanglinddad  LV55 2021年10月14日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友