1.先在web环境下任意地方获取request,response,session,备用
ServletUtils.java
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* 获取request
*/
public static HttpServletRequest getRequest()
{
return getRequestAttributes().getRequest();
}
/**
* 获取response
*/
public static HttpServletResponse getResponse()
{
return getRequestAttributes().getResponse();
}
/**
* 获取session
*/
public static HttpSession getSession()
{
return getRequest().getSession();
}
/**
* 获取web上下文
*/
public static ServletRequestAttributes getRequestAttributes()
{
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return (ServletRequestAttributes) attributes;
}
2.在(父项目)java中设置Cookie
Cookie cookie = new Cookie("da-shrioCookie","123456");
cookie.setDomain("baidu.com");//设置为父域名
cookie.setPath("/");//当前系统
cookie.setMaxAge(10 * 24 * 60 * 60); //10天
cookie.setHttpOnly(true);
ServletUtils.getResponse().addCookie(cookie);
3.在(子项目中)java中获取Cookie中的值
HttpServletRequest request = ServletUtils.getRequest();
Cookie[] cookies = request.getCookies();
if (null != cookies) {
for (Cookie cookie : cookies) {
System.out.println(cookie.getName()+",val="+cookie.getValue());
}
}
4.解决的问题:
实现模拟共享session的问题,多个子域名下从cookie中获取父域cookie设置的值,比如用户信息等。