前言
这一节主要讲会话跟踪技术
1.补充
为了提交Gitee我修改了模块的目录,就是移动了模块,导致模块不是Maven了,可以在右边的Maven小工具,点加号,把模块重新添加为Maven
2. 概述
3. Cookie
3.1 基本使用
//发送cookie
//1.创建cookie对象
Cookie cookie=new Cookie("username","zs");
//2.发送
response.addCookie(cookie);
怎么看cookie来的数据呢,
点设置
点第三个
搜localhost
或者用开发者模式也可以
//获取cookie
//1.获取cookie数组
Cookie[] cookies = request.getCookies();
//2.遍历数组
for (Cookie cookie : cookies) {
//3.获取数据
String name = cookie.getName();
if("username".equals(name)){
String value = cookie.getValue();//但我只想要username和zs的cookie
System.out.println(name+":"+value);
break;
}
}
先访问aServlet,这样浏览器就有cookie了,在访问bCookie
这样的话,一次会话(一个浏览器)两次请求(两个窗口)之间共享了数据
对于我们,我们只需要干,发送和获取
3.2 原理
在访问bServlet,浏览器里面已经有cookie信息了,那么访问的时候就会把cookie里面的数据携带到bServlet里面的资源里面去
这个就是cookie的请求头,而且cookie对应数据不止一个,因为浏览器会把这个域名下的locallhost下的所有cookie都带过去
3.3 使用细节
这个的意思就是你使用aServlet,然后关闭浏览器,cookie就不见了。在打开bServlet,就不会有输出了
但是我们记住密码,肯定有记住一个月啊,要多记住一些时间,就不能浏览器关闭,cookie就不见了
cookie.setMaxAge(60*60*24*7);
这样的话,就算我们关闭浏览器也不会删除cookie了,再次点开bServlet也可以访问cookie了
现在我们演示一下存储中文
Cookie cookie=new Cookie("username","张三");
这样直接就报错了
String value="张三";
//URL编码
value = URLEncoder.encode(value, "UTF-8");
System.out.println(value);
Cookie cookie = new Cookie("username", value);
这样bServlet获取的数据就是URL编码的数据了
这样的话,我们需要解码
value = URLDecoder.decode(value, "UTF-8");
4. Session
4.1 基本使用
//存储到Session中
//1.获取session对象
HttpSession session = request.g