Java Web——Servlet的数据共享方案:Cookie类

文章目录:

1.介绍

2.生命周期 

3.应用举例 

3.1 代码部分  

3.2 运行结果部分

4.实现原理图


1.介绍

  1. 来自于Servlet规范中提供一个工具类。
  2. 如果两个Servlet为同一个用户/用一个浏览器提供服务,此时借助于用户的cookie实现数据共享。
  3. cookie在现实生活中相当于用户的会员卡。

2.生命周期 

  1. 在正常情况下,cookie存放在浏览器内存中。在浏览器关闭时,cookie将被销毁。
  2. 在命令控制下,可以要求浏览器将接收cookie存放在客户端计算机的硬盘上并指定存活时间。在存活时间范围内,关闭浏览器,关闭
    服务器,关闭计算机都不会导致cookie销毁。

    cookie对象.setMaxAge(60); 在硬盘上存活1分钟。


3.应用举例 

两个Servlet之间通过 Cookie 类实现数据共享。(OneServlet、TwoServlet) 

3.1 代码部分  

package com.songzihao.controller;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *
 */
public class OneServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.创建Cookie对象
        Cookie cookie1=new Cookie("key1","hello");
        Cookie cookie2=new Cookie("key2","java");
        //2.调用响应对象将cookie写入到响应头
        response.addCookie(cookie1);
        response.addCookie(cookie2);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
package com.songzihao.controller;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *
 */
public class TwoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.调用请求对象,读取请求头中所有的cookie
        Cookie cookieArray[]=request.getCookies();
        //2.遍历循环数组,读取OneServlet在cookie存入的数据
        for (Cookie cookie : cookieArray) {
            String key=cookie.getName();
            String value=cookie.getValue();
            System.out.println("共享数据名===" + key + ",共享数据===" + value);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
<?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>OneServlet</servlet-name>
        <servlet-class>com.songzihao.controller.OneServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OneServlet</servlet-name>
        <url-pattern>/one</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>TwoServlet</servlet-name>
        <servlet-class>com.songzihao.controller.TwoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TwoServlet</servlet-name>
        <url-pattern>/two</url-pattern>
    </servlet-mapping>
</web-app>

3.2 运行结果部分


4.实现原理图

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胜天半子-祁同伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值