展示浏览 java_java利用 cookie 进行展示你所浏览过的的商品
最近好烦~ 不过没什么大不了的
一个商品的展示界面,可以看到你以前浏览过的的界面。利用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 进行展示你所浏览过的的商品相关推荐
- Python爬取全国火锅店,并利用地图可视化展示
今天给大家分享一个数据可视化案例:如何获取全国不同城市火锅店数量情况,并将这些数据进行可视化展示,以更加直观的方式去浏览全国不同省份.不同城市的火锅店分布情况. 本文数据来自于某度地图,通过pytho ...
- 利用Flask动态展示Pyechats图表
之前,在网上搜到过很多教程,但是我按照教程做,一次也没成功.踩了很多坑,最后才做成. 没成功的主要原因: pyecharts版本不同,有些函数我的pyecharts库里没有,如dump_options ...
- selenium利用cookie跳过验证码登录
1.测试场景 在实现web自动化的过程中,为了解决每次登录时,验证码会随机变化的问题,以达到测试已登录状态的其他页面模块,我们需要利用cookie跳过登录,完成测试. 正常情况下,项目测试人员是不会遇 ...
- html展示markdown文件,在前端页面展示Markdown文件
常我们都会在GitHub上浏览很多的readme文件,这些都是Markdown语法写成的Markdown文件,HTML中并没有用于展示Markdown文件的元素,那么为什么可以在前端展示呢? 有别于G ...
- JavaWeb利用cookie记住账号
JavaWeb利用cookie记住账号. 首先,来看看界面什么样子. 记住账号最普遍的做法,就是在点击登录时,将账号保存到cookie中. 材料准备 <script src="${ct ...
- vr全景展示是什么?vr全景展示有哪些实际功能!
现如今,5G时代的到了也促进一些新科技的高速发展,让我们的生活有了质的提升.科技成果改善了我们的生活方式,让生活更加便利.新时代的vr全景图展示快速创造了3D时代,vr全景展示可以实现让我们不用走出 ...
- VR全景展示是什么,VR全景展示的功能有哪些?
最近,一种新奇的图像展示方式走进了人们的视野.微博,博客,抖音,朋友圈等平台出现很多能720°无死角浏览的展示作品,吸引了用户大量的点击.这就是VR全景展示,一种新兴富媒体技术,与以往传统的文字图文视 ...
- python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...
关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...
- cookie记录用户的浏览商品的路径
在电子商务的网站中,经常要记录用户的浏览路径,以判断用户到底对哪些商品感兴趣,或者哪些商品之间存在关联. 下面将使用cookie记录用户的浏览过的历史页面.该网站将每个页面的标题保存在该页面的$TIT ...
最新文章
- umi脚手架搭建的项目_15天零成本搭建静态博客,托管于Github Page
- Linux命令行笔记
- 对比学习系列论文SDCLR(一)-Self-Damaging Contrastive Learning论文的概括
- CentOS修改MySql数据库目录datadir
- IdentityServer4 SigningCredential(RSA 证书加密)
- [摸鱼]cdq分治 学习笔记
- python中自定义类中的self_Python类和构造方法
- fiddler修改支付金额_不容忽视的记账工具:支付宝记账
- 高斯消元法的c语言编程,列主元高斯消元法的C语言编程
- eclipse 矩阵删除行列,也可以矩阵形式编辑
- iOS项目开发实战——使用Xcode6设计自己定义控件与图形
- Python –将NumPy数组转换为列表
- 免校准的电量计量芯片_电能计量芯片应用心得之选型篇
- HTML5-坦克大战一画出敌人坦克并让自己的坦克可以发子弹的功能(二)
- python实现团队游戏小程序——你画我猜
- 微信设置字体后微信浏览器页面字体也会跟着改变的解决办法
- 读书笔记:《死去之前,都是人生》
- Python常用第三方库大全, 值得收藏!
- 利用计算机解决问题的一般过程是怎样的,计算机解决问题的一般过程1
- 读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记1
热门文章
- 如何选择合适的BI工具
- Python生成二维码-qrcode
- win8 性能测试软件,首款支持Win8性能测试 新版3D Mark使用体验
- python周末看什么电影_电影院要开工了,用Python看一看最近有什么刚上映的电影...
- matlab偏微分方程工具箱求解
- sass笔记 - 实战中颜色的玩法总结
- 客户端和服务器之间的信息结构,客户端和服务器之间的信息结构
- 通过思科构造局域网_从Cisco DNA中心的管理的和设置的非结构Catalyst 9800无线局域网控制器...
- Java基础问题总结
- 计算机杀毒记录表格,11科室计算机杀毒登记表