利用cookie实现查看最近浏览

使用localStorage替代cookie做本地存储,例如最近浏览历史记录 cookie存储有限,加上cookie每次都要上传到服务器,浪费了带宽不说,而且伤害了人民群众的感情 阅读详情
我们在浏览网页的时候经常会在下一次打开浏览器的时候看到网页提供的最近浏览网页,这些都是怎么做的?

其实主要用是cookie技术


package entity;
//书的实体类
public class Book {
    private String id;
    private String name;
    private double price ;
    public double getPrice() {
         return price ;
    }
    public void setPrice(double price) {
         this.price = price ;
    }
    private String author;
    public Book(String id,String name, double price,String author ) {
         // TODO Auto-generated constructor stub
         this.id =id ;
         this.name =name ;
         this.price =price ;
         this.author =author ;
    }
    public String getId() {
         return id ;
    }
    public void setId(String id ) {
         this.id = id ;
    }
    public String getName() {
         return name ;
    }
    public void setName(String name ) {
         this.name = name ;
    }
    public String getAuthor() {
         return author ;
    }
    public void setAuthor(String author ) {
         this.author = author ;
    }
    @Override
    public String toString() {
         return "Book [id=" + id + ", name=" + name + ", price=" + price
                + ", author=" + author + "]" ;
    }

}


package utils;
import java.util.HashMap;
import java.util.Map;
//模拟数据库操作


import entity.Book;



public class DBUtils {
    private static Map<String, Book> books= new HashMap<String,Book>();
    //模拟数据库数据
    static{
         books.put("1" , new Book("1", "java入门",10,"小明" ));
         books.put("2" , new Book("2", "oracle入门",10,"小红" ));
         books.put("3" , new Book("3", "android入门",50,"小李" ));
         books.put("4" , new Book("4", "大数据",90,"小刚" ));
    }
    //得到所有的书
    public static Map<String, Book> getBooks(){
         return books ;
    }
    //根据id查找书籍
    public static Book  findBookById(String id ) {
        
         return books .get(id );
    }
}
package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

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 com.sun.prism.impl.Disposer.Target;

import entity.Book;
import utils.DBUtils;

public class BookServlet extends HttpServlet {

     /**
     * Constructor of the object.
     */
     public BookServlet() {
          super();
     }

     public void doGet(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {

          response.setContentType("text/html;charset=UTF-8");
          PrintWriter out = response.getWriter();
          out.write("书籍推荐:<br/>");
          Map<String, Book> books = DBUtils.getBooks();
          //遍历books
          for (Map.Entry<String, Book> book:books.entrySet()) {
               out.write("<a href='"+request.getContextPath()+"/servlet/BookDetailsServlet"
                         + "?id="+book.getKey()+"'"+"target='_blank'"+">"+book.getValue().getName()+"</a><br>");
              
          }
         
          out.write("<hr/>最近浏览的书有:<br>");
          Cookie[] cookies = request.getCookies();
          //遍历cookies
          for (int i = 0;cookies!=null&& i < cookies.length; i++) {
               if("historyBookId".equals(cookies[i].getName())){
                    String value = cookies[i].getValue();//1-2-3
                    String[] ids = value.split("-");
                    //遍历ids
                    for (int j = 0; j < ids.length; j++) {
                         Book book = DBUtils.findBookById(ids[j]);
                         out.print(" "+book.getName());
                    }
               }
          }
     }

     public void doPost(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {

          doGet(request, response);
         
     }

}





import entity.Book;
import utils.DBUtils;

public class BookDetailsServlet extends HttpServlet {

     /**
     * Constructor of the object.
     */
     public BookDetailsServlet() {
          super();
     }


     public void doGet(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {

          response.setContentType("text/html;charset=UTF-8");
          PrintWriter out = response.getWriter();
          //显示图书的详细信息
         
         
          //获得id
          String id=request.getParameter("id");
          Book book = DBUtils.findBookById(id);
//          out.write(book.toString());
          out.print(book);
          //把当前浏览过的书的id写回客户端
          String historyBookId=organizeId(id,request);
          Cookie cookie=new Cookie("historyBookId", historyBookId);
          cookie.setPath("/");
          cookie.setMaxAge(Integer.MAX_VALUE);
          response.addCookie(cookie);
     }

     /**
     *
          客户端                  BookServlet          BookDetailsServlet
          1.没有cookie的情况          1                    historyBook=1
          2.有cookie,但没有historyBook                    historyBook=1
          3.historyBook=1          2                    historyBook=2-1
          4.historyBook=1-2          2                    historyBook=2-2
          5.historyBook=1-2-3     3               historyBook=2-1-3
          6.historyBook=1-2-3     4               historyBook=4-1-2
     */

     private String organizeId(String id, HttpServletRequest request) {
          // TODO Auto-generated method stub
          //得到客户端Cookie
          Cookie[] cookies = request.getCookies();
          if(cookies==null){
               return id;
          }
          Cookie historyBook=null;
          //遍历cookies
          for (int i = 0; i < cookies.length; i++) {
               if("historyBookId".equals(cookies[i].getName())){
                    historyBook=cookies[i];
               }
          }
          //如果没有historyBookId的cookie,则返回id
          if(historyBook==null){
               return id;
          }
          String value = historyBook.getValue();
          //切割组织的id
          String[] values = value.split("-");
          LinkedList<String> list=new LinkedList<String>(Arrays.asList(values));
          //如果小于3本书
          if(list.size()<3){
               //如何集合中包含该id,则删除原来的id,将id重新加到first
               if(list.contains(id)){
                    list.remove(id);
               }
          }else {
               if(list.contains(id)){
                    list.remove(id);
               }else {//如果已经有3个id了,则将集合的最后一个id删除
                    list.removeLast();
               }
          }
          list.addFirst(id);//将最新的书添加到最前面
          StringBuffer sb=new StringBuffer();
          //遍历list,在id之间加上'-'
          for (int i = 0; i < list.size(); i++) {
               if(i>0){
                    sb.append("-");
               }
               sb.append(list.get(i));
          }
          System.out.println(sb);
          return sb.toString();
     }



     public void doPost(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {

          doGet(request, response);
     }

}





        
STM32学习笔记【江科协】【4-2】OLED显示屏 可以注意到接电源的GND和VCC同时和PB6、PB7号口连接,我们可以直接不初始化这两个引脚解决,因为STM32的引脚上电后,如果不初始化,默认是浮空输入的模式,在这个模式下,引脚不会输出电平,所以不会有什么影响,或者直接给PB6口输出低电平,PB7口输出高电平,用GPIO口直接给OLED供电,这个也是没问题的,因为OLED的功率很小这个也是可以驱动的,不过用GPIO口供电不是很规范,实际项目还是用电源供电。然后点击这里放大镜里面带d的图标,进入调试模式,这个界面里, 阅读详情

相关推荐

用YOLO11-seg玩转裂缝分割:CBAM注意力魔改+轻量化GhostConv实战

本文详细解析了如何利用YOLO11-seg进行裂缝分割任务,结合CBAM注意力机制和GhostConv轻量化改造,显著提升模型性能。通过实战案例展示从数据准备、模型训练到部署优化的全流程,特别针对小目标检测和复杂背景干扰等挑战提供解决方案,最终实现高效准确的裂缝检测系统。

j0k1l2m3n的博客 287

查看网页的cookie

查看网页的cookie

weixin_39407597的博客 1518

wintab开发例程

 タブレットとスタイラスペンを使うと、パソコンに手書きの線を入力できます。筆圧を入力することができるので毛筆のような表現も可能です。ペンの傾きを入力できる機種もあり、アイデア次第で面白いことに使えそうです。  私は昔(94年頃)、WACOMのタブレットを用いたプログラム開発をしたことがあります。当初A3版ほどの大きさのUDというタブレットを使っていて、その後 ArtPad という小さいサイズの

grass168的专栏 3240

浏览器查看Cookie方法大全,网站Cookie查看方法,Chrome查看Cookie,IE查看Cookie

一、简介   最近在做一个,使用Cookie进行免登陆的功能,首先就得要收集当前网站的Cookie,查看当前网站Cookie的方式有以下几种:   1.通过浏览器   (1)、通过请求头查看   浏览器按F12打开开发者工具   (2)、通过JS   在浏览器的地址栏输入:javascript:alert(document.cookie) (不区分大小写),就会弹出你在...

fendo 17万+

编程语言的未来走向:趋势、挑战与机遇

同时,鼓励他们接触和掌握一些专业领域的开发工具和技术框架,比如Web开发中的JavaScript、React.js,数据分析的Python(Pandas, NumPy, Matplotlib等),以及人工智能和机器学习领域的TensorFlow、PyTorch等。当前,全球范围内正积极推动编程教育的普及化,从儿童启蒙阶段到高等教育阶段,乃至终身学习的过程中,如何优化编程语言的教学方法、提高教学质量,并将其广泛应用于不同领域,是教育者与政策制定者面临的重大课题。未来,编程语言的多样化和包容性将会继续加强。

zrc_xiaoguo的博客 1829

基于STM32L4XX、HAL库的AD7768BSTZ 模数转换器ADC驱动程序设计

/ 默认SPI配置。// 读取通道数据命令。// 通过SYNC_IN引脚触发转换(如果使用)// 处理数据...// 或者通过SPI命令。// 初始化AD7768。// SPI1引脚配置。

zhusl6688的博客 462

查看网页cookie的方法

查看网页cookie,及cookie的含义与作用

JingpengSun的博客 1万+

《AI Coding手册:Claude Code、OpenAI Codex、OpenClaw深度解析与实战指南》

AI编码技术经历了从简单规则匹配到深度神经网络,再到当前智能体(Agent)架构的范式转变。第一阶段:静态代码补全(2010-2018)早期工具如IntelliSense、Emmet基于语法分析和固定模板提供代码提示。这类系统依赖预定义规则,缺乏语义理解能力,仅能处理局部代码片段。第二阶段:统计语言模型(2018-2020)以GPT-2、TabNine为代表,引入基于大规模代码训练的神经语言模型。

AI天才研究院 1033

如何查看网站的cookie?

本文将介绍几种常用的方法,帮助大家更好地理解和使用cookie:

欢迎来到“Python算法探索”,我是GT算法工程师,一名热爱计算机算法的博主。在这里,我们将一起深入探索Python世界中的各种算法,从基础到高级,从理论到实践。我参加过很多算法比赛,积累了丰富的经验,希望通过这个播客与你分享。让我们一起用Python探 8605

Gmsh+OCC对应版本库编译

输入 GMSH_DLL_EXPORT值C:\LIB\OCCT-7_8_0-i;9、如果只是生成库文件编译gmesh工程即可生成文件在C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B\Debug 下gmsh.dll、gmsh.lib、gmsh.h、gmshc.h文件;3、CMAK编译Gmsh对应OCC版本的,CMAK选择源文件路径C:\LIB\Gmsh\gmsh-4.13.1-source,生成构建文件路径C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B。

u013401364的博客 412

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据 下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数,其他项目想要调用数据集的话,就可以调用load_mnist函数,得到一个字典类型的数据,字典的值是一个Numpy数组。 这些过程是如何实现的,现在开始逐字逐句分析源码: 在load_mnist函数中第

及时总结 4268

如何查看浏览器cookie?附2个方法

你可以在javascript:alert(document.cookie)这句话最前面添加一个字符,复制到地址栏后再把这个字符去掉即可。当你把 javascript:alert(document.cookie复制进入地址栏后会发现,“javascript”字符串没有了。这是因为不管“javascript”里面哪一个字母被大写或小写,只要识别为“javascript”就会自动被过滤隐藏消失。F12 控制台 输入 某个字符+ javascript:alert(document.cookie)

1万+

本地部署DeepSeek并搭建量化交易系统:完整指南

本地部署DeepSeek并搭建量化交易系统指南 本文提供了一套完整的本地部署DeepSeek大语言模型并构建量化交易系统的技术方案。系统包含以下核心组件: 环境配置:详细说明Ubuntu系统、NVIDIA显卡驱动、CUDA和Python环境的安装要求,推荐使用conda管理依赖 DeepSeek部署: 通过HuggingFace下载7B或13B量化版本模型 使用4-bit量化技术降低显存需求 封装为FastAPI服务提供推理接口 量化系统架构: 模块化设计,各组件通过Redis解耦 包含数据获取、因子计算、

huanghm88的专栏 477

使用cookie实现历史记录功能

1.为什么要实现历史记录功能 我们在访问淘宝,京东等购物网站的时候,系统会自动给我们保存刚才浏览过的商品信息。简单的说,你想要购买一件商品,你在搜索栏输入想要的商品名称,系统会显示所有包含商品名称的商品,此时你点开第一件商品,发现不太满意,又往下浏览,浏览到最后却发现还是第一次看的商品最好,但是如果没有历史记录的话,你就很难找到那件商品,有了历史记录以后,你就可以查找历史纪录中最早访问的商品了,从...

MarcoAsensio的博客 3414

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

手机网上商城-项目经验总结(八)-商品浏览记录

8.实现商品浏览记录 // 通过PID查找单商品 public void findProductByPid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String pid = request.getParameter("pid"); Pr

li1339023842的博客 730

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用cookies查询商品浏览记录

经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录。 第一步:创建商品实体类。 第二步:连接oracle数据库。 第三步:创建商品三层架构。 效果图: 在要显示 的地方加入核心代码: <h2>最近浏览</h2> <div style="height:200px;display...

weixin_30896763的博客 197

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Cookie的使用[最近浏览]

 Cookie的使用通过创建 HttpCookie 对象的实例编写 Cookie1.创建 HttpCookie 类型的对象并为它分配名称。2.为 Cookie 的子项赋值并设置所有 Cookie 属性。3.将该 Cookie 添加到 Cookies 集合中。 该实例表示一个名为 User 的 Cookie。

1047

cookie实例-最近浏览记录

该程序实现显示最近的浏览记录,当点击书名链接时可查看关于该书的详细信息,返回后可在最近的浏览列表中查看浏览记录,最后点击的出现在最前面。 1.创建基本类Book存储基本数据 1: package net.csing; 2: 3: public class Book { 4: public Book(){} 5: 6: public Book(S

cs.Ing 1280

cookie案例-查看最近浏览的三件商品商品

一、首先创建实体类Product.java 然后生成set、get方法,有参的无参的构造方法 package entity; public class Product { int id; String name; String type; double price; public int getId() { return id; } public void setId(

ZBQ857143497的博客 1671

JavaWeb同步学习笔记之四十二、JavaWeb_利用Cookie显示最近浏览的商品

JavaWeb_利用Cookie显示最近浏览的商品利用Cookie显示最近浏览的商品 利用Cookie显示最近浏览的商品 1.显示最近浏览的 5 本书的 name 2.具体代码: books.jsp &amp;amp;lt;%@ page language=&amp;quot;java&amp;quot; contentType=&amp;quot;text/html; charset=UTF-8&amp;quot; pageEncoding=&amp

q124xs的博客 332

java查看cookie_Java使用cookie显示最近查看过的书

本文实例为大家分享了Java使用cookie显示最近查看过的书的相关方法,供大家参考,具体内容如下1.ben包import java.io.Serializable;public class Book implements Serializable {private String id;private String name;private String price;private String ...

weixin_33179060的博客 206

浅谈浏览器cookie

由于HTTP协议是无状态的,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。 此时会引用session,比如说登陆成功后,服务端会为用户开辟一块内存区域,用以存放用户这本次会话的一些内容,比如说用户名之类信息。那么就需要一个东西来标识这个内存区域是你的而不是别人的,这就是jsessionid。 然后,服务器响

公众号:微观技术 9537

利用Cookie实现显示用户最近浏览的商品

案例目标 将用户最近浏览的商品信息,在主页回显,若浏览的商品大于3个,就把第一个删除,同时若有重复的浏览,就把之前的商品信息删除 index.jsp用于回显最近浏览的商品信息 &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;!...

qq_23937341的博客 1318

利用cookie显示浏览过的商品

首先老师给我们讲的是昨天布置的作业,利用Cookie完成的操作,在网站首页的左边,显示所有商品列表,点击任何一个商品,可以查看该商品的详细信息。在首页的右边可以将刚刚查看过的3个商品的列表显示出来。将代码给我们进行了分析,代码及其分析如下: //在一个servlet中 //给用户浏览器回送包含浏览历史纪录的cookie //2_1_3 使用makeHistory函数获得bookHistory

*~~~~~向日葵、的眼里只有【太阳】 527

java用cookie最新浏览商品_JavaWeb_Cookie显示最近浏览的商品

books.jspCreated by IntelliJ IDEA.User: dellDate: 2019/7/10Time: 9:22To change this template use File | Settings | File Templates.--%>TitleBOOKS pageJava WebJavaOracleAjaxJavaScriptAndroidStrutsSp...

weixin_29038537的博客 84

JavaWeb---Cookie---浏览图片---显示最近浏览图片

改程序实现的功能有:浏览服务器中的图片、点击看大图并记录、显示最近浏览的三张图片并且同一张图片连续浏览多次的不重复显示 如下: servlet的入口在图片点击的超链接处,点击后进入servlet中查看大图并进行最近浏览的处理并保存到cookie中 这个程序很简单,没有使用ajax技术,所以里面的技术看上去很粗糙,图片的浏览也用了比较暴力的方式逐个访问的,如果图片较多那就显得太笨拙了,

Discovering,Thinking and Finding——This Is My Logic 598
上一篇: 获取表单数据的四种方法
下一篇: 数据库连接池的使用
codelady
博客等级 码龄11年 26粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值