cookie 主要是用于当用户经过HTTP访问服务器时候,这个服务器会将一些KEY/VALUE键值返回给客户端浏览器,而且给这个数据加上一些条件,在条件符合的时候这个用户下次访问服务器的时候,数据将会被带回服务器。
java
当前cookie 有两个版本,每一个版本的内容以下:
web
package com.yuan.test; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TestCookie { @RequestMapping(value = "/login.do") public void CheckCookie(HttpServletRequest request, HttpServletResponse response) { Cookie[] cookies = request.getCookies();//获取到cookie 数组 String usernameString = getCookies("username", cookies); String userageString = getCookies("userage", cookies); if (null == usernameString) { response.addCookie(new Cookie("username", "oscar")); } if (null == userageString) { response.addCookie(new Cookie("userage", "28")); } response.getHeader("Set-Cookie"); } public String getCookies(String key, Cookie[] cookies) { if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals(key)) { return cookie.getValue(); } } } return null; } }
根据代码能够看出,Cookie 是一个抽象的类,要想得到客户端返回的Cookie必需要引入 javax.servlet 的 jar 包,spring
HttpServletRequest request
而后经过request.getcookies()方法得到cookie数组。apache
javax.servlet.http.Cookie[] cookies=request.getCookies();
说明:数组
真正构建Cookie 是在容器中, 经过Tomcat 里面的org.apache.catlina.connector.Response类 完成的。浏览器
另外,注意Cookie 里面的中文要URLEndcoder编码。服务器
每添加一个Cookie 将会生成一个MimeHeader 对象。cookie
session 是依赖于cookie的。最终Sessionid 仍是会存在cookie里面,因此若是cookie被用户禁用了,可能登陆网站就会有问题。session