问答详情
源自:2-8 测试购物车类

response.addCookie(cookie);这代码存在问题?

在details.jsp的第158行response.addCookie(cookie);这句话存在问题,如果注释掉就可以用了但是却不能实现浏览记录功能,求各位大神指教?????

这是用的老师的代码,没有改过。

代码如下

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %>

<%@ page import="entity.Items"%>

<%@ page import="dao.ItemsDAO"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My JSP 'details.jsp' starting page</title>

    

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

<link href="css/main.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="js/lhgcore.js"></script>

    <script type="text/javascript" src="js/lhgdialog.js"></script>

    <script type="text/javascript">

      function selflog_show(id)

      { 

         var num =  document.getElementById("number").value; 

         J.dialog.get({id: 'haoyue_creat',title: '购物成功',width: 600,height:400, link: '<%=path%>/servlet/CartServlet?id='+id+'&num='+num+'&action=add', cover:true});

      }

      function add()

      {

         var num = parseInt(document.getElementById("number").value);

         if(num<100)

         {

            document.getElementById("number").value = ++num;

         }

      }

      function sub()

      {

         var num = parseInt(document.getElementById("number").value);

         if(num>1)

         {

            document.getElementById("number").value = --num;

         }

      }

     

    </script>

    <style type="text/css">

  hr{

    

    border-color:FF7F00; 

  }

  

  div{

     float:left;

     margin-left: 30px;

     margin-right:30px;

     margin-top: 5px;

     margin-bottom: 5px;

    

  }

  div dd{

     margin:0px;

     font-size:10pt;

  }

  div dd.dd_name

  {

     color:blue;

  }

  div dd.dd_city

  {

     color:#000;

  }

  div #cart

  {

    margin:0px auto;

    text-align:right; 

  }

  span{

    padding:0 2px;border:1px #c0c0c0 solid;cursor:pointer;

  }

  a{

     text-decoration: none; 

  }

</style>

  </head>

  

  <body>

    <h1>商品详情</h1>

    <a href="index.jsp">首页</a> >> <a href="index.jsp">商品列表</a>

    <hr>

    <center>

      <table width="750" height="60" cellpadding="0" cellspacing="0" border="0">

        <tr>

          <!-- 商品详情 -->

          <% 

             ItemsDAO itemDao = new ItemsDAO();

             Items item = itemDao.getItemsById(Integer.parseInt(request.getParameter("id")));

             if(item!=null)

             {

          %>

          <td width="70%" valign="top">

             <table>

               <tr>

                 <td rowspan="5"><img src="images/<%=item.getPicture()%>" width="200" height="160"/></td>

               </tr>

               <tr>

                 <td><B><%=item.getName() %></B></td> 

               </tr>

               <tr>

                 <td>产地:<%=item.getCity()%></td>

               </tr>

               <tr>

                 <td>价格:<%=item.getPrice() %>¥</td>

               </tr>

               <tr>

                 <td>购买数量:<span id="sub" onclick="sub();">-</span><input type="text" id="number" name="number" value="1" size="2"/><span id="add" onclick="add();">+</span></td>

               </tr> 

             </table>

             <div id="cart">

               <img src="images/buy_now.png"><a href="javascript:selflog_show(<%=item.getId()%>)"><img src="images/in_cart.png"></a><a href="servlet/CartServlet?action=show"><img src="images/view_cart.jpg"/></a>

             </div>

          </td>

          <% 

            }

          %>

          <% 

              String list ="";

              //从客户端获得Cookies集合

              Cookie[] cookies = request.getCookies();

              //遍历这个Cookies集合

              if(cookies!=null&&cookies.length>0)

              {

             for(Cookie c:cookies)

             {

                 if(c.getName().equals("ListViewCookie"))

                 {

                    list = c.getValue();

                 }

             }

         }

              

              list+=request.getParameter("id")+",";

              //如果浏览记录超过1000条,清零.

              String[] arr = list.split(",");

              if(arr!=null&&arr.length>0)

              {

                  if(arr.length>=1000)

                  {

                      list="";

                  }

              }

              Cookie cookie = new Cookie("ListViewCookie",list);

              response.addCookie(cookie);

          

          %>

          <!-- 浏览过的商品 -->

          <td width="30%" bgcolor="#EEE" align="center">

             <br>

             <b><font color="#FF7F00">您浏览过的商品</font></b><br>

             <!-- 循环开始 -->

             <% 

                ArrayList<Items> itemlist = itemDao.getViewList(list);

                if(itemlist!=null&&itemlist.size()>0 )

                {

                   System.out.println("itemlist.size="+itemlist.size());

                   for(Items i:itemlist)

                   {

                         

             %>

             <div>

             <dl>

               <dt>

                 <a href="details.jsp?id=<%=i.getId()%>"><img src="images/<%=i.getPicture() %>" width="120" height="90" border="1"/></a>

               </dt>

               <dd class="dd_name"><%=i.getName() %></dd> 

               <dd class="dd_city">产地:<%=i.getCity() %>&nbsp;&nbsp;价格:<%=i.getPrice() %> ¥ </dd> 

             </dl>

             </div>

             <% 

                   }

                }

             %>

             <!-- 循环结束 -->

          </td>

        </tr>

      </table>

    </center>

  </body>

</html>


提问者:慕粉九星 2016-10-31 10:56

个回答

  • Eternal34
    2017-09-23 22:00:31

    tomcat版本问题,不能识别“,”,改成“#”解决


    list+=request.getParameter("id")+"#";

        //如果浏览记录过多>=100就清零

        String[] arr=list.split("#");

        //用split讲该行的单词分割成列表,每个单词就时一个列表



  • 梨好橙
    2017-09-05 16:28:05

    +1,有没有解决了的伙伴啊


  • Maker_Dong
    2016-11-27 11:10:26

    list+=request.getParameter("id")+",";

    改成

    list+=request.getParameter("id")+"#";

    tomcat版本问题,不识别“,”

    昨天遇到了一样的问题

  • 慕粉九星
    2016-10-31 11:18:17

    改成#后myeclipse会直接提醒使用了不可识别的字符啊?tomcat版本8.5