学习内容:
1.问题引入
①web中发送的请求和响应均是基于HTTP协议。
②HTTP协议是一个无状态的协议:每次请求开启一个新连接,完成请求关闭连接。下一次在发出请求时会开启新的连接,和上一个连接无联系。
实现登录系统时,服务器端不能识别每次请求来自于同一个用户,造成每次请求都需要重新登录。
③实现需求:识别操作是否来自同一个用户。
2.cookie机制
①创建cookie对象
Cookie cookie = new Cookie("Name","value");
②添加cookie对象
request.addCookie(cookie);
③获取cookie
String name = cookie.getName();
String value = cookie.getValue();
3.cookie有效时间
持久化设置方法:setMaxAge(int age)
①默认age<0;会话级cookie(浏览器关闭则消失)。
②age>o;在age秒内有效。
③age==0;命令浏览器删除cookie
4.Session机制
①创建机制
HttpSessionsession = request.getSession();
注意:在执行上面代码时,request对象中没有JSESSIONID这个Cookie服务器端就会创建一个新的Session对象返回,同时创建一个JSESSIONID Cookie回 送到浏览器端如果请求中携带了JSESSIONID的Cookie,根据这个JSESSIONID的值在服务端查找对应的Session对象。
②Session的有效时间
全局配置中,默认时间:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Session的有效时间:
intinterval = session.getMaxInactiveInterval();以秒为单位
修改Session的有效时间:
session.setMaxInactiveInterval(30);
强制Session对象立即失效:
session.invalidate();
③默认session:
默认情况下JSESSIONID Cookie是一个会话级的Cookie,浏览器关闭后会被释放。
可以通过将JSESSIONID Cookie设置为持久化Cookie就能够找到原来的Session对象。