#笔记#圣思园 JavaWeb 第34讲——Session深度解析

1.Web服务器跟踪客户状态,有四种方法

——建立含有跟踪数据的隐藏字段:type=“hidden”

——重写包含额外参数的URL:使用?后面加参数

——使用持续的Cookie

——使用Servlet API中的Session机制

2.Session概念

Session用于跟踪客户状态。

Session指的是,在一段时间内,单个客户与Web服务器的一连串相关的交互过程

在一个Session中,客户可能会多次请求访问同一个网页,也有可能请求访问各种不同的服务器资源

Session运行机制

  • 当一个Session开始时,Servlet容器将创建一个HttpSession(接口)对象,在HttpSession对象中,可以存放客户状态的信息(如购物车)
  • Servlet容器为HttpSession分配一个唯一的标识符,成为Session ID。Servlet容器把Session ID作为Cookie,保存在客户的浏览器中
  • 每次客户发出HTTP请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取客户的状态信息

3.HttpSession API

HttpSession是一个接口,主要方法如下:

getId():返回String类型的Session的ID

用一个浏览器访问多次结果都不变,在这个浏览器中新建标签进行访问,或者使用这个浏览器再新建窗口,结果也不变。使用另一个浏览器访问,结果发生变化。

在一个浏览器中打开多个标签页,新建多个窗口,是属于同一个session(会话)。

invalidate():使当前的Session失效,Servlet容器会释放HttpSession对象占用的资源

isNew():判断是否是新创建的Session,如果是,返回true,否则返回false

setMaxInactiveInterval():设定一个Session可以处于不活动状态的最大时间间隔,单位是秒。如果超过这个时间,Session自动失效。如果设置为负数,表示不限制Session处于不活动状态的时间

4.Session生命周期

当用户第一次访问Web应用中支持Session的某个网页时,就会开始一个新的Session

接下来当客户浏览这个Web应用的不同网页时,始终处于同一个Session中

默认情况下,JSP网页都是支持Session的,也可以通过以下语句显示声明支持Session:<%@ page session = "true" %>

以下情况中,Session将结束生命周期,Servlet容器将Session占用的资源释放:

——客户端关闭浏览器

——Session过期

——服务器调用了HttpSession的invalidate()方法

5.JSP文件中控制Session

6.JSP文件中设置Session范围内的共享数据

7.使用Session传建一个简单的邮件系统

mailLogin.jsp


mailCheck.jsp


mailLogout.jsp


8.Session在实际开发过程中的使用

用户分为普通用户(查看)和系统管理员(查看与修改).普通用户名:zhangsan,密码:123.管理员用户名:lisi,密码:456.用户填错信息后,请求转发到登陆页面,把信息回填到页面上

login.jsp


UserLoginServlet.java


User.java

用重定向实现:

UserLoginServlet.java

login.jsp


接下来处理用户操作的权限

登陆成功后转发到index.jsp页面


index.jsp:如果是管理员,那么query和update都能显示。如果是普通用户,那么只显示query


QueryServlet.java:判断用户是否直接通过地址栏进行访问,使用session判断,如果session为空,说明用户信息没有存放到session中,此时应该重定向到登陆页面


UpdateServlet.java


9.使用过滤器,把获取session对象,判断session对象是否存在的部分代码,写在一个类里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值