1.点进商品访问的servlet
package com.itheima.web.servlet;
import java.io.IOException;
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 com.itheima.domain.Product;
import com.itheima.service.ProductService;public class ProductInfoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得当前页
String currentPage = request.getParameter("currentPage");
//获得商品类别
String cid = request.getParameter("cid");
//获得要查询的商品的pid
String pid = request.getParameter("pid");
ProductService service = new ProductService();
Product product = service.findProductByPid(pid);
request.setAttribute("product", product);
request.setAttribute("currentPage", currentPage);
request.setAttribute("cid", cid);
//获得客户端携带cookie---获得名字是pids的cookie
String pids = pid;
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie : cookies){
if("pids".equals(cookie.getName())){
pids = cookie.getValue();
//1-3-2 本次访问商品pid是8----->8-1-3-2
//1-3-2 本次访问商品pid是3----->3-1-2
//1-3-2 本次访问商品pid是2----->2-1-3
//将pids拆成一个数组
String[] split = pids.split("-");//{3,1,2}
List<String> asList = Arrays.asList(split);//[3,1,2]
LinkedList<String> list = new LinkedList<String>(asList);//[3,1,2]
//判断集合中是否存在当前pid
if(list.contains(pid)){
//包含当前查看商品的pid
list.remove(pid);
list.addFirst(pid);
}else{
//不包含当前查看商品的pid 直接将该pid放到头上
list.addFirst(pid);
}
//将[3,1,2]转成3-1-2字符串
StringBuffer sb = new StringBuffer();
for(int i=0;i<list.size()&&i<7;i++){
sb.append(list.get(i));
sb.append("-");//3-1-2-
}
//去掉3-1-2-后的-
pids = sb.substring(0, sb.length()-1);
}
}
}
Cookie cookie_pids = new Cookie("pids",pids);
response.addCookie(cookie_pids);
request.getRequestDispatcher("/product_info.jsp").forward(request, response);
}protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2.点击返回执行的servlet
package com.itheima.web.servlet;
import java.io.IOException;
import java.util.ArrayList;
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 com.itheima.domain.PageBean;
import com.itheima.domain.Product;
import com.itheima.service.ProductService;public class ProductListByCidServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得cid
String cid = request.getParameter("cid");
String currentPageStr = request.getParameter("currentPage");
if(currentPageStr==null) currentPageStr="1";
int currentPage = Integer.parseInt(currentPageStr);
int currentCount = 12;
ProductService service = new ProductService();
PageBean pageBean = service.findProductListByCid(cid,currentPage,currentCount);
request.setAttribute("pageBean", pageBean);
request.setAttribute("cid", cid);
//定义一个记录历史商品信息的集合
List<Product> historyProductList = new ArrayList<Product>();
//获得客户端携带名字叫pids的cookie
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if("pids".equals(cookie.getName())){
String pids = cookie.getValue();//3-2-1
String[] split = pids.split("-");
for(String pid : split){
Product pro = service.findProductByPid(pid);
historyProductList.add(pro);
}
}
}
}
//将历史记录的集合放到域中
request.setAttribute("historyProductList", historyProductList);
request.getRequestDispatcher("/product_list.jsp").forward(request, response);
}protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}