- 什么是会话
// 创建session
HttpSession session = request.getSession();
// 设置session属性,属性
重名,value会被替换
session.
setAttribute("name", "gavin");
session.
setAttribute("pwd", "123456");
// 获取session属性的值,返回的是一个object对象
session
.getAttribute("
name
");
// 删除session属性
session.remove
Attribute("name");
session的生命周期,可以去conf/web.xml配置,也可在项目下的web.xml配置,代码里面也可以设置。
// 设置一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。
session.setMaxInactiveInterval(100);
// 让session中的所有属性解除绑定
session.invalidate()
服务器为每个浏览器提供单个session服务的原理:
第一次访问web应用时,会创建一个session服务,然后给浏览器返回一个cookie里面包含了session的ID
第二次访问web应用时,cookie里的id会随请求行发给服务器,服务器就能找到ID 对于的session
Session 案例:1. 验证用户合法性;2. 输入验证码的验证;3. 简单的购物车
【验证码案例】-Java绘图技术、
// 设置浏览器不缓存
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;
}