关于Cookie的使用

创建一个Cookie

Student student = new Student;//需要放入Cookie中的信息
ObjectMapper objectMapper = new ObjectMapper();//首先new一个ObjectMapper
String st= objectMapper.writeValueAsString(student);//先将student转换一下
st = URLEncoder.encode(st);//这里是转码
Cookie cookie = new Cookie("st",st);//将转好码的Student放进Cookie中
//cookie.setDomain(".hhedu.gov.cn");  //正式环境需要加上
cookie.setPath("/");//只有在网址的根目录下才可以读取该Cookie
cookie.setMaxAge(24*3600);//Cookie存在的时间
res.addCookie(cookie);//将Cookie添加上去
size字段 :此cookie大小。
http字段 :cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie
secure 字段 :设置是否只能通过https来传递此条cookie
domain字段为可以访问此cookie的域名。

在Controller层获取Cookie里的数据。

public Integer cookie(HttpServletRequest request){
	Cookie[] cookies = request.getCookies();//这里获取Cookie
	String st= null;
	for (Cookie cookie : cookies) {
		if ("st".equals(cookie.getName())) {
			try {
				st = URLDecoder.decode(cookie.getValue(),"UTF-8");//这里通过转码获取Cookie中保存的Student
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
	}
        //String[] split1 = st.split(",");//根据逗号分割成数组
	Integer sId = Integer.valueOf(st.split(",")[0].split(":")[1]);//根据想要获取的信息自己分割
	return sId;//我这里只要获取学生ID就好了,别的都不要了。
}
清除Cookie(我是ajax调用)
@RequestMapping(value="/exitSystem",produces = "application/json;charset=UTF-8")
public void exitSystem(HttpServletResponse response){
    Cookie c = new Cookie("st",null);//new一个新的cookie,并将你传入的"st"直接写进去
    c.setMaxAge(0);//存在时间赋值为0,也就是直接失效
    c.setPath("/");//我的路径是根目录,你们路径是null的时候也可以用根目录
    response.addCookie(c);//然后将这个cookie添加上去,然后直接失效。
    response.sendRedirect("/");//直接跳根目录
}
页面直接清除cookie也可以,需要的就自己去寻找吧<ONE PIECE>


猜你喜欢

转载自blog.csdn.net/weixin_40620337/article/details/80940835