一.获取
方式一: 使用RequestContextHolder,可在任何地方使用
demo:
/**
* 获取当前登录租户
*
* @return
*/
@RequestMapping(value = "/getCurrentLoginTenantCode", method = RequestMethod.GET)
public String getCurrentLoginTenantCode() {
RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String tenantCode = request.getHeader("tenantName");
logger.info("selectTenant ############################################## Header tenantName=" + tenantCode);
return tenantCode;
}
方式二:通过HttpServletRequest传参获取,只在controller层接口处使用
参考连接:https://blog.csdn.net/m0_74352571/article/details/136096720 ,写的不错,一定要看看!!!
demo:
@RequestMapping("/getCookieSessionHeader")
public String getCookieSessionHeader(HttpServletRequest request) {
//获取cookie
Cookie[] cookies = request.getCookies();
if(cookies != null) {
Arrays.stream(cookies).forEach(cookie -> {
System.out.println(cookie.getName() + ":" + cookie.getValue());
});
}
//获取session
// 服务器中每个会话都会创建一个Session
HttpSession session = request.getSession();// getSession根据Sessionid来获取对应的Session对象默认值为true
// 当传入true时,如果请求中已经存在一个会话(即Session不为空),就返回该会话;如果没有会话(即Session为空),则创建一个新的会话并返回。
// 当传入false时,如果请求中已经存在一个会话,就返回该会话;如果没有会话,则返回 null。
String name = (String)session.getAttribute("name");
//获取header
String userAgent = request.getHeader("User-Agent");
return "seccess!!!";
}
二.设置
方式一: 使用RequestContextHolder,可在任何地方使用
demo
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Enumeration;
@RestController
public class ContextController {
@RequestMapping("/setContext")
public String setContext() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
// 设置请求头
request.setAttribute("headerName", "headerValue");
// 设置 Session
HttpSession session = request.getSession();
session.setAttribute("sessionName", "sessionValue");
// 设置 Cookie
Cookie cookie = new Cookie("cookieName", "cookieValue");
cookie.setMaxAge(3600); // 设置有效时间
attributes.getResponse().addCookie(cookie);
}
return "Context set";
}
}
方式二:通过HttpServletRequest和HttpServletResponse传参获取,只在controller层接口处使用
demo:
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HeaderController {
@GetMapping("/setHeaders")
public void setHeaders(HttpServletResponse response, HttpServletRequest request) {
// 设置响应头
response.setHeader("Custom-Header", "HeaderValue");
// 设置Cookie
Cookie cookie = new Cookie("CookieName", "CookieValue");
cookie.setMaxAge(3600); // 设置有效时间为1小时
response.addCookie(cookie);
// 设置Session
HttpSession session = request.getSession();
session.setAttribute("SessionKey", "SessionValue");
}
}