查看用户浏览器过的商品--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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程