1:什么是Cookie
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),览器会将Cookie以key/value的形式保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器
2:发送Cookie:
首先我们需要创建Cookie对象,并且写入我们要共享的数据,接下来我们就可以设置Cookie的存活时间(默认单位是秒),最后使用response将Cookie发送到客户端
public void setCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = new Cookie("redisKet", "content");
//设置Maximum Age
cookie.setMaxAge(1000);
// 过期时间s (默认是-1 关闭浏览器失效)
//cookie.setMaxAge(-1);
//设置cookie路径为当前项目路径
cookie.setPath(request.getContextPath());
//cookie.setPath("/");
//添加cookie
response.addCookie(cookie);
}
3:获取Cookie:
使用request获取Cookie数组,然后再对数组进行遍历,最后通过if筛选出你需要的cookie
public void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String rediskt = "";
//获取cookie数组
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
//遍历数组
//for(int i = 0; i<cookies.lengthif(cookies[i].getName().equals("redisKet")){
//System.out.println(cookies[i].getValue());
//}
for (Cookie cookie : cookies) {
if (cookie.getName().equals("redisKet")) {
rediskt = cookie.getValue();
break;
}
}
}
}
4:Cookie编码问题
1:在Cookie是中不能直接传输中文,如果你想要传输中文的话,首先要在你发送Cookie前先使用URL将中文进行编码,然后将编码后的数据发送到客户端
public void setCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String content= "服务器传送的Cookie";
content= URLEncoder.encode(value,"UTF-8");
Cookie cookie = new Cookie("redisKet", content);
//设置Maximum Age
cookie.setMaxAge(1000);
// 过期时间s (默认是-1 关闭浏览器失效)
//cookie.setMaxAge(-1);
//设置cookie路径为当前项目路径
cookie.setPath(request.getContextPath());
//cookie.setPath("/");
//添加cookie
response.addCookie(cookie);
}
2:同理在获取Cookie的时候我们要将获取的数据进行URL解码
public void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String rediskt = "";
//获取cookie数组
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
//遍历数组
//for(int i = 0; i<cookies.lengthif(cookies[i].getName().equals("redisKet")){
//System.out.println(cookies[i].getValue());
//}
for (Cookie cookie : cookies) {
if (cookie.getName().equals("redisKet")) {
rediskt = cookie.getValue();
rediskt = URLDecoder.decode(rediskt,"UTF-8");
break;
}
}
}
}
5:Cookie的有效期
Cookie是保存在客户端的数据,所以如果不做设定,默认情况下是跟着客户端一起消失的,如果设置了setMaxAge(),将会以设置的数值为主,时间到了将会自动消失。
// 过期时间s (默认是-1 关闭浏览器失效)
cookie.setMaxAge(-1);