为什么学习使用session技术?
因为session可以解决同一个请求用户不同的数据共享问题。
说白了就是,张三和李四同时访问一个重定向响应的servlet,但两者需要跳转保存的数据是不同的,所以就需要session来作为区分.确保张三发送请求和收到的响应是只对张三而不对李四,所以session的作用也就是做个标识和存储专属于他们是数据
通俗的理解就是,我们去超市购物,寄存我们的东西,这时候超市的寄存柜会给我们一个小票纸,我们使用的是同一个存储柜,但是存储我们物品的柜子是专属我们的,而这个小票纸可以理解为session,session就是一个属于我们独特的存储空间,小票纸的ID是独一无二的,所以session的id也是独一无二的
Session 技术是依赖 Cookie 技术的 服务器端 的数据存储技术。
由服务器端进行创建每个用户独立拥有一个 session默认存储时间为30分钟。
session 是以接口的形似存在的
标识用户的跨多个页面请求或对Web站点多次访问,同时存储有关该用户信息
1. Session, 会话
2. 用于在服务器端保存用户的相关信息, 在跨页面访问时记录用户数据
3. Session的跟踪机制可以通过Cookie来实现,
>3.1服务器端在创建Session后, 会向客户端发送一个叫JSESSIONID的Cookie,
>3.2客户端浏览器存储该Cookie. 值是一个唯一的标识也就是session.
>3.3凭借两者相对应从而实现功能
4. Session的生命周期:
> 创建: 客户端第一次访问服务器时被创建;
> 不可用的情况:
-1 客户端丢失JSESSIONID
- 2 服务器关闭
- 3 到达最大不活动时间
- 4 调用invalidate方法
session.invalidate();//立马删除
5.设置session的有效期有三种方式
- session.setMaxInactiveInterval(int seconds); ,
- 在当前程序的web.xml中配置session-config ,
- 在Tomcat的/conf/web.xml中配置session-config 。
优先级:Servlet中API设置 > 程序/web.xml设置 > Tomcat/conf/web.xml设置
强制销毁sessionsession.invalidata(); ×正确答案:session.invalidate();。
session默认的过期时间是30分钟, 在tomcat的web.xml中有配置可以在项目的web.xml中配置修改。一旦修改,所有的session的过期时间就对应同步
WEB.XML配置演示
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>session</servlet-name>
<servlet-class>com.linl.test.Session</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>session</servlet-name>
<url-pattern>/session</url-pattern>
</servlet-mapping>
<!--设置session 存在时间 单位:分钟-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>