前言
cookie与session;编写Cookie工具类;编写Json转换工具类;设置Cookie与清除Cookie。
文章目录
cookie与session
1.1 cookie
- 以键值对的形式存储信息在浏览器。
- cookie不能跨域,当前及其父级域名可以取值 Domain。
- cookie可以设置有效期 Expires/Max-Age。
- cookie可以设置path path
1.2 seesion
- 基于服务器内存的缓存(非持久化),可保存请求会话。
- 每个session通过sessionid来区分不同请求。
- session可设置过期时间。
- session也是以键值对形式存在的。
1.3 HttpSession
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
//@Controller
@ApiIgnore
@RestController
public class HelloController {
final static Logger logger = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/setSession")
public Object setSession(HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("userInfo", "new user");
session.setMaxInactiveInterval(3600);
session.getAttribute("userInfo");
// session.removeAttribute("userInfo");
return "ok";
}
}
浏览器访问setSession,F12在网络中的控制台可以看到JSESSIONID。
浏览器访问setSession,F12在网络中的报文头可以看到JSESSIONID以键值对存放在Cookie中。
二、编写Cookie工具类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
/**
*
* @Title: CookieUtils.java
* @Package com.imooc.utils
* @Description: Cookie 工具类
* Copyright: Copyright (c)
* Company: www.imooc.com
*
* @author imooc
* @version V1.0
*/
public final class CookieUtils {
final static Logger logger = LoggerFactory.getLogger(CookieUtils.class);
/**
*
* @Description: 得到Cookie的值, 不编码
* @param request
* @param cookieName
* @return
*/
public static String getCookieValue(HttpServletRequest request, String cookieName) {
return getCookieValue(request, cookieName, false);
}
/**
*
* @Description: 得到Cookie的值
* @param request
* @param cookieName
* @param isDecoder
* @return
*/
public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
Cookie[] cookieList = request.getCookies();
if (cookieList == null || cookieName == null) {
return null;
}
String retValue = null;
try {
for (int i = 0; i < cookieList.length; i++) {
if (cookieList[i].getName(