查看用户浏览器过的商品--Cookie
ProductDao:list数组模拟数据库,获取数据 Product:model 把数据对象化 Logic:service层 DetailServlet:显示单个商品数据 ListServlet:商品集合显示和显示浏览过的商品。
ProductDao:
package dao; import java.util.ArrayList; import java.util.List; import entity.*; public class ProductDao { static List<Product> list=new ArrayList<Product>(); static { for(int i=0;i<10;i++) { Product product=new Product(); product.setNumber(i); product.setName("我是"+i); list.add(product); } } public Product findOne(int id) { for (Product product:list) { if(product.getNumber()==id) { return product; } } return null; } public List<Product> findList(){ return list; } }
Product:
package entity; public class Product { private int number; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } private String name; }
Logic:
package service; import java.util.List; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import dao.ProductDao; import entity.Product; public class Logic { public Product findOne(int id) { ProductDao productDao=new ProductDao(); return productDao.findOne(id); } public List<Product> findList(){ ProductDao productDao=new ProductDao(); return productDao.findList(); } }
DetailServlet:
package servlet; 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.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Product; import javafx.print.Collation; import service.*; @WebServlet("/DetailServlet") public class DetailServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); int id=Integer.parseInt(request.getParameter("id")); Logic logic=new Logic(); Product product=logic.findOne(id); String name=product.getName(); PrintWriter printWriter=response.getWriter(); String html=""; html+="<html>"; html+="<body>"; html+="<table border='1' align='center' width='600px'>"; html+="<tr>"; html+="<th>编号</th><th>名字</th>"; html+="</tr>"; if(product!=null) { html+="<tr>"; html+="<td>"+id+"</td>"+"<td>"+name+"</td>"; html+="</tr>"; } html+="</table>"; html+="<center><a href='"+request.getContextPath()+"/ListServlet'>"+"返回列表</a></center>"; html+="</body>"; html+="</html>"; printWriter.write(html); Cookie cookie=new Cookie("lastone", createValue(request, id)); cookie.setMaxAge(100); response.addCookie(cookie); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } //修改接收到的Cookie值 public String createValue(HttpServletRequest request,int id) { String idString=String.valueOf(id); String prodHist=null; Cookie[] cookies=request.getCookies(); if(cookies!=null) { for(Cookie cookie:cookies) { if(cookie.getName().equals("lastone")) { prodHist=cookie.getValue(); break; } } } if(prodHist==null||cookies==null) { return idString; } String[] strings=prodHist.split("#"); List<String> collation=Arrays.asList(strings); LinkedList<String> linkedList=new LinkedList<String>(collation); if(linkedList.size()<3) { if(linkedList.contains(idString)) { linkedList.remove(idString); linkedList.addFirst(idString); }else { linkedList.addFirst(idString); } }else { if(linkedList.contains(idString)) { linkedList.remove(idString); linkedList.addFirst(idString); }else { linkedList.removeLast(); linkedList.addFirst(idString); } } StringBuffer stringBuffer=new StringBuffer(); for(String string:linkedList) { stringBuffer.append(string+"#"); } String result=stringBuffer.toString(); result=result.substring(0, result.length()-1); return result; } }
ListServlet:
package servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Product; import service.Logic; @WebServlet("/ListServlet") public class ListServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); //service层 Logic logic=new Logic(); List<Product> list=logic.findList(); PrintWriter printWriter=response.getWriter(); String html=""; html+="<html>"; html+="<body>"; html+="<table border='1' align='center' width='600px'>"; html+="<tr>"; html+="<th>编号</th><th>名字</th>"; html+="</tr>"; for(Product One:list) { String name=One.getName(); int id=One.getNumber(); html+="<tr>"; html+="<td>"+id+"</td>"+"<td><a href='"+request.getContextPath()+"/DetailServlet?id="+id+"'>"+name+"</a></td>"; html+="</tr>"; } html+="</table>"; String value=null; Cookie[] cookies= request.getCookies(); if(cookies!=null) { for(Cookie cookie:cookies) { if(cookie.getName().equals("lastone")) { value=cookie.getValue(); break; } } String[] strings=value.split("#"); for(String number:strings) { Product product=logic.findOne(Integer.parseInt(number)); html+=product.getNumber()+" "+product.getName()+"<br/>"; } } html+="</body>"; html+="</html>"; printWriter.write(html); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
难点:如何保留浏览过的商品?
生成cookie的值 分析: 当前cookie值 传入商品id 最终cookie值 null或没有prodHist 1 1 (算法: 直接返回传入的id ) 1 2 2,1 (没有重复且小于3个。算法:直接把传入的id放最前面 ) 2,1 1 1,2(有重复且小于3个。算法:去除重复id,把传入的id放最前面 ) 3,2,1 2 2,3,1(有重复且3个。算法:去除重复id,把传入的id放最前面) 3,2,1 4 4,3,2(没有重复且3个。算法:去最后的id,把传入的id放最前面)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
sklearn调包侠之无敌小抄
scikit-learn(以下简称为sklearn)是用Python开发的机器学习库,其中包含大量机器学习算法、数据集,是数据挖掘方便的工具。本教程参考《Python机器学习及实战》、《scikit-learn机器学习》和sklearn的官方文档,详细讲解如何使用sklearn实现机器学习算法。首先,依旧讲讲写本系列教程的原因:第一,相比于直接编写各种算法,sklearn简单容易上手;第二,参考书籍有些部分讲解不细致,sklearn版本的更新,官方文档虽然齐全,但是是英文等等,希望通过编写这个教程,可以让读者轻松上手机器学习;第三,依旧是本人的学习记录过程。 本系列教程特点: 好学易用 案例实操多 哪些读者可以使用: 了解机器学习的基本术语 会Python语言 会numpy和pandas库的使用 sklearn小抄 在愉悦的做一个调包侠之前,老衲给予施主一份绝世宝典(sklearn小抄),之后你的任督二脉将会打开,在sklearn调包的路上所向披靡。首先上宝典,高清pdf请前往此处下载: (链接:https://pan.baidu.com/s/12c0CIP6c6rgc4Y5zEnUJ...
- 下一篇
Springboot整合mybatis框架(含实例Demo)
最近要交一份project项目作业,前后端分离,我负责后端,选用了Springboot+mybatis进行整合操作。 一.前期准备: 开发使用的IDE为IntelliJ IDEA:https://www.jetbrains.com/idea/ maven仓库整合jar包:http://mvnrepository.com/artifact/org.apache.maven/maven-plugin-api/3.5.3 下完上述两样后,IDEA安装略,我们开始使用IDEA配置默认的maven库 准备.gif 从GIF中可以看到,我们点击configure菜单项下的Project Defaults来设置项目的默认配置,从settings选项中,找到Maven库一栏,选择我们刚才下载好的maven仓库的安装目录。 创建好我们的数据表。数据库名为jiguo,表名为jiguo_user。 数据表.JPG 以上,前期准备就准备好啦。 二.项目结构一栏以及实现步骤。 概览.JPG 实现步骤: 1.Springboot项目创建 2.在pom.xml中,使用maven架包导入mybatis依赖depend...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 2048小游戏-低调大师作品
- Docker快速安装Oracle11G,搭建oracle11g学习环境