1.ProductDao类
public Product findProductByPid(String pid) throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from product where pid=?";
return runner.query(sql, new BeanHandler<Product>(Product.class), pid);
}
2.ProductService类
//通过pid查找商品信息
public Product findProductByPid(String pid) {
try {
return productDao.findProductByPid(pid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
3.FindProductInfoByPidServlet类
public class FindProductInfoByPidServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ProductService productService=new ProductService();
private CategoryService categoryService=new CategoryService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pid=request.getParameter("pid");
Product product= productService.findProductByPid(pid);
Category category= categoryService.findCategoryByCid(product.getCid()+"");
product.setCategory(category);
request.setAttribute("product", product);
String pids=pid;
//将pid放入cookie中
Cookie [] cookies= request.getCookies();
if(cookies!=null){
for(Cookie cookie: cookies){
if("pids".equals(cookie.getName())){
//将值 3-2-8存放
pids=cookie.getValue();
String [] split= pids.split("-");
List<String> aslist=Arrays.asList(split);
LinkedList<String> list=new LinkedList<String>(aslist);
if(list.contains(pid)){
list.remove(pid);
list.addFirst(pid);
}else{
list.addFirst(pid);
}
StringBuffer sb=new StringBuffer();
for(int i=0;i<list.size();i++){
sb.append(list.get(i)).append("-");
}
sb.deleteCharAt(sb.length()-1);
pids=sb.toString();
}
}
}
Cookie cookie=new Cookie("pids", pids);
response.addCookie(cookie);
request.getRequestDispatcher("product_info.jsp").forward(request, response);
}
}
4.FindProductByCategroyServlet类POST方法添加如下代码 展示浏览记录
//浏览记录
List<Product> historyList=new ArrayList<Product>();
Cookie [] cookies=request.getCookies();
if(cookies!=null){
for(Cookie cookie : cookies){
if("pids".equals(cookie.getName())){
String pids=cookie.getValue();
String [] splits=pids.split("-");
for (int i = 0; i < splits.length; i++) {
String pid=splits[i];
Product product= productService.findProductByPid(pid);
historyList.add(product);
}
}
}
}
request.setAttribute("historyList",historyList);