HttpSession概述
- HttpSession是由javaweb提供的,用来会话跟踪的类,session是服务器端对象,保存在服务器端
- HttpSession是Servlet三大域对象之一,(request,session,application(ServletContext)),所以她也有setAttribute(),getAttribute,removeAttribute()
- HttpSession底层依赖Cookie,或是URl重写,
HttpSession的作用
- 会话范围,会话范围是某个用户从首次访问服务器开始,到该用户关闭浏览器结束,
- 会话:一个用户对服务器的多次连贯性请求,所谓连贯性请求,就是该用户多次请求,中间没有关闭浏览器
- 服务器会为每个客户端创造一个session对象,session就好比客户端在服务器端的账户,他们被服务器保存到一个Map中,这个Map被称之为session缓存
- Servlet中得到session对象:HttpSession session = request.getsession();
- JSP中得到session对象:session是jsp内置对象之下,不用创建就可以使用
- session域相关方法:
void setAttibute(String name,Object value)
Object getAttibute(String name)
案例演示(演示保存用户登录信息)
- 案例相关页面和Servlet
login.jsp:登录页面
succ1.jsp:只有登录成功才能访问的页面
succ.jsp:只有登录成功才能访问的页面
LoginServlet:校验用户是否登录成功
- 各页面和Servlet内容
login.jsp:提供登录表单,提交表单请求LoginServlet
LoginServlet:获取请求参数,校验用户是否登录成功
失败:保存错误信息到request域中,转发到login.jsp(login.jsp显示request域中的错误信息)
成功:保存用户信息到session域中,重定向到succ1.jsp页面,显示session域中的信息
succ1.jsp:从session域中获取用户信息,如果不存在,显示“你还没有登录”,存在则显示用户信息
succ2.jsp:从session域中获取用户信息,如果不存在,显示“你还没有登录”,存在则显示用户信息
注:只要用户没有关闭浏览器,session就一直存在,那么保存在session中的用户信息也一直存在,那么用户访问succ1和
succ2就会通过
HttpSession原理
银行卡是一张卡,卡里面没有钱,卡里面只有一个id,id是唯一标识的意思,账户的唯一标识就是卡号,卡里面只有卡号,仪器一扫,扫出来的是卡号,然后拿卡号去和数据库里面的账号进行一匹配,账号找着了,账号里面的余额就找着了
人(客户端)—卡(Cookie)—是一个账户(账号)(session)——账号就是一个id,id是唯一标识(session id)——数据库(服务器)
银行账户是一个session