什么是cookie
Cookie是由服务器产生,然后通过response(Set-Cookie)对象写入浏览器,然后保存在浏览器端,在request下一次访问的时候,通过cookie的请求头,将cookie带回浏览器
cookie的相关方法
new Cookie(name,value):创建cookie对象
response.addCookie():写回浏览器
request.getCookies():获取cookie
c.setMaxAge(60*60); 设置有效时间,单位:s
c.setPath("/"); 设置共享路径
注意:如果 将MaxAge 设置成(0),即表示 cookie 失效
案例:记录上一次的登录时间
@WebServlet(name = "CookieServlet",value = "/cookieServlet") public class CookieServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); Cookie[] cookies = request.getCookies(); Cookie times = null; Boolean flag = false; Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss"); String format = simpleDateFormat.format(date); if (cookies != null){ for (Cookie c:cookies) { if (c.getName().equals("times")){ times = c; flag = true; break; } } } if (!flag){ response.getWriter().print("第一次登陆"); times = new Cookie("times", format); response.addCookie(times); response.getWriter().print(times.getValue()); }else { response.getWriter().print(times.getValue()); times = new Cookie("times", format); response.addCookie(times); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
cookie能不能存储中文?
tomcat8以前 不可以存储中文和特殊字符
tomcat8及以后:可以存储中文 但是不能存储特殊字符 (空格)
cookie的特点和作用
1、cookie存储数据在客户端浏览器
2、cookie存储的数据由大小限制:4kb 同一个域名下的的总的cookie数量(20个)