按照上篇文章的分析来具体实现:

定义所需包名来分工:

功能一:显示所有图书:

1、数据层:用双列集合来保存数据,用静态方法来添加数据里嵌套Book类(在实体类包domain里来创建,代码在下面)的构造方法,

public class DB {private static Map<String,Book> map=new LinkedHashMap<String,Book>();static{map.put("1", new Book("1","java","A",20));map.put("2", new Book("2","c++","B",21));map.put("3", new Book("3","PHP","C",22));map.put("4", new Book("4",".NET","D",23));map.put("4", new Book("5","Python","E",23));map.put("6", new Book("6","C#","F",23));}
          /*按照实施过程来创建查找方法,通过类名来调用该静态方法。返回map对象。即上篇文章的
             实施过程,可返回参考*/
         //注意map的key和value对应public static Map<String,Book> findAllBook(){return map;}public static Book findBookById(String id){return DB.findBookById(id);}
}

2、实体层

public class Book {private String id;private String name;private String author;private double price;private int num=1;public Book() {}
            //即对应DB类里的new Book("1","java","A",20)
public Book(String id, String name, String author, int price) {super();this.id = id;this.name = name;this.author = author;this.price = price;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(int price) {this.price = price;}}

3、访问层

//访问层/持久层
public class BookDao {//查询所有的图书private DB db=new DB();public Map<String,Book> findAllBook(){return DB.findAllBook();}public static Book findBookById(String id){return DB.findBookById(id);}}

4、业务层

public class BookService {private BookDao bookDao = new BookDao();// 查询所有图书public Map<String, Book> findAllBook() {return bookDao.findAllBook();}// 购买图书public void buyBook(String id, Car car) {// 取得图书列表Map<String, Item> map = car.getMap();// 根据id获得图书Item item = map.get(id);if (item == null) {Book book = bookDao.findBookById(id);// 加入购物车item = new Item();// Book book =new Book();item.setBook(book);item.setNum(1);map.put(id, item);} else {item.setNum(item.getNum() + 1);}}public void deleteBook(String id, Car car) {Map<String, Item> map = car.getMap();map.remove(id);}public void clearCar(Car car) {Map<String, Item> map = car.getMap();map.clear();}public void updateBook(String id, int num, Car car) {Map<String, Item> map = car.getMap();Item item = map.get(id);item.setNum(num);}}

5、控制层

 
public class ListBookServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {BookService bookservice=new BookService();Map<String,Book> map=bookservice.findAllBook();request.setAttribute("map", map);//请求转发:request.getRequestDispatcher("/view/listAllBook.jsp").forward(request, response);}
}


6、显示层
listAllBook.jsp
<html>
<body><table border="1" align="center" width="80%"><caption>图书列表</caption><tr><th>编号</th><th>书名</th><th>作者</th><th>单价</th></tr><c:forEach var="entry" items="${map}"><tr><td>${entry.value.id}</td><td>${entry.value.name}</td><td>${entry.value.auther}</td><td>${entry.value.price}</td><td><a style="text-decoration:none"href="BuyServlet?id=${entry.value.id}">购买</a></td></tr></c:forEach></table>
</body>
</html>
												

使用JSP做购物车一(实现)相关推荐

  1. 如何用原生jS做购物车

    如何用原生jS做购物车 今天给大家分享如何用原生js做购物车,我们都逛过淘宝.京东这样购物网站,像这种购物网站,购物车是肯定少不了的 ,我们在天猫上购物,一开始一个页面有很多种商品,然后你在这里面看中 ...

  2. 使用JSP做一个小小的新闻项目(END)

    使用JSP做一个小小的新闻项目(END) 用户主页: show.jsp:用户的一个浏览界面 管理员主页: index.jsp:管理员主页(完全版,没多大变化,完善了一些机制) 新闻阅读: read.j ...

  3. java jsp 日历_一个用JSP做的日历

    一个用JSP做的日历 更新时间:2006年10月13日 00:00:00   作者: String month; %> year =request.getParameter("year ...

  4. jsp java 后台_[Java教程]用JSP做后台管理系统

    [Java教程]用JSP做后台管理系统 0 2015-10-13 23:00:25 突然很开心,紧张了好几天的项目终于不那么赶了. 我是一个比别人慢半拍的人,所以一定要比别人多付出一点努力. 今天在进 ...

  5. jsp电子商务 购物车实现之一 设计篇

    购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: 2.用session实现购物车: 3.用cookie和数据库(购物车信息持久化)实现购物车: ============= ...

  6. jsp做的留言系统(防止非法登录、增删改查留言)

    第一步:在myeclipse中导入数据库 CREATE TABLE `note` (`id` int(11) NOT NULL AUTO_INCREMENT,`title` varchar(20) N ...

  7. JSP | 简易购物车的实现

    本程序共包含四部分文件,只包含jsp文件,将java代码嵌入到jsp文件中实现: loginID.jsp.shop.jsp.food.jsp.count.jsp,分别实现的功能是输入ID页面.超链接功 ...

  8. 简单三步!教你用前端表格控件SpreadJS做购物车

    SpreadJS结合40余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件,基于 HTML5,兼容 450 多种 Excel 公式,具备"高性能.跨平台.与 Excel 高度兼 ...

  9. python做购物车代码大全-python 字典实现简单购物车

    # -*- coding: utf-8 -*- #总金额 asset_all=0 i1=input('请输入总资产:') asset_all=int(i1) #商品列表 goods=[ {'name' ...

最新文章

  1. 黑科技:绕过眼睛植入幻觉,科学家成功在盲人脑海中呈现指定图像!
  2. web 点击劫持 X-Frame-Options
  3. Qt学习笔记(持续更新)
  4. CPU Burst有副作用吗?让数学来回答!| 龙蜥技术
  5. 在四个小时内组装好这个游戏机
  6. python具有可扩展的特性_Python的特点
  7. 把1,2,3…n*n 的数字按照顺时针螺旋的形式填入数字矩阵
  8. android 内存测试
  9. Joost-体验全球的视频节目
  10. (附源码)ssm小米购物网站 毕业设计 261624
  11. Linux实用教程(第三版)
  12. Android 自定义搜索框(带搜索图标、清除图标、语音图标)
  13. 关于 Bandizip 每次解压都催你更新
  14. 戴尔服务器配置RAID
  15. twitter账户受限_如何为您的企业设置Twitter帐户
  16. 设计一款理财产品并发布推广
  17. errno和perror
  18. 【面经专栏】独家整理【C++】面经
  19. 前端、后端、测试,究竟应该如何抉择?
  20. ubuntu20.04美化

热门文章

  1. 面试题之——乐观锁和悲观锁区别
  2. Qt QTabWidget插入widget(重要的是编程思想)
  3. H264 raw stream获取nalu的长度信息
  4. 产品经理需要的文档汇总
  5. 电脑c盘满了怎么清理,快速清理,用这5招
  6. “Random“ objects should be reused解决 Random() 低效问题
  7. 怎样用手机把视频变成GIF表情包?原来那么简单,网友:看完涨知识了
  8. Html Table 合并单元格
  9. 垂直水平居中的方法总结和适用场景
  10. linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件