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);
}
}