什么是Session会话
1.Session就是一个接口
2.Session就是会话,他们用来维护一个客户端和服务器之间的关联的一种技术
3.每个客户端都有自己的一个Session会话
4.Session会话中,我们经常用来保护用户登录之后的消息
如何创建Session和获取(id号,是否为新)
1 2 3 4 5 6 7 8 9 10 11
| protected void createOrGetSession(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //创建和获取Session会话对象 HttpSession session = req.getSession();
boolean isNew = session.isNew();
String id = session.getId();
resp.getWriter().write("得到的Session,他的id是"+id+"<br/>"); resp.getWriter().write("这个Session是新创建的,他的id是"+isNew+"<br/>"); }
|
html css js 会热部署
存数据取数据
1 2 3 4 5 6 7 8 9 10 11 12 13
| protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 保存数据 req.getSession().setAttribute("key1","value1"); resp.getWriter().write("已经往Session中保存了数据");
}
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取数据 Object attrbute=req.getSession().getAttribute("key1"); resp.getWriter().write("从Session中获取key1的数据是"+attrbute);
}
|
Session的存活时长
1 2 3 4 5 6 7 8 9 10
| <session-config> <session-timeout>30</session-timeout> </session-config> protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 存活 int maxInactiveInterval=req.getSession().getMaxInactiveInterval(); resp.getWriter().write("Session的默认超时时长"+maxInactiveInterval); //以秒为计数单位 }
|
默认存活时长1800秒
如果说web工程中要修改,可以在web.xml中修改默认修改
session.invalidate();//马上超时
浏览器和Session之间关联的内幕
session会话放到内存中
request.write()返回客户端,返回cookie
session是cookie值
每次创建session会话会创建一个cookie值,JSESSION值一直为是新创建出来的id值
浏览器解析数据,马上创建一个cookie数据
每次请求把session的id值发送给服务器,通过Cookie值找到创建好的Session对象,并返回
表单重复提交–验证码
已经引入架包给服务器,注册界面已生成验证码
点击验证只适用与谷歌,以接入+d=