了解java中的session

 更新时间:2017年11月24日 09:14:41   作者:小周  
这篇文章主要介绍了了解java中的session的相关问题,什么是session,session怎么用等,具有一定参考价值,需要的朋友可以了解下。

先看看对session的一个比较好的阐述:

session就是一个会话 ,在浏览器不关闭的前提下,可以保存用户的信息,就是象一个临时的容器,来存放这些临时的东西。比如登录的保存用户信息从一个网页跳转到另一个网页,用户信息就可以用session保存网站购物车可以用session实现

为什么需要Session

这是为了填补 Http 协议的局限,当用户去访问一个页面,服务端返回完了请求(如,你访问完一个网页,这个页面将页面内容,界面UI呈现给你),就算是结束了,就断开了,服务端不再去追踪客户端(浏览器)的任务状态,所以 Http 的每次请求都是独立的,非连续的,Http 也称为无状态协议。那我们如果想在一个场合,或是一个特定过程,操作些用户自己的数据,就会很麻烦,甚至很危险。比如你可以通过 url 传参数的方式与服务器交互,并实现操作;

Session(会话) 的出现就解决了这样的问题,Session是创建在服务端的,在一定的时间后,由服务端来消毁。在这段时间,客户端与服务端的会话就会保持着,客户端就会利用服务端上的 Session 信息来找到或操作一些数据;

如何使用 Session

Java Api 只给我们一种方式来 获取 当前会话相关的 session:

HttpSession session = request.getSession();
//或
HttpSession session = request.getSession(boolean);

设置值:

session.setAttribute("key", 值对象);

获取值:

对象类型 obj = (对象类型)session.getAttribute("key");
//如
String name = (String)session.getAttribute("key");

删除 session 指定属性健:

session.removeAttribute("key");

清除所有的session,使当前 session 完全失效:

session.invalidate();

session超时周期设置

1. Tomcat 安装位置 conf/web.xml :

<session-config>
  <session-timeout>30</session-timeout>
 </session-config>

30分种

2. Tomcat 安装位置 conf/server.xml :

<Context path="/test" docBase="/test" 
  defaultSessionTimeOut="3600" isWARExpanded="true" 
  isWARValidated="false" isInvokerEnabled="true" 
  isWorkDirPersistent="false"/>

单位为 秒

3. Java 代码设置:

HttpSession session = request.getSession();
session.setMaxInactiveInterval(1200);

0 分种:

其他说明:

1. session 过期情况:

1>. 客户端浏览器关闭:

2>. session 会话过期;

3>. 客户端会话调用了 .invalidate();

2. 浏览器关闭与session是否还在;

当客户端浏览器关闭后,session 在服务端还是会存在一定时间的,只是当浏览器器再次打开时,就会生成一个新的 session ,浏览器通过生成的 sessionid 属性来 匹配服务端的 session; 那上次的session 虽然还在,但是就访问不到了;

3. <% @ page session="false" %> 是什么情况?:

这句话的意思是,当前不能使用 session, 但是 页面 session 还是可以创建的;

4. session 在什么时候 被创建:

在 程序 调用 HttpServletRequest.getSession(true) 时创建;如果 页面没有使用 <%@ page session="false"%> 时,在 jsp 页面编译成 Servlet 时,会自动 加上 HttpSession session = HttpServletRequest.getSession(true);

总结

以上就是本文关于了解java中的session的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • Flask接口如何返回JSON格式数据自动解析

    Flask接口如何返回JSON格式数据自动解析

    这篇文章主要介绍了Flask接口如何返回JSON格式数据自动解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • SSM Mapper文件查询出返回数据查不到个别字段的问题

    SSM Mapper文件查询出返回数据查不到个别字段的问题

    这篇文章主要介绍了SSM Mapper文件查询出返回数据查不到个别字段的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • MybatisPlus保存、读取MySQL中的json字段失败问题及解决

    MybatisPlus保存、读取MySQL中的json字段失败问题及解决

    这篇文章主要介绍了MybatisPlus保存、读取MySQL中的json字段失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java获取当前时间戳案例详解

    Java获取当前时间戳案例详解

    这篇文章主要介绍了Java获取当前时间戳案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 解读线程池-Executors的newSingleThreadExecutor和newFixedThreadPool(1)区别

    解读线程池-Executors的newSingleThreadExecutor和newFixedThreadPool(1

    这篇文章主要介绍了解读线程池-Executors的newSingleThreadExecutor和newFixedThreadPool(1)区别,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 详解maven的install的作用

    详解maven的install的作用

    这篇文章主要介绍了详解maven的install的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 在SpringBoot中该如何配置拦截器

    在SpringBoot中该如何配置拦截器

    今天给大家带来的是关于SpringBoot的相关知识,文章围绕在SpringBoot中该如何配置拦截器展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Spring Data Jpa框架最佳实践示例

    Spring Data Jpa框架最佳实践示例

    这篇文章主要为大家介绍了Spring Data Jpa框架最佳实践示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-02-02
  • Java利用三目运算符比较三个数字的大小

    Java利用三目运算符比较三个数字的大小

    今天小编就为大家分享一篇关于Java利用三目运算符比较三个数字的大小,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Spring 中的InitializingBean使用示例

    Spring 中的InitializingBean使用示例

    InitializingBean 是 Spring 框架中的一个接口,用于在 Spring 容器中初始化 bean 时执行特定的初始化逻辑,这篇文章主要介绍了Spring 中的InitializingBean使用示例,需要的朋友可以参考下
    2024-08-08

最新评论