session会话

  1. 1. 什么是Session会话
  2. 2. 如何创建Session和获取(id号,是否为新)
  3. 3. 存数据取数据
  4. 4. Session的存活时长
  5. 5. 浏览器和Session之间关联的内幕
  6. 6. 表单重复提交–验证码

什么是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=