Cookie时用来存储客户端的信息,一次会话:从浏览器的打开访问,然后关闭浏览器这就是属于一次会话!
Cooike不能存中文!必须时字符串的形式!
服务器端向客户端发送一个cookie
创建Cookie:
Cookie cookie = new Cookie(String cookieName,String cookieValue);
Cookie可以设置持久化时间:
cookie.setMaxAge(int seconds); 秒
注意:设置了时间以后,Cookie会从启动命令的时候开启,开始计算时间,当时间到时,就会删除Cookie信息,就算客户端没有关闭也会删除Cookie信息,单位为秒
删除客户端Cookie信息 把这个持久化时间改为0 那么就相当于覆盖以前的Cookie
package com.oracle.demo01; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SendCookieServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建Cookie对象(用来存储客户端的信息) Cookie cookie=new Cookie("goods","naiping"); //设置持久化时间(在发送以前) cookie.setMaxAge(60*2); //设置Cookie携带路径 /*cookie.setPath("/WEB07/SendCookieServlet");*/ //发送Cookie到客户端 response.addCookie(cookie); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
设置携带路径:
cookie.setPath(String path);
如果不设置携带路径的话,Cookie会显示整个WEB应用所在的路径都会携带Cookie信息,如果设置了则写到哪个目录下,就会显示哪个目录下的Cookie信息
cookie.setPath("/WEB16");
代表访问WEB16应用中的任何资源都携带cookie
cookie.setPath("/WEB16/cookieServlet");
代表访问WEB16中的cookieServlet时才携带cookie信息
服务器端请求接收客户端所携带的cookie信息:
cookie信息时以请求头的方式发送到服务器
Cookie[] cookie=request.getcookies();
通过遍历的形式,通过cookie名称找到对应的值
package com.oracle.demo01; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetCookieServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取Cookie数组 Cookie[] cookies=request.getCookies(); //遍历Cookie数组 通过Cookie名获取Cookie值 for(Cookie c:cookies){ if(c.getName().equals("goods")){ System.out.println(c.getValue()); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }