Java Web之session会话

一、session会话简介

将数据存储在服务器端,并且为这组数据标示一个编号,只将编号发回给客户端。当客户端向服务器发送请求时只需要将这个编号发过来,服务器端按照这个编号找到对应的数据进行管理的这种模式叫做Session——会话。

二、session的特点和作用

session用于存储一次会话的多次请求的数据,存在服务器端;session可以存储任意类型,任意大小的数据。

三、session的实现原理

浏览器第一次访问服务器时,服务器会为该客户端分配一块对象空间,并且使用不同的SID来进行标识,该标识SID会随着响应发回到客户端,且被保存在内存中。当同一个客户端再次发送请求时,标识也会被同时发送到服务器端,而服务器判断要使用哪一个Session对象内的数据时,就会根据客户端发来的这个SID来进行查找。

四、session的功能

package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * session对象
 */
@WebServlet("/sessionDemo")
public class SessionDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //HttpSession getSession():获取session对象
        HttpSession session = request.getSession();

        //void setAttribute(String name,Object value):存储数据
        session.setAttribute("msg", "hello,session");

        //Object getAttribute(String name):通过键获取值
        String msg = (String) session.getAttribute("msg");
        System.out.println(msg);

        //void removeAttribute(String name):通过键移除键值对
        session.removeAttribute("msg");
        msg = (String) session.getAttribute("msg");
        System.out.println(msg);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

五、session的注意点

1、session的持久化

当客户端关闭后,服务器不关闭,默认情况下,两次获取session不是同一个,如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);

2、session的活化和钝化

session的钝化:在服务器正常关闭之前,将session对象系列化到硬盘上;

session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。

3、session的销毁

session的销毁的情况有如下三种:

  • 服务器关闭,session对象销毁;
  • session对象调用invalidate()时,session对象销毁;
  • session默认失效时间 30分钟
<!-- 设置Session的有效时间:以分钟为单位 -->
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

六、session的应用案例

1、验证码的获取

2、用户登录验证

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值