检索java servlet中存储在cookie中的pid值

时间:2014-07-05 11:40:15

标签: java servlets cookies shopping-cart

我正在做一个购物项目。我想要做的是存储用户点击的产品的产品ID(pid)"添加到购物车"

我在所有调用servlet " Cart.java" 的产品上都有这种html代码及其各自的pID:

Product1: <a href=Cart?product=1>add to cart?</a> //here 1 is the pid
Product2: <a href=Cart?product=2>add to cart?</a> //here 2 is the pid

单个页面有多个产品,并且有不同的页面与不同类型的产品相关联(页面是使用JDBC动态创建的)。

我想要的是用户点击的所有产品&#34;添加到购物车&#34; ,pid存储在某处(我正在使用Cookie,因为我认为它会工作..会吗?) 后来我应该可以在另一页上获得所有这些PID(当用户点击&#34;带我到我的购物车&#34; )以便我可以显示他们的详细信息从数据库中询问用户是否要购买它们。

&#34;带我到我的购物车&#34; 超链接调用另一个servlet ViewCart:

<a href="ViewCart">Take me to my cart</a> 

servlet cart.java 上的cookie代码是:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String id=request.getParameter("product").trim();
Cookie ck=new Cookie("pid",id);//creating cookie object
response.addCookie(ck);
RequestDispatcher rd=request.getRequestDispatcher("product.jsp");
rd.include(request, response);
}

&#34; product.jsp&#34;是显示产品的页面。

servlet ViewCart.java 上的代码是:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


PrintWriter out = response.getWriter();

        Cookie ck[]=request.getCookies();
        for(Cookie i: ck)
        {
            if(i.getName().equals("pid"))
            out.print(ck.toString()+"</br>");
        }
        RequestDispatcher rd=request.getRequestDispatcher("cart.jsp");
        rd.include(request, response);
}

但这不起作用我是初学者所以不知道我做错了。我还想在用户注销后立即销毁cookie中的值。还告诉我,如果不是饼干我还应该使用什么?

我想我搞砸了一切。 :(

1 个答案:

答案 0 :(得分:0)

我认为你最好选择一个框架,以避免重新发明轮子,并从其他人已经制造和学习的错误中吸取教训。无论如何,没有必要捣乱饼干和如此低的水平。只需将Cart对象附加到当前会话即可:

public class Cart {
  public void addItem(String id, Integer quantity) {}
  public Integer getItemQuantity(String id) {}
  public Map<String, Integer> getAllItems() {}
}

然后你有一个servlet将一个项目添加到购物车(对于更改应用程序状态的请求,你最好使用POST):

public void doPost(HttpServletRequest req, HttpServletResponse resp) {
  HttpSession session = req.getSession();
  Cart cart = (Cart) session.getAttribute("cart");
  if (cart == null) {
    cart = new Cart();
    session.setAttribute("cart", cart)
  };
  String id = req.getParamter("id");
  Integer quantity = Integer.parseInt(req.getParamter("quantity"));
  cart.addItem(id, quantity);
  // write your response
}

最后是你的ViewCartServlet

public void doGet(HttpServletRequest req, HttpServletResponse resp) {
  Cart cart = (Cart) req.getSession().getAttribute("cart");
  if (cart != null) {
    // print items
  } else {
    // print an error
  }
}