package com.itheima.web;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
/**
-
添加商品到购物车的Servlet */ @WebServlet("/addCart") public class AddCartServlet extends HttpServlet {
/**
- 添加商品到购物车
- @param req
- @param resp
- @throws ServletException
- @throws IOException */ @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.解决乱码问题 req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html;charset=UTF-8"); //2.获取请求参数 String productName = req.getParameter("product"); //3.创建Cookie对象 Cookie cookie = new Cookie("productInfo",productName); //4.设置Cookie的最大存活时间 cookie.setMaxAge(Integer.MAX_VALUE); //5.把Cookie写到浏览器端 resp.addCookie(cookie); //6.告知浏览器已经写好了 resp.getWriter().write("已经添加好了,可以查看购物车了。"); resp.getWriter().write("现在查看?"); resp.getWriter().write("回到主页"); } } cookie不会因为浏览器关闭而丢失 30分钟 可能没有cookie package com.itheima.web;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
/**
-
查看购物车 */ @WebServlet("/showCartInfo") public class ShowCartInfoServlet extends HttpServlet {
/**
-
把由AddCartServlet写的cookie在当前这个Servlet中读取出来,并显示
-
@param req
-
@param resp
-
@throws ServletException
-
@throws IOException */ @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.解决乱码问题 req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html;charset=UTF-8"); //2.获取当前网站中的全部Cookie 数组
Cookie[] cookies = req.getCookies(); //判断一下,数组是不是null if(cookies != null) { //3.取出每一个Cookie,看看是不是我们需要的 for (Cookie cookie : cookies) { if(cookie.getName().equals("productInfo")) { //4.如果是,就输出 resp.getWriter().write("购物车中的商品是:"+cookie.getValue()); return; } } } //5.如果没有就提示:没有 resp.getWriter().write("您还没有添加商品到购物车。"); resp.getWriter().write("现在添加?");
} }
-
3. Cookie特点
1. cookie存储数据在客户端(浏览器)
2. cookie只能存储字符串
3. 一个网站只能存20个cookie
4. 一个浏览器访问的所有网站加起来最多存300个cookie
5. cookie单个大小不能超过4KB
-
问题:cookie的存活时长是多少?
-
回答:默认情况下,cookie会随着浏览器的关闭而销毁,但是可以通过使用cookie.setMaxAge(时长)来设置,时长参数支持: 负数: 随着浏览器的关闭而销毁 正数: 代表存活多少s(跟浏览器是否关闭无关) 0: 立即销毁