servlet实现浏览记录功能

来源:互联网 发布:物流软件定制开发 编辑:程序博客网 时间:2024/06/04 19:18
String pid = request.getParameter("pid");Product product = ps.findProductByPid(pid);request.setAttribute("product", product);// 浏览记录String pids = pid;Cookie[] cookies = request.getCookies();//当coockie不是空的时候,也就是不是第一次浏览的时候if (cookies != null) {for (Cookie cookie : cookies) {// 找到key为pids的cookieif (cookie.getName().equals("pids")){//如果有pids的cookie说明不是第一次点击商品详情了//拼接pid们组成的pids字符串String[] pid_stirngs = cookie.getValue().split("!");//将字符串数组转化为linkListList<String> list = Arrays.asList(pid_stirngs);LinkedList<String> linkedList = new LinkedList<String>(list);//此次点击的产品的pid在不在linkedList内,如果不在,那么直接添加到首位,如果在,删除之前一样的再添加到首位if (linkedList.contains(pid)){//删除之前一样的linkedList.remove(pid);//添加至首位linkedList.addFirst(pid);}else{//添加至首位linkedList.addFirst(pid);}//只保留5个if (linkedList.size() > 5){linkedList.subList(5, linkedList.size()).clear();}////将linkedlist转换为字符串数组//StringBuffer sbuffer = new StringBuffer();//for (String string : linkedList) {//sbuffer.append(string);//sbuffer.append("!");//}////去掉最后的!//sbuffer.deleteCharAt(sbuffer.length() - 1);////将新的字符串赋给pids//pids = sbuffer.toString();pids = StringUtils.join(linkedList,"!");}}}System.out.println(pids);//存入cookieCookie cookie = new Cookie("pids", pids);response.addCookie(cookie);request.getRequestDispatcher("/product_info.jsp").forward(request,response);
该方法实现了浏览记录的功能,原理是使用cookie进行存储,并把每一个商品的id中间使用!来连接,用的时候 字符串分割掉!,并使用了LinkedList,因为该种集合的更新操作执行效率较高,加了注释那几行代码由注释后的一行代码代替 pids = StringUtils.join(linkedList,"!");
如果使用这种形式转换为string类型的话,需要导入一个包commons-lang-2.6.jar,否则只能按照注释掉的代码来进行转换
原创粉丝点击