介绍
Cookie是服务器发送给浏览器的体积很小的纯文本信息,用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。cookie一般用于在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。 Servlet中可以同时创建多个cookie,但是每个站点最多只能保存20个cookie
Cookie,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。(可以叫做浏览器缓存)
使用方法
创建和发送
@WebServlet("/sc04")
public class Cookie01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie=new Cookie("name","无锡");
resp.addCookie(cookie);
}
}
获取
@WebServlet("/sc04")
public class Cookie02 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie []cookie=req.getCookies();
if (cookie.length<=0||cookie==null)return;
for (Cookie cookie1:cookie){
String cname=cookie1.getName();
String cvalue=cookie1.getValue();
}
}
}
设置Cookie存储时间
使用
@WebServlet("/sc04")
public class Cookie03 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie=new Cookie("name","张三");
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
}
n值 | cookie.setMaxAge(n); |
---|---|
0 | 删除该cookie |
-1 | 为负整数时,表示只在浏览器中存储,浏览器关闭则销毁该cookie,默认为-1 |
30 | 为正整数时,表示指定该cookie存活时间,单位为秒,cookie是存储在本地磁盘的,关闭浏览器也不会销毁该cookie |
注意点
1.cookie保存在当前浏览器中,不能跨浏览器
2.cookie存在中文问题,键值不能为中文,如果一定要为中文.不建议使用中文
//发送
String name="姓名"
String password=123456
name=URLEncoder.encode(name)
value=URLEncoder.encode(password)
Cookie cookie=new Cookie(name,value)
response.addCookie(cookie);
//获取
URLDecoder.decode(cookie.getName)
URLDecoder.decode(cookie.getValue)
3.同名
后面的cookie会覆盖前面的cookie
4.存放数量是有上限的,不同浏览器的上限不同
5.cookie大小有限制,一般不超过4kb
Cookie的路径
情景一:当前服务器下任何项目的任意资源都可以获取Cookie对象
//当前路径 为/s01
Cookie cookie=new Cookie("xxx","xxx")
cookie.setPath("/")
response.addCookie(cookie)
情景二:当前项目下资源可以获取Cookie对象
//当前路径 为/s02
Cookie cookie=new Cookie("xxx","xxx")
cookie.setPath("/s02")//可以不设置,默认就是当前路径
response.addCookie(cookie)
情景三:指定项目可以获取Cookie对象
//当前路径 为/s02
Cookie cookie=new Cookie("xxx","xxx")
cookie.setPath("/s03“)
response.addCookie(cookie)
情景四:指定项目下的资源可以获取Cookie对象
//当前路径 为/s02
Cookie cookie=new Cookie("xxx","xxx")
cookie.setPath("/s03/cook")//表示只有路径为/s03/cook才能拿到当前Cookie对象
response.addCookie(cookie)