购物车案例【简单版】(二)

简介: 为了巩固MVC的开发模式,下面就写一个购物车的小案例..

③数据库

这里就直接用集合模拟数据库了,简单的domo而已。

//既然是购物车案例,应该会有增删的操作,通过关键字查询书籍,所以使用LinkedHashMap集合

   privatestaticMap<String,Book>map=newLinkedHashMap<>();

   

   static{

       map.put("1",newBook("1","java","zhongfucheng","好书",99));

       map.put("2",newBook("2","javaweb","ouzicheng","不好的书",44));

       map.put("3",newBook("3","ajax","xiaoming","一般般",66));

       map.put("4",newBook("4","spring","xiaohong","还行",77));

   }


   publicstaticMap<String,Book>getAll(){



       returnmap;

   }

④开发dao

dao层应该至少提供获取所有的书籍和根据关键字获取得到书籍

publicclassBookDao{


   //获取存放着书籍的Map集合

   publicMapgetAll(){

       returnBookDB.getAll();

   }


   //根据关键字获取某本书籍

   publicBookfind(Stringid){

       returnBookDB.getAll().get(id);

   }

}

⑤开发service

service层就是对DAO层的一个封装

publicclassBusinessService{

   

       BookDaobookDao=newBookDao();

   

       /*列出所有的书*/

       publicMapgetAll(){

   

           returnbookDao.getAll();

       }


       /*根据书的id获取书*/

       publicBookfindBook(Stringid){

           returnbookDao.find(id);

       }

   

       //...待会还有其他的功能再从这里补充!

   }

⑥开发web

列出所有的书

开发提供JSP页面的Servlet

//调用service层的方法,获取得到存放书籍的Map集合

       BusinessServicebusinessService=newBusinessService();

       Mapbooks=businessService.getAll();

       

       //存放在request域对象中,交给jsp页面显示

       request.setAttribute("books",books);

       

       //跳转到jsp页面中

       request.getRequestDispatcher("/WEB-INF/listBook.jsp").forward(request,response);

开发显示所有书籍的jsp

<%@pagecontentType="text/html;charset=UTF-8"language="java"%>

<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>

<html>

<head>

   <title>显示所有的书籍</title>

</head>

<body>


<%--Servlet传递过来的是一个Map对象要显示所有的书籍就需要遍历Map集合EL表达式和JSTL标签合用--%>

<tableborder="1px">

   <tr>

       <td>书籍编号</td>

       <td>名称</td>

       <td>作者</td>

       <td>详细信息</td>

       <td>价格</td>

   </tr>


   <c:forEachitems="${books}"var="me">

       <tr>

           <td>${me.key}</td>

           <td>${me.value.name}</td>

           <td>${me.value.author}</td>

           <td>${me.value.description}</td>

           <td>${me.value.price}</td>

       </tr>

   </c:forEach>



</table>


</body>

</html>


购买操作

作为购物车的案例,怎么能没有购买的操作呢?于是乎就增加购买的操作

4.jpg

开发处理购买的Servlet

//获取得到传递过来的id

       Stringid=request.getParameter("bookid");


       //把用户想要买的书放到购物车上

       //用户不单单只有一个,要让购物车上只为当前的用户服务,就需要用到会话跟踪技术了

       Cartcart=(Cart)request.getSession().getAttribute("cart");


       //如果当前用户还没有点击过购买的商品,那么是用户的购物车是空的

       if(cart==null){

           cart=newCart();

           request.getSession().setAttribute("cart",cart);

       }


       //调用BussinessService的方法,实现购买功能!

       BusinessServicebusinessService=newBusinessService();

       businessService.buyBook(id,cart);


       //跳转到购物车显示的页面上

       request.getRequestDispatcher("/listCart.jsp").forward(request,response);

  • 在我们前面开发BusinessService时,是没有buyBook()这个方法的!下面更新了BusinessService的代码

/*

   * 在购买书籍的时候,我们发现需要将书籍添加到购物车上

   * 如果我们直接在Servlet上使用Cart实体对象的addBook()和BookDao对象的find()方法,是可以完成功能的

   *

   * 但是,这样web层的程序就跟Dao层的耦合了,为了代码性的健壮性和解耦,我们在BusinessService中对他俩进行封装

   *

   * 于是有了buyBook()这个方法!

   * */

   

   /*把用户想买的书籍添加到当前用户的购物车上*/

   publicvoidbuyBook(Stringid,Cartcart){


       Bookbook=bookDao.find(id);

       cart.addBook(book);


   }

目录
相关文章
|
4月前
|
JSON API 开发者
淘宝获取购物车的商品列表 API接口
淘宝提供了获取购物车商品列表 API 接口,允许开发者通过编程方式获取用户购物车中的商品列表。这个 API 接口可以帮助开发者更好地了解用户在购物车中添加了哪些商品,以及每个商品的基本信息,例如商品 ID、名称、价格、数量等。
|
6月前
|
JavaScript 前端开发 Java
55dwr - 购物车案例(实现购物车)
55dwr - 购物车案例(实现购物车)
21 0
|
8月前
|
SQL 存储 前端开发
显示购物车列表【项目 商城】
显示购物车列表【项目 商城】
34 0
|
8月前
基础购物车
基础购物车
28 0
|
12月前
uniapp——添加购物车数据以及删除购物车数据
添加购物车数据以及删除购物车数据
122 0
|
前端开发 JavaScript
【畅购商城】购物车模块之修改购物车以及结算
【畅购商城】购物车模块之修改购物车以及结算
137 0
【畅购商城】购物车模块之修改购物车以及结算
|
前端开发
购物车项目(前端)
购物车项目(前端)
购物车项目(前端)
html+css实战183-购物车
html+css实战183-购物车
105 0
html+css实战183-购物车