史上功能最全Web购物车实现(基于jsp+java+servlet+dao)包括后台图书管理、实现数据库分页等功能 您所在的位置:网站首页 java图书管理系统项目报告怎么写 史上功能最全Web购物车实现(基于jsp+java+servlet+dao)包括后台图书管理、实现数据库分页等功能

史上功能最全Web购物车实现(基于jsp+java+servlet+dao)包括后台图书管理、实现数据库分页等功能

2023-12-25 11:21| 来源: 网络整理| 查看: 265

购物车实现 基本功能描述页面展示购物车数据库信息代码路径展示代码实现bean基本属性的配置dao路径下对数据库进行的处理首页代码BookServlet逻辑处理主页面展示页面cart.jsp购物车信息展示图书后台信息管理

基本功能描述

本项目实现的是一个可视化的购物车系统,其主要功能如下。

用户进入登录页面进行登录,登陆成功则跳转到购物车主页面。由于登录页面在前一篇博客中已说明,本篇博客不再赘述,有需要者可以在此链接中查看:https://blog.csdn.net/qq_43505820/article/details/109562912。通过连接数据库显示图书信息,用户可以选择要加入购物车的物品数量,所加入的物品信息在我的购物车中即可查看。我的购物车中对所加入购物车的商品进行查看,同时可进行数量修改和删除,清空购物车等功能。图书管理页面是对数据库中的商品信息的展示,可以添加图书,也可以对价格,售卖情况等信息进行修改添加删除等,实现基本的增删改查操作。购物车和图书管理都实现了分页功能(数据过多无法在一个页面显示,可使用分页功能使其可视化更强。) (备注:读者在实现功能的时候可以将其细化,比如用户只能进入购物车页面无法查看后台的图书数据,只有管理员才能进入图书管理系统) 页面展示

购物车主页面 在这里插入图片描述 我的购物车页面展示 在这里插入图片描述 图书管理页面 在这里插入图片描述

购物车数据库信息

本项目使用的是mysql:建表如下:

