为什么需要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);

20 分种:

其他说明:

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 介绍;的更多相关文章

  1. Http中Cookie和Session介绍

    先介绍下B/S系统的工作的完整过程.首先客户端的浏览器发出请求,服务端的webserver接受到请求后,调用相关请求的页面进行处理,处理完后将结果发送给客户端的浏览器进行显示.只能是浏览器向webse ...

  2. Android下HelloWorld项目的R.java文件介绍

    R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R {     public s ...

  3. 深入Java虚拟机读书笔记第一章Java体系结构介绍

    第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...

  4. java集合介绍(List,Set,Map)

    前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...

  5. Java学习介绍

    Java版本介绍 JavaME:微型版,用于开发小型设备.智能卡.移动终端应用(使用率较低) JavaSE:标准版,用于创建桌面应用(企业用JavaSE创建桌面应用较少) JavaEE:企业版,用于创 ...

  6. Java Session 会话技术

    什么是Java Session? 大图:http://images2017.cnblogs.com/blog/1030087/201712/1030087-20171223235950881-1310 ...

  7. flask中cookie和session介绍

    flask中cookie和session介绍 一.cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.co ...

  8. 流行的9个Java框架介绍: 优点、缺点等等

    流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...

  9. Cookie、Token与Session介绍(非原创)

    文章大纲 一.Cookie介绍二.Token介绍三.Session介绍四.Token.Cookie与Session比较五.参考文章   一.Cookie介绍 1. Cookie是什么 cookie机制 ...

随机推荐

  1. WIN7下USB多点触摸,一次发多个数据包的延迟问题,重要!

    这个问题很常见, 花了差不多一个星期时间来解决.硬件相关的东西太多坑了,而且这些坑不像代码那样可见.   使用混合模式,每次最多报告2个点.如果是5点则需要上报三次. 问题就来了,atmel的CTP最 ...

  2. JPush (极光推送) For Xamarin.Android

    官方教程上讲的是 GCM (Google Cloud Messaging) , 不过 GFW 是 GCM 过不去的坎. 极光推送 JPush 是国内的一个不错的替代方案. JPush 提供的 API ...

  3. jsPlumb插件做一个模仿viso的可拖拉流程图

    前言 这是我第一次写博客,心情还是有点小小的激动!这次主要分享的是用jsPlumb,做一个可以给用户自定义拖拉的流程图,并且可以序列化保存在服务器端. 我在这次的实现上面做得比较粗糙,还有分享我在做j ...

  4. js设置输入框失去光标与光标选中时样式

    输入框样式 <script language="javascript" type="text/javascript"> function glb_s ...

  5. [BZOJ1876][SDOI2009]superGCD(高精度)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1876 分析: 以为辗转相减会TLE呢……但是好像没这个数据……就这么水过去了…… 辗转 ...

  6. 第二节Unity3D开发环境安装(windows系统)

        这一节准备安装开发环境. 1. 首先先下载软件包:http://pan.baidu.com/s/1imYVv  4.2版本2.下载完后,解压会看到两个文件(运行第二个安装包) 3.准备安装,这 ...

  7. 一款轻量级移动web开发框架

    本帖最后由 yangzhu230 于 2013-9-11 00:39 编辑 如果我说要推荐zepto你肯定说“切,这地球人都知道,又一个标题党” 不卖关子,开门见山我推荐的是[百度]的GMU GMU是 ...

  8. codevs 1378选课 树形DP

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ],tr[] ...

  9. knockout——官网demo

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Day1 login

    使用流程: 1.程序启动后,显示欢迎信息,提示用户输入用户名: 2.判断用户是否存在,不存在则提示重新输入,或者关闭程序:客户存在则提示客户输入密码: 3.判断密码是否正确,如果不正确则提示用户重新输 ...