惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

Sehnsucht

记一次博客换图床的过程 观《花束般的恋爱》 读《活过》 东京 旅行篇 亲人逝去 我为什么想养鱼 防止AI爬取你的博客 「monthly 」博客重构 游戏全成就 好看的小说 人生的每一步都不会是浪费-2024年终 「weekly」星期五综合征 「weekly」听播客 杂谈 读《美丽新世界》 「weekly」社交媒体 恶性事件 新世界 「weekly」认知觉醒 美丽新世界 follow 「weekly」独立博客9问题 双十一买书 读《惊呆了!原来这就是社会学》 一次聊天与自我建设 2024-09月记 补番《relife》 树状数组简单理解 lvm简单使用 博客自动发布方案 某公众号废案 fail2ban基本使用 Podman 环境使用 Nginx Proxy Manager 最佳实践 2024-07同学聚会 vps使用podman部署freshrss Gitlab CICD 实践,思考与记录 装备升级:新的PC gitlab局域网搭建流程
JavaWeb servlet 使用Cookie记录用户访问次数
2021-09-26 · via Sehnsucht

讲解

创建CookieLoginTime继承HttpServlet

重写doGet,doPost方法就不再赘述,我们的侧重点是在使用Cookie记录信息 Cookie是由一个个的键值对组成,就类似哈希,或者数组(一个下标对一个数据) Cookie无法直接搜索到name就直接删除,操作Cookie只是添加和修改倒是问题不大

我先简单写一下doget和dopost

然后去web.xml里定义映射

然后开始写doget的细节


几个问题:1乱码,2Cookie的value增加 乱码在前面加

resp.setHeader("Content-Type", "text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");

若果不设置Cookie的path,则名字相同的Cookie视为相同的Cookie,后面的覆盖前面的,注意:大小写敏感 参考:https://blog.csdn.net/czh500/article/details/80420061

所以我们可以用这个特点获取然后添加Cookie

在这里插入图片描述 在这里插入图片描述

CookieLoginTime类

package top.sehnsucht;

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;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/9/26
 * ~~(^_^)~~
 */

public class CookieLoginTime extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setHeader("Content-Type", "text/html;charset=UTF-8");
        req.setCharacterEncoding("UTF-8");
        Cookie[] cookies = req.getCookies();

        for (Cookie cookie : cookies) {
            if ("time".equals(cookie.getName())) {
                int time = Integer.parseInt(cookie.getValue()) + 1;
                resp.getWriter().println("这是您第" + time + "次访问本站");
                resp.addCookie(new Cookie(cookie.getName(), Integer.toString(time)));
                return;
            }
        }
        Cookie cookie = new Cookie("time", "1");
        resp.getWriter().println("这是您第" + cookie.getValue() + "次访问本站");
        resp.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>top.sehnsucht.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>loginTime</servlet-name>
    <servlet-class>top.sehnsucht.CookieLoginTime</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>loginTime</servlet-name>
    <url-pattern>/time</url-pattern>
  </servlet-mapping>

</web-app>