最近好烦~ 不过没什么大不了的

一个商品的展示界面,可以看到你以前浏览过的的界面。利用cookie

/**

* 商品的列表界面

*/

public class Servlet_products extends HttpServlet {

public static final String bookHistory="bookHistory";

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

//1、展示商品的列表

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.write("商品的信息如下"+"
");

HashMap map=(HashMap) DB.getAll();

Set> set = map.entrySet();

for (Entry entry : set) {

Book book=entry.getValue();

//展示商品的数据

out.write(""+book.getName()+"");

out.write("
");

}

//2.展示以前浏览过的数据

out.write("
您曾经浏览过的商品:
" );

Cookie[] cookies = request.getCookies();

for (int i = 0;cookies!=null&& i < cookies.length; i++) {

Cookie c=cookies[i];

if(c.getName().equals(bookHistory))

{

//是这个界面给浏览器的

String value=c.getValue();

//我们存入用户浏览过商品的id 是 1_2_3 这种格式进行存储的

String ids[] = value.split("\\_");

for(String id: ids){

Book book = (Book) DB.getAll().get(id);

out.write(book.getName() + "
");

}

}

}

}

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

doGet(request, response);

}

//模拟数据库

public static class DB {

//有序的 map

public static LinkedHashMap map=new LinkedHashMap();

static {

//静态代码块 用于初始化 map的信息

map.put("1", new Book("1","javaweb开发","老张","一本好书"));

map.put("2", new Book("2","spring开发","老黎","一本好书"));

map.put("3", new Book("3","hibernate开发","老佟","一本好书"));

map.put("4", new Book("4","struts开发","老毕","一本好书"));

map.put("5", new Book("5","ajax开发","老张","一本好书"));

}

public static Map getAll(){

return map;

}

}

//商品的信息

public static class Book {

private String id;

private String name;

private String author;//作者

private String description; //描述

public Book() {

super();

// TODO Auto-generated constructor stub

}

public Book(String id, String name, String author, String description) {

super();

this.id = id;

this.name = name;

this.author = author;

this.description = description;

}

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;

}

public String getDescription() {

return description;

}

public void setDescription(String description) {

this.description = description;

}

}

}

商品的详情界面

package jemo.cookie.demo;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Arrays;

import java.util.LinkedList;

import java.util.List;

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 jemo.cookie.demo.Servlet_products.Book;

import jemo.cookie.demo.Servlet_products.DB;

/**

* 点击具体的商品挑转到界面

*/

public class Servlet_productInfo extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

//1.根据用户带过来的id号,显示商品的详细信息

String id = request.getParameter("id");

Book book = (Book) DB.getAll().get(id);

out.write("您要查看的书的详细信息如下:
");

out.write(book.getId() + "
");

out.write(book.getName() + "
");

out.write(book.getAuthor() + "
");

out.write(book.getDescription() + "
");

//2.给用户回送包含当前商品id的cookie

String bookHistory = makeHistory(request,id); // 3_2

Cookie cookie = new Cookie(Servlet_products.bookHistory,bookHistory);

cookie.setMaxAge(1*30*24*3600);

response.addCookie(cookie);

}

/**

* 得到要给浏览器cookie

* @param request

* @param id

* @return

*/

private String makeHistory(HttpServletRequest request, String id) {

String bookHistory = null;

Cookie cookies[] = request.getCookies();

for(int i=0;cookies!=null&&i

if(cookies[i].getName().equals(Servlet_products.bookHistory)){

bookHistory = cookies[i].getValue();

}

}

// bookHistory=null 1 bookHistory=1

// bookHistory=3_1_5 1 bookHistory=1_3_5

// bookHistory=3_2_5 1 bookHistory=1_3_2

// bookHistory=3_2 1 bookHistory=1_3_2

// bookHistory=null 1 bookHistory=1

if(bookHistory==null){

return id;

}

List l = Arrays.asList(bookHistory.split("\\_")); //[3,4] //数组 链接

LinkedList list = new LinkedList();//对数据增删更有效

list.addAll(l);

if(list.contains(id)){

// bookHistory=3_1_5 1 bookHistory=1_3_5

list.remove(id);

list.addFirst(id);

}else{

if(list.size()>=3){

// bookHistory=3_2_5 1 bookHistory=1_3_2

list.removeLast();

list.addFirst(id);

}else{

// bookHistory=3_2 1 bookHistory=1_3_2

list.addFirst(id);

}

}

StringBuffer sb = new StringBuffer(); //2_3_4

for(String lid: list){

sb.append(lid + "_");

}

return sb.deleteCharAt(sb.length()-1).toString();//删除最后的_

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

展示浏览 java_java利用 cookie 进行展示你所浏览过的的商品相关推荐

  1. Python爬取全国火锅店,并利用地图可视化展示

    今天给大家分享一个数据可视化案例:如何获取全国不同城市火锅店数量情况,并将这些数据进行可视化展示,以更加直观的方式去浏览全国不同省份.不同城市的火锅店分布情况. 本文数据来自于某度地图,通过pytho ...

  2. 利用Flask动态展示Pyechats图表

    之前,在网上搜到过很多教程,但是我按照教程做,一次也没成功.踩了很多坑,最后才做成. 没成功的主要原因: pyecharts版本不同,有些函数我的pyecharts库里没有,如dump_options ...

  3. selenium利用cookie跳过验证码登录

    1.测试场景 在实现web自动化的过程中,为了解决每次登录时,验证码会随机变化的问题,以达到测试已登录状态的其他页面模块,我们需要利用cookie跳过登录,完成测试. 正常情况下,项目测试人员是不会遇 ...

  4. html展示markdown文件,在前端页面展示Markdown文件

    常我们都会在GitHub上浏览很多的readme文件,这些都是Markdown语法写成的Markdown文件,HTML中并没有用于展示Markdown文件的元素,那么为什么可以在前端展示呢? 有别于G ...

  5. JavaWeb利用cookie记住账号

    JavaWeb利用cookie记住账号. 首先,来看看界面什么样子. 记住账号最普遍的做法,就是在点击登录时,将账号保存到cookie中. 材料准备 <script src="${ct ...

  6. vr全景展示是什么?vr全景展示有哪些实际功能!

    ​现如今,5G时代的到了也促进一些新科技的高速发展,让我们的生活有了质的提升.科技成果改善了我们的生活方式,让生活更加便利.新时代的vr全景图展示快速创造了3D时代,vr全景展示可以实现让我们不用走出 ...

  7. VR全景展示是什么,VR全景展示的功能有哪些?

    最近,一种新奇的图像展示方式走进了人们的视野.微博,博客,抖音,朋友圈等平台出现很多能720°无死角浏览的展示作品,吸引了用户大量的点击.这就是VR全景展示,一种新兴富媒体技术,与以往传统的文字图文视 ...

  8. python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...

    关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...

  9. cookie记录用户的浏览商品的路径

    在电子商务的网站中,经常要记录用户的浏览路径,以判断用户到底对哪些商品感兴趣,或者哪些商品之间存在关联. 下面将使用cookie记录用户的浏览过的历史页面.该网站将每个页面的标题保存在该页面的$TIT ...

最新文章

  1. umi脚手架搭建的项目_15天零成本搭建静态博客,托管于Github Page
  2. Linux命令行笔记
  3. 对比学习系列论文SDCLR(一)-Self-Damaging Contrastive Learning论文的概括
  4. CentOS修改MySql数据库目录datadir
  5. IdentityServer4 SigningCredential(RSA 证书加密)
  6. [摸鱼]cdq分治 学习笔记
  7. python中自定义类中的self_Python类和构造方法
  8. fiddler修改支付金额_不容忽视的记账工具:支付宝记账
  9. 高斯消元法的c语言编程,列主元高斯消元法的C语言编程
  10. eclipse 矩阵删除行列,也可以矩阵形式编辑
  11. iOS项目开发实战——使用Xcode6设计自己定义控件与图形
  12. Python –将NumPy数组转换为列表
  13. 免校准的电量计量芯片_电能计量芯片应用心得之选型篇
  14. HTML5-坦克大战一画出敌人坦克并让自己的坦克可以发子弹的功能(二)
  15. python实现团队游戏小程序——你画我猜
  16. 微信设置字体后微信浏览器页面字体也会跟着改变的解决办法
  17. 读书笔记:《死去之前,都是人生》
  18. Python常用第三方库大全, 值得收藏!
  19. 利用计算机解决问题的一般过程是怎样的,计算机解决问题的一般过程1
  20. 读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记1

热门文章

  1. 如何选择合适的BI工具
  2. Python生成二维码-qrcode
  3. win8 性能测试软件,首款支持Win8性能测试 新版3D Mark使用体验
  4. python周末看什么电影_电影院要开工了,用Python看一看最近有什么刚上映的电影...
  5. matlab偏微分方程工具箱求解
  6. sass笔记 - 实战中颜色的玩法总结
  7. 客户端和服务器之间的信息结构,客户端和服务器之间的信息结构
  8. 通过思科构造局域网_从Cisco DNA中心的管理的和设置的非结构Catalyst 9800无线局域网控制器...
  9. Java基础问题总结
  10. 计算机杀毒记录表格,11科室计算机杀毒登记表