session是在服务器端的记录用户状态的技术。
- session的结构可以简单的理解为一种map结构
- 当浏览器访问服务器的时候,服务器会为每一个用户创建一个session对象(HttpSession)这个对象具有唯一的sessionId,并且在默认的情况下,会使用cookie技术,将这个sessionId发送给浏览器保存起来(只是发送sessionId,session其他的数据都是放在服务器中 ,服务器通过sessionId查找对应的session对象。通过这种方式就可以保存用户多次操作的中间结果)
- session常用的方法
- 创建session
request.getSession();
request.getSession(boolean flag)
这两个方法的差别
getSession()==getSession(true)
如果为true 服务器先去检查请求中是否有sessinId,如果没有就创建一个session对象 如果有,会根据sessionId查找对应的seesion对象,如果没有这个对象 就创建,如果有,就返回;
如果为false 服务器先去检查请求中是否有sessinId,如果没有就返回null 如果有,会根据sessionId查找对应的seesion对象,如果没有这个对象 就返回null,如果有,就返回;
- 设置属性
setAttribute(String key,String value); - 得到属性
getAttribute(String key) - 移除属性
removeAttribute(String key) - 移除session
invalidate()
- 创建session
- 常用的情景
- 登陆检查
- 保存数据
- 跨请求传递数据
- 验证码的校验
利用session技术来来实现一个验证码的校验
实现的简单情景
默认用户名为abc ,输入验证码和用户名 如果正确。跳转到成功页面,如果不正确,跳转到错误页面
代码https://gitee.com/LiuXiaoChengLZW/javawebTest.git