Servlet-Cookie

一、Cookie介绍

  • 请求头中携带的信息。
  • 将数据保存在客户端。
  • Cookie的分类:
    (1)默认级别:在Cookie没有设置有效时间的情况下,Cookie在关闭浏览器时销毁,该级别Cookie存放在内存中。
    (2)持久级别:Cookie设置了有效时间,Cookie被持久化到磁盘中。重启浏览器时,会从磁盘加载到内存。当超过有效时间时,Cookie会被销毁。
  • 常用API:
    (1)getName():获取Cookie的名称。
    (2)getValue():获取Cookie的值。
    (3)setDomain():设置Cookie的有效域名。
    (4)setPath():设置Cookie的有效路径,该路径及子路径均能携带该Cookie。从项目的上下文路径开始。
    (5)setMaxAge():设置Cookie的有效时长。
  • 项目测试
    (1)编写MyServlet和HisServlet且都继承HttpServlet类,第一个类创建指定路径且是持久级别的Cookie,第二个类用非指定路径来访问Cookie。
public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie[] cookies = req.getCookies();
        String cookieVal = null;
        for (Cookie cookie : cookies) {
            if ("lastTime".equals(cookie.getName())){
                cookieVal = cookie.getValue();
            }
        }
        String msg = "";
        String time = new SimpleDateFormat("yyyy-mm-dd-hh:mm:ss").format(new Date());
        if (cookieVal != null){
            msg = "上一次访问时间:" + cookieVal;
        }else {
            msg = "第一次访问";
        }
        Cookie cookie = new Cookie("lastTime", time);
        cookie.setMaxAge(60*60*24);
        cookie.setPath("/test01/test01");
        resp.addCookie(cookie);
        //设置响应头,解决客户端乱码
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.print(msg);
    }
}
public class HisServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie[] cookies = req.getCookies();
        String cookieVal = null;
        for (Cookie cookie : cookies) {
            if ("lastTime".equals(cookie.getName())){
                cookieVal = cookie.getValue();
            }
        }
        String msg = "";
        if (cookieVal != null){
            msg = "获取到Cookie值:" + cookieVal;
        }else {
            msg = "无";
        }
        //设置响应头,解决客户端乱码
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.print(msg);
    }
}

(2)编写web.xml文件,配置Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.wsh.servlet.MyServlet</servlet-class>
        <!--load-on-startup的值大于等于0时,Servlet在Tomcat启动时初始化-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/test01</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>HisServlet</servlet-name>
        <servlet-class>com.wsh.servlet.HisServlet</servlet-class>
        <!--load-on-startup的值大于等于0时,Servlet在Tomcat启动时初始化-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>HisServlet</servlet-name>
        <url-pattern>/test02</url-pattern>
    </servlet-mapping>
</web-app>

(3)配置Tomcat中的项目上下文路径
在这里插入图片描述
(4)运行
先访问/test01/test01,然后关闭浏览器再次访问,测试Cookie能否返回客户端并持久化到磁盘上。
在这里插入图片描述
在这里插入图片描述
访问/test01/test02,测试setPath()方法是否有效。
在这里插入图片描述
注:删除持久化在磁盘中的Cookie,确定要删除Cookie的路径,设置其有效时间为0。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值