17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

30.商城项目第三天

1. WebServlet代码的抽取。使用?+参数提交的形式。将所有的 Servlet抽取到一个Servlet中。在该Servlet中的doGet()doPost() 方法中拿到提交的参数再去调用应调的方法。

/*public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

//获得请求的哪个方法的method

String methodName = request.getParameter("method");

if("productList".equals(methodName)){

productList(request,response);

}else if("categoryList".equals(methodName)){

categoryList(request,response);

}else if("index".equals(methodName)){

index(request,response);

}else if("productInfo".equals(methodName)){

productInfo(request,response);

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

 */

再次抽取:

将该ProductServletdoGet()doPost()方法注释,写一类 BaseServletProductServlet的父类,重写service()方法。当访问 ProductServlet时会找到BaseServlet执行service()方法。(当某个 方法为propected时 ,反射拿不到该方法,徐改成public

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

2. 购物车

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

获取input的内容不可以将.val()放到外边。

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

当Map获得内容需要.value

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

这个地方尤其注意:在计算总的商品金额时,总金额=上一次的总 金额加上本次的小计。在session域中获得购物车时,记得名字要 相同,否则每次拿的都是新的购物车。

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

当跳转页面是重定向时,我们刷新页面,它会再走一次servlet, 总金额也会变大。所以使用servlet跳转时使用重定向。

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

1)以下解决方法是错误的:

之前在向Map中存商品时直接存,如果商品已存在,新的商品会 覆盖掉原来的商品,所以需判断,只需要将商品数更改即可。

更新商品数量的坑:(对象不是一个对象,获得的数据肯定不一样)

例:

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

2)正确方法:在map判断时如果存在已经购买的商品,根据判断的参数key取得已经存在的商品,通过该商品对象的引用获得购买的数量计算小计。

17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作 

17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

删除单个商品:

错误做法:

17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作 

正确做法:

将要删除的商品的pid传给servlet,然后该servlet获得sessionsession再获得存进去的cart购物车找到其中存的购物项,删 除后,要将总金额减去被删除的商品金额。

17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作 

当购物车被清空,需要做的是使用jstlif的表达式和el非空判 断表达式的给出 两种显示方式:<c:if test=”${empty }”></c:if>

 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作

 

清空列表:略

补充:

jsp页面点击跳转<a></a>标签,可以给一个友好提示:confirm弹框

<script>

  Function xxx(){

If(confirm(“您是否同意?”)){

Xxx

}

}

</script>

17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作