文档章节

JavaWeb Item11: Session会话管理

_
 _Roger_
发布于 2016/01/26 12:19
字数 529
阅读 26
收藏 1

一、Session简单介绍

  在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

二、Session和Cookie的主要区别

  • Cookie是把用户的数据写给用户的浏览器。

  • Session技术把用户的数据写到用户独占的session中。

  • Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

三、session实现原理

3.1、服务器是如何实现一个session为一个用户浏览器服务的?

  服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。

    第一次访问时,服务器会创建一个新的session,并且把session的Id以cookie的形式发送给客户端浏览器。

四、浏览器禁用Cookie后的session处理

解决方案:URL重写

  • response.encodeRedirectURL(java.lang.String url) 用于对sendRedirect方法后的url地址进行重写。 

  • response.encodeURL(java.lang.String url)用于对表单action和超链接的url地址进行重写

eg:

<!--修改前:-->
<a href=“maillogin.jsp“> 
<!--修改后:--> 
<a href=“<%=response.encodeURL(“maillogin.jsp“)%>“>

五、session对象的创建和销毁时机

创建:利用session.isNew()判断session是不是新创建的。

手动销毁:利用session.invalidate()

session对象默认30分钟没有使用,则服务器会自动销毁session,在web.xml文件中可以手工配置session的失效时间。

<!-- 设置Session的有效时间:以分钟为单位-->
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>


本文转载自:http://www.cnblogs.com/xdp-gacl/tag/JavaWeb%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/

共有 人打赏支持
_
粉丝 29
博文 82
码字总数 39915
作品 0
武汉
在Java开源王国中自由翱翔

在如今的Java领域,各种新技术,新工具层出不穷,一方面,每一种技术都会不停的升级换代,另一方面,还会不断涌现出新的技术和工具。Java世界就像小时候玩的万花筒,尽管实质上只是由几个普通...

孙卫琴
2007/02/10
0
0
JavaWeb Item10: Cookie会话管理

一、会话的概念   会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。   有状态会话:一个同学来过教室,下次再来...

_Roger_
2016/01/26
18
0
javaweb如何模块化

把一个项目分成多个模块,各模块应该打成什么包呢?jar?对于spring+mybatis+springmvc整合的项目来说,如果打成jar包,应该只能将模块写到service层,不能到控制器,因为当有多个带有控制器...

眼镜遮住了眼
2016/12/27
574
8
JavaWeb基础(六)-Cookie和Session

1.Cookie和Session 在JavaWeb基础(五)中,我们分享了.、、、、。 今天我主要来分享下Cookie和Session, Cookie和Session使用起来其实很简单, 主要用来。先说下我这篇博客会分享的内容. 、、、、...

sixleaves
08/20
0
0
JavaWeb中的Session、SessionListener、在线人数统计

JavaWeb中的Session 在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话。 正在装载数据…… Session的创建(代表会话周期的开始):第一次调用request.getSession()方法时,...

雪中漫步
2010/03/29
0
1

没有更多内容

加载失败,请刷新页面

加载更多

LINUX中如何查看某个端口是否被占用(转发)

LINUX中如何查看某个端口是否被占用 之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep 33...

覃大光
37分钟前
0
0
JBolt 1.5.0新版发布,升级到支持最新版JFinal和Jetty,实现了在线更新插件功能

JBolt是一个JFinal极速开发框架 定制版IDE插件 目前仅有Eclipse插件版,Idea插件版正在开发中。 JBolt的详细使用教程请移步到这里 =====版本1.5.0 更新内容 2018年10月13日10:41:52===== 注意...

山东-小木
40分钟前
0
0
laravel 微信支付

1.composer加载laravel微信支付第三方文件 composer require "overtrue/laravel-wechat:~4.0" composer require simplesoftwareio/simple-qrcode 1.3.* //composer生成二维码文件 2.改confi......

vio小黑
53分钟前
1
0
学习设计模式——抽象工厂模式

1. 认识抽象工厂模式 1. 定义:提供一个创建一系列相关或互相依赖的对象的接口,而无需指定它们具体的类。 2. 组成结构: AbstractFactory:抽象工厂类,定义创建一系列对象的操作接口 Fact...

江左煤郎
53分钟前
2
0
ES6的let块级作用域和变量不可提升导致一个比较容易出现的错误

今天在写NodeJS代码的时候出现一个变量一直提示未定义,简化后的代码如下: let param = 1;{ console.log(param);} 就在想,不至于啊。不是继承上层的声明吗? 继续看下去,发现原来...

MKjy
59分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部