Java.Web - Session 随笔

  • 什么Session?

    指用户用一个浏览器,访问某个网站只要不关闭浏览器,不管用户点击多少个超链接,直到用户关闭浏览器,整个这个过程我们称为一次会话。
1
2
3
4
5
6
7
8
9
// 创建session
HttpSession session = request.getSession();
// 设置session属性,属性重名,value会被替换
session.setAttribute("name", "gavin");
session.setAttribute("pwd", "123456");
// 获取session属性的值,返回的是一个object对象
session.getAttribute("name");
// 删除session属性
session.removeAttribute("name");

Session的生命周期,可以去conf/web.xml配置,也可在项目下的web.xml配置,代码里面也可以设置。

1
2
3
4
// 设置一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。
session.setMaxInactiveInterval(100);
// 让session中的所有属性解除绑定
session.invalidate()

  • 服务器为每个浏览器提供单个Session服务的原理:

    1.第一次访问web应用时,会创建一个Session服务,然后给浏览器返回一个cookie里面包含了Session的ID
    2.第二次访问web应用时,cookie里的id会随请求行发给服务器,服务器就能找到ID 对于的Session

  • Session 案例:1. 验证用户合法性;2. 输入验证码的验证;3. 简单的购物车

    【验证码案例】(Java绘图技术)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // 设置浏览器不缓存
    response.setDateHeader("Expires", -1);
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Pragma", "no-cache");
    // 设置浏览器接收图片
    response.setHeader("Content-Type", "image/jpeg");
    // 创建一个图片
    BufferedImage image = new BufferedImage(50, 20, BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, 50, 20);
    g.setColor(Color.WHITE);
    g.setFont(new Font(null, Font.BOLD, 20));
    // 得到随机生成的密码
    String s = getString();
    // 把密码存放在session中,进行验证
    request.getSession().setAttribute("code", s);
    // 把字画在图片上
    g.drawString(getString(), 0, 20);
    // 把图片传给浏览器
    ImageIO.write(image, "jpg", response.getOutputStream());
    ------------------
    private String getString() {
    Random r = new Random();
    String s = "";
    for (int i = 0; i < 4; i++) {
    s += r.nextInt(10);
    }
    return s;
    }
Gavin Liu wechat
欢迎您扫一扫上面的二维码,订阅我的微信公众号!