CREATE TABLE `shopbook` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name1` varchar(100) DEFAULT NULL, `author` varchar(100) DEFAULT NULL, `price` decimal(11,2) DEFAULT NULL, `sales` int(11) DEFAULT NULL, `stock` int(11) DEFAULT NULL, `img_path` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8

具体数据请自己进行添加。

代码路径展示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

代码实现 bean基本属性的配置

Books属性:

package bean; import java.math.BigDecimal; public class Books { private Integer id; private String name1; private String author; private BigDecimal price; private Integer sales;//出售量 private Integer stock;//库存量 //默认图片路径 private String imgPath="img/6f99aa07366c5fb5.jpg"; public Books(){} public Books(Integer id, String name, String author, BigDecimal price, Integer sales, Integer stock, String imgPath) { this.id = id; this.name1 = name; this.author = author; this.price = price; this.sales = sales; this.stock = stock; if(imgPath!=null&&!"".equals(imgPath)) { this.imgPath = imgPath; } } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name1; } public void setName(String name) { this.name1 = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Integer getSales() { return sales; } public void setSales(Integer sales) { this.sales = sales; } public Integer getStock() { return stock; } public void setStock(Integer stock) { this.stock = stock; } public String getImgPath() { return imgPath; } public void setImgPath(String imgPath) { if(imgPath!=null&&!"".equals(imgPath)) { this.imgPath = imgPath; } } @Override public String toString() { return "Books{" + "id=" + id + ", name='" + name1 + '\'' + ", author='" + author + '\'' + ", price=" + price + ", sales=" + sales + ", stock=" + stock + ", imgPath='" + imgPath + '\'' + '}'; } }

Cart:

package bean; import java.math.BigDecimal; import java.util.LinkedHashMap; import java.util.Map; public class Cart{ // private Integer totalCount; // private BigDecimal totalPrice; private Map items=new LinkedHashMap(); public Cart(){} @Override public String toString() { return "Cart{" + "totalCount=" + getTotalCount() + ", totalPrice=" + getTotalPrice() + ", items=" + items + '}'; } //通过map进行遍历 public Integer getTotalCount() { Integer totalCount=0; for(Map.Entry entry:items.entrySet()){ totalCount+=entry.getValue().getCount(); } return totalCount; } public BigDecimal getTotalPrice() { BigDecimal totalPrice=new BigDecimal(0); for(Map.Entry entry:items.entrySet()){ totalPrice=totalPrice.add(entry.getValue().getTotalPrice()); } return totalPrice; } public Map getItems() { return items; } public void setItems(Map items) { this.items = items; } //添加商品 public void addItem(CartItem cartItem){ //获取到cartItem的ID 对他的属性进行添加 CartItem item = items.get(cartItem.getId()); items.put(cartItem.getId(),cartItem); } public void deleteItem(Integer id){ items.remove(id); } //清空购物车 public void clear(){ items.clear(); } //修改商品数量 public void updateCount(Integer id,Integer count){ //先查看购物车中是否有该商品,有则修改商品数量 CartItem cartItem = items.get(id); if(cartItem!=null){ cartItem.setCount(count); cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount()))); } } }

CartItem:

package bean; import java.math.BigDecimal; public class CartItem { private Integer id; private String name; private Integer count; private BigDecimal price; private BigDecimal totalPrice; public CartItem(){} public CartItem(Integer id, String name, Integer count, BigDecimal price, BigDecimal totalPrice) { this.id = id; this.name = name; this.count = count; this.price = price; this.totalPrice = totalPrice; } @Override public String toString() { return "CartItem{" + "id=" + id + ", name='" + name + '\'' + ", count=" + count + ", price=" + price + ", totalPrice=" + totalPrice + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public BigDecimal getTotalPrice() { return totalPrice; } public void setTotalPrice(BigDecimal totalPrice) { this.totalPrice = totalPrice; } }

Page:

package bean; import java.util.List; /** * * @createTime 2020/11/26 9:17 * @description */ public class Page { //每页显示数量 public static final Integer Page_Size=4; //当前页码 private Integer pageNo; //总页码 private Integer pageTotal; private Integer pageSize=Page_Size; //总记录数 private Integer pageTotalCount; //当前页数据 private List item; @Override public String toString() { return "Page{" + "pageNo=" + pageNo + ", pageTotal=" + pageTotal + ", pageSize=" + pageSize + ", pageTotalCount=" + pageTotalCount + ", item=" + item + '}'; } public static Integer getPage_Size() { return Page_Size; } public Integer getPageNo() { return pageNo; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public Integer getPageTotal() { return pageTotal; } public void setPageTotal(Integer pageTotal) { this.pageTotal = pageTotal; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getPageTotalCount() { return pageTotalCount; } public void setPageTotalCount(Integer pageTotalCount) { this.pageTotalCount = pageTotalCount; } public List getItem() { return item; } public void setItem(List item) { this.item = item; } }

User:

package bean; public class User { private String name; private String pd; public User(){} public String getPd() { return pd; } public void setPd(String pd) { this.pd = pd; } public String getName() { return name; } public void setName(String name) { this.name = name; } } dao路径下对数据库进行的处理

BookDao:

package dao.impl; import bean.Books; import java.util.List; /** * @createTime 2020/11/24 14:51 * @description */ public interface BookDao { //实现增删改查 public int addBook(Books book); public int deleteBookById(Integer id); public int updateBook(Books book); public Books queryBookById(Integer id); public List queryBooks(); public int queryForPageTotalCount(); public List queryForPageItems(Integer begin, Integer pageSize); }

BookDaoImpl

package dao.impl; import bean.Books; import bean.Page; import java.sql.*; import java.util.LinkedList; import java.util.List; //访问数据库 对数据库进行增删改查操作 public class BookDaoImpl implements BookDao { PreparedStatement preparedStatement = null; ResultSet rs = null; Connection con = null; //向数据库中添加书 @Override public int addBook(Books book) { //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "insert into shopbook(name1,author,price,sales,stock,img_path) values (?,?,?,?,?,?) "; preparedStatement = con.prepareStatement(sql); preparedStatement.setString(1, book.getName()); preparedStatement.setString(2, book.getAuthor()); preparedStatement.setBigDecimal(3, book.getPrice()); preparedStatement.setInt(4, book.getSales()); preparedStatement.setInt(5, book.getStock()); preparedStatement.setString(6, book.getImgPath()); preparedStatement.execute(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return 1; } //根据提供书的ID将数据删除 @Override public int deleteBookById(Integer id) { //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "delete from shopbook where id=?"; preparedStatement = con.prepareStatement(sql); preparedStatement.setInt(1, id); preparedStatement.executeUpdate(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return 1; } //更新书信息 @Override public int updateBook(Books book) { //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "update shopbook set name1=?,author=?,price=?,sales=?,stock=?,img_path=? where id=?"; preparedStatement = con.prepareStatement(sql); preparedStatement.setString(1, book.getName()); preparedStatement.setString(2, book.getAuthor()); preparedStatement.setBigDecimal(3, book.getPrice()); preparedStatement.setInt(4, book.getSales()); preparedStatement.setInt(5, book.getStock()); preparedStatement.setString(6, book.getImgPath()); preparedStatement.setInt(7, book.getId()); preparedStatement.executeUpdate(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return 0; } //通过ID查询到书的信息 @Override public Books queryBookById(Integer id) { Books books = new Books(); //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "select id,name1,author,price,sales,stock,img_path imgPath from shopbook where id=? "; preparedStatement = con.prepareStatement(sql); preparedStatement.setInt(1,id); rs = preparedStatement.executeQuery(); while (rs.next()) { books.setId(rs.getInt("id")); books.setName(rs.getString("name1")); books.setAuthor(rs.getString("author")); books.setPrice(rs.getBigDecimal("price")); books.setSales(rs.getInt("sales")); books.setStock(rs.getInt("stock")); books.setImgPath(rs.getString("imgPath")); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return books; } //查询所有图书 @Override public List queryBooks() { List books = new LinkedList(); //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "select id,name1,author,price,sales,stock,img_path imgPath from shopbook"; preparedStatement = con.prepareStatement(sql); rs = preparedStatement.executeQuery(); while (rs.next()) { Books books1 = new Books(); books1.setId(rs.getInt("id")); books1.setName(rs.getString("name1")); books1.setAuthor(rs.getString("author")); books1.setPrice(rs.getBigDecimal("price")); books1.setSales(rs.getInt("sales")); books1.setStock(rs.getInt("stock")); books1.setImgPath(rs.getString("imgPath")); books.add(books1); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return books; } //获取所有信息的个数 @Override public int queryForPageTotalCount() { Statement statement=null; //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "select * from shopbook"; statement=con.createStatement(); ResultSet rs = statement.executeQuery(sql); rs.last(); return rs.getRow(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return 0; } //获取从指定ID和count获取该部分的所有数据信息 @Override public List queryForPageItems(Integer begin, Integer pageSize) { List books = new LinkedList(); //启动mysql驱动器 try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); String sql = "select id,name1,author,price,sales,stock,img_path imgPath from shopbook limit ?,?"; preparedStatement = con.prepareStatement(sql); preparedStatement.setInt(1,begin); preparedStatement.setInt(2,pageSize); rs = preparedStatement.executeQuery(); while (rs.next()) { Books books1 = new Books(); books1.setId(rs.getInt("id")); books1.setName(rs.getString("name1")); books1.setAuthor(rs.getString("author")); books1.setPrice(rs.getBigDecimal("price")); books1.setSales(rs.getInt("sales")); books1.setStock(rs.getInt("stock")); books1.setImgPath(rs.getString("imgPath")); books.add(books1); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return books; } } 首页代码

注意首页面代码(使用idea在没有设置默认路径的时候默认启动的是index.jsp页面,可以在此处写入,防止代码过多忘记从哪个页面开始启动): index.jsp:

welcome 进入购物页面 BookServlet逻辑处理

BookServlet中的firstPage对商品信息显示进行处理,此类提供的其他方法后面会用到。

package servlet; import bean.Books; import bean.Page; import dao.impl.BookDaoImpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; import java.util.List; @WebServlet("/BookServlet") public class BookServlet extends HttpServlet { BookDaoImpl bookDao=new BookDaoImpl(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } //获取路径中action后要进行的操作 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //中文乱码解决方法 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); String action=request.getParameter("action"); try { Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class); method.invoke(this,request,response); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } //实现数据的添加操作 protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Book类 book的基本属性:包括 ID name author price sales stock imgPath Books books=new Books(); books.setName(request.getParameter("name")); books.setAuthor(request.getParameter("author")); String price = request.getParameter("price"); BigDecimal bigDecimal = new BigDecimal(price); books.setPrice(bigDecimal); books.setSales(Integer.parseInt(request.getParameter("sales"))); books.setStock(Integer.parseInt(request.getParameter("stock"))); //访问数据库 bookDao.addBook(books); //跳转到显示数据的页面 response.sendRedirect(request.getContextPath()+"/BookServlet?action=page"); } //对信息删除 protected void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); bookDao.deleteBookById(Integer.parseInt(id)); response.sendRedirect(request.getContextPath()+"/BookServlet?action=page"); } protected void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session=request.getSession(); String id=(String)session.getAttribute("id"); Books books=new Books(); books.setId(Integer.parseInt(id)); books.setName(request.getParameter("name")); books.setAuthor(request.getParameter("author")); String price = request.getParameter("price"); BigDecimal bigDecimal = new BigDecimal(price); books.setPrice(bigDecimal); books.setSales(Integer.parseInt(request.getParameter("sales"))); books.setStock(Integer.parseInt(request.getParameter("stock"))); bookDao.updateBook(books); response.sendRedirect(request.getContextPath()+"/BookServlet?action=page"); } protected void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //查询全部图书 List books = bookDao.queryBooks(); HttpSession session=request.getSession(); //把图书存放在request域中 session.setAttribute("books",books); //请求转发到bookmanage.jsp页面 request.getRequestDispatcher("jspdemo/bookManage.jsp").forward(request,response); } //根据ID查找book 可以对数据进行修改操作 protected void getBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); Books book = bookDao.queryBookById(Integer.parseInt(id)); request.setAttribute("book",book); request.getRequestDispatcher("jspdemo/bookEdit.jsp").forward(request,response); } //分页处理 //一个page 是进入到后台管理的图书分页 另一个是进入到主页面购物车 // 两个实现方式相同 跳转路径不同 protected void page(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取参数 pageno pagesize String pageNo = request.getParameter("pageNo"); int pageNo1=0; if(pageNo!=null){ pageNo1 = Integer.parseInt(pageNo); } else { pageNo1=1; } String pageSize = request.getParameter("pageSize"); int pageSize1=0; if(pageSize==null){ pageSize1=Page.Page_Size; } else { pageSize1=Integer.parseInt(pageSize); } //调用bookdao.page 保存page对象到request 已知当前页和每页数量 获取到当前page的所有信息 Page page=page1(pageNo1,pageSize1); // 请求转发到显示页面 request.setAttribute("page",page); request.getRequestDispatcher("jspdemo/bookManage.jsp").forward(request,response); } //补充page属性的信息 public Page page1(int pageNo, int PageSize) { Page page=new Page(); //赋值 page.setPageNo(pageNo); page.setPageSize(PageSize); //总记录数 访问数据库 记录总共商品数量 Integer pageTotalCount=bookDao.queryForPageTotalCount(); page.setPageTotalCount(pageTotalCount); //总页码 Integer pageTotal=pageTotalCount/PageSize; if(pageTotalCount%PageSize>0){ pageTotal++; } page.setPageTotal(pageTotal); //求当前的信息 当前页面的第一个数据的号 //eg:一个页面显示四条数据 如果是第一个页面的话 显示的信息为0-3 共四条数据 后面类似 int begin=(pageNo-1)*PageSize; //访问数据库 List items=bookDao.queryForPageItems(begin,PageSize); //求当前页数据 page.setItem(items); return page; } //分页处理 进入初始页面 protected void firstPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取参数 pageno pagesize String pageNo = request.getParameter("pageNo"); int pageNo1=0; if(pageNo!=null){ pageNo1 = Integer.parseInt(pageNo); } else { pageNo1=1; } String pageSize = request.getParameter("pageSize"); int pageSize1=0; if(pageSize==null){ pageSize1=Page.Page_Size; } else { pageSize1=Integer.parseInt(pageSize); } //调用bookdao.page 保存page对象到request Page page=page1(pageNo1,pageSize1); // 请求转发到显示页面 request.setAttribute("page",page); request.getRequestDispatcher("index1.jsp").forward(request,response); } } 主页面展示页面

index1.jsp:

书城购物系统 欢迎来到书城购物系统,祝您生活愉快 图书管理;;;我的购物车 li {float:left;list-style:none;} function show() { alert("-_- 添加成功 -_-"); shopping.submit(); } 书名:${book.name}作者:${book.author} 价格:${book.price}销量:${book.sales}库存:${book.stock} 选择数量: 首页 上一页 ${i} 下一页 末页 共${requestScope.page.pageTotal}页, ${requestScope.page.pageTotalCount}条记录 跳转到页

在这里插入图片描述

文本框输入页面数跳转到某个页面: BookSearchServlet1.java

package servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/BookSearchServlet1") public class BookSearchServlet1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String p = request.getParameter("p"); int page = Integer.parseInt(p); String pageTotal = request.getParameter("pageTotal"); int total = Integer.parseInt(pageTotal); if (page response.sendRedirect(request.getContextPath() + "/BookServlet?action=firstPage&pageNo=" + total); } else { response.sendRedirect(request.getContextPath() + "/BookServlet?action=firstPage&pageNo=" + p); } } }

加入购物车后点击我的购物车便可查看加入购物车的信息,同时可对购物车里面的数量进行修改:

cart.jsp购物车信息展示 我的购物车 亲亲,你的购物车目前是空的呢 点击此处返回购物页面 商品名称 数量 单价 金额 操作 ${entry.value.name};; ${entry.value.price};; ${entry.value.totalPrice};; 删除 购物车中共有 ${sessionScope.cart.totalCount}件商品;;总金额为${sessionScope.cart.totalPrice}元 清空购物车;; 返回购物页面;; 去结账

在这里插入图片描述 在这里可以直接在文本框中对数量进行修改,点击修改便完成。 修改处理对应的代码: UpdateCartServlet.java

package servlet; import bean.Books; import bean.Cart; import bean.CartItem; import dao.impl.BookDaoImpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/UpdateCartServlet") public class UpdateCartServlet extends HttpServlet { BookDaoImpl bookDao=new BookDaoImpl(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { update(request,response); } //修改购物车数量 protected void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String id1=request.getParameter("id"); String count1=request.getParameter("count"); int id=0,count=0; if(id1!=null){ id=Integer.parseInt(id1); } if(count1!=null){ count=Integer.parseInt(count1); } Cart cart = (Cart)request.getSession().getAttribute("cart"); if(cart!=null){ cart.updateCount(id,count); } //返回上个页面 response.sendRedirect(request.getHeader("Referer")); } }

对购物车的商品信息进行删除或者进行清空购物车,修改数量的操作时,调用CartServlet.java的代码

package servlet; import bean.Books; import bean.Cart; import bean.CartItem; import dao.impl.BookDaoImpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @WebServlet("/CartServlet") public class CartServlet extends HttpServlet { BookDaoImpl bookDao=new BookDaoImpl(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //中文乱码解决方法 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); String action=request.getParameter("action"); try { Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class); method.invoke(this,request,response); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } //删除信息 protected void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String id1=request.getParameter("id"); int id=0; if(id1!=null){ id=Integer.parseInt(id1); } Cart cart=(Cart)request.getSession().getAttribute("cart"); if(cart!=null){ cart.deleteItem(id); response.sendRedirect(request.getHeader("Referer")); } } //清空购物车 protected void clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ Cart cart = (Cart)request.getSession().getAttribute("cart"); cart.clear(); response.sendRedirect(request.getHeader("Referer")); } //修改购物车数量 protected void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String id1=request.getParameter("id"); String count1=request.getParameter("count"); System.out.println(count1); int id=0,count=0; if(id1!=null){ id=Integer.parseInt(id1); } if(count1!=null){ count=Integer.parseInt(count1); } Cart cart = (Cart)request.getSession().getAttribute("cart"); if(cart!=null){ cart.updateCount(id,count); } response.sendRedirect(request.getHeader("Referer")); } } 图书后台信息管理

点击图书管理,程序会跳转到BookServlet调用其page方法,经过处理后跳转到bookManage.jsp界面,显示所有图书信息。

图书管理 名称 作者 价格 销量 库存 操作 ${book.name} ${book.author} ${book.price} ${book.sales} ${book.stock} 操作 删除 添加图书 首页 上一页 ${i} 下一页 末页 共${requestScope.page.pageTotal}页, ${requestScope.page.pageTotalCount}条记录 跳转到页 返回购物页面

在这里插入图片描述

对后台信息可以进行添加删除修改,一般是管理员身份的可以对此进行操作。进行操作选项调用BookServlet的getBook方法,删除操作调用BookServlet的delete方法,添加调用bookEdit.jsp

bookEdit.jsp对后台图书进行添加操作

信息编辑 名称 作者 价格 销量 库存 操作

该项目代码稍微长,但其思想原理却不是很复杂。主要是对数据库的基本操作和jsp的基本用法。 代码有难点的地方我都标了注释,仍有问题的欢迎打扰。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有