(8)cookie
注意点
服务器可以向客户端写内容
只能是文本内容
客户端可以阻止服务器写入
只能拿自己的webapp写入的东西
一个servlet/jsp设置的cookies能够被同一个路径下面或者自路径下面的servlet/jsp读到(路径-URL)
一、cookie应用场景:
比如淘宝中将一个商品加入购物车后,从购物车页面也可以看到该商品。若cookic关闭,则在购物车页面不会显示该商品。一些网站必须用cookic,否则不能正确使用该网站,若关闭,则会提示希望能够打开cookic功能。
比如:csdn网站登录可以两周内免登陆,就是将登录信息记录在cookic中。
二、cookie的创建
创建 cookie,通过servlet将极少量的信息发送到 Web 浏览器,稍后发送回服务器
①服务器到客户端:The servlet sends cookies to the browser by using the HttpServletResponse#addCookie method, which adds fields to HTTP response headers to send cookies to the browser, one at a time
②客户端到服务器:Cookies can be retrieved from a request by using the HttpServletRequest#getCookies method.
服务器到客户端:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
for(int i=0;i<3;i++)
{
//1.创建cookic:javax.servlet.http.Cookie;
Cookie cookie=new Cookie("name"+i,"value:"+i);
cookie.setMaxAge(3600);//设置此cookic存活时间
//2.服务器向客户端发送数据
response.addCookie(cookie);
}
out.println("<a href='/day09/showcookie'>showcookie</a>");
}
客户端到服务器
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//客户端向服务器发送请求,获取cookie
Cookie[] cookies=request.getCookies();
if(cookies!=null)
{
Cookie cookie;
for(int i=0;i<cookies.length;i++)
{
cookie=cookies[i];
out.println(cookie.getName()+"----"+cookie.getValue());//cookie是键值对
out.println("<br/>");
}
}
}