枝江227 2023-05-23 10:33 采纳率: 33.3%
浏览 147
已结题

Java Web服务器端购物车系统 HELP!

球助 球助 !!
问题描述:数据库中有张books表,存放了书籍的相关信息,如ISBN编号、书名、作者、价格和库存数量等信息。当我们新进了同样的书时,希望能更改库存数量。同时,如果有折扣,我们同样希望可以更改书的价格。
要求
使用MVC模式(JSP+Servlet+JavaBean)
使用MySQL数据库创建相应的表
使用JDBC连接数据库
不用做出一模一样的窗口界面,功能实现在网页中体现就可以!

问题分析:
1.使用三层结构来完成数据库操作,使用业务类来完成数据库books表的字段的更新操作。
2.需要建立一个Servlet,用来以表格的形式显示数据库中book 表的所有信息,同时提供超链接。
3.需要建立另外的Servlet,用来完成数据库books表的字段的修改。
4.Servlet 后面可以跟键/值对的字符串,多个键 /值对可以使用“&”符号隔开。
打开IE,在浏览器的地址栏里输入:“http://127.0.0.1:8080/SessionTraceDemo2/showBookServlet”。则显示如下图:

img

当用户点击图书编号超链接时,则显示如下图:

img

当用户修改图书单价或者是数量时,点击“修改”按钮,则显示如下图

img

  • 写回答

10条回答 默认 最新

  • 鱼弦 全栈领域优质创作者 2023-05-23 14:03
    关注
    获得2.80元问题酬金

    以下是一个可能的MVC模式的实现,其中使用了JSP、Servlet和JavaBean来实现对books表的增、删、改、查操作:

    创建MySQL数据库,并在其中创建books表,包含以下字段:ISBN编号、书名、作者、价格和库存数量。

    创建JavaBean类Book,用来表示books表中的一条记录。Book类的定义如下:

    java
    Copy

    public class Book {
        private String isbn;
        private String title;
        private String author;
        private double price;
        private int stock;
    
        public Book() {}
    
        public String getIsbn() {
            return isbn;
        }
    
        public void setIsbn(String isbn) {
            this.isbn = isbn;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public double getPrice() {
            return price;
        }
    
        public void setPrice(double price) {
            this.price = price;
        }
    
        public int getStock() {
            return stock;
        }
    
        public void setStock(int stock) {
            this.stock = stock;
        }
    }
    
    

    创建DAO类BookDAO,用来完成对books表的增、删、改、查操作,代码如下:
    java
    Copy

    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class BookDAO {
        private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
        private static final String DB_USER = "root";
        private static final String DB_PASSWORD = "123456";
    
        public List<Book> getAllBooks() {
            List<Book> books = new ArrayList<>();
            try {
                Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT * FROM books");
                while (rs.next()) {
                    Book book = new Book();
                    book.setIsbn(rs.getString("isbn"));
                    book.setTitle(rs.getString("title"));
                    book.setAuthor(rs.getString("author"));
                    book.setPrice(rs.getDouble("price"));
                    book.setStock(rs.getInt("stock"));
                    books.add(book);
                }
                rs.close();
                stmt.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return books;
        }
    
        public void updateBook(String isbn, int stock, double price) {
            try {
                Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
                PreparedStatement stmt = conn.prepareStatement("UPDATE books SET stock = ?, price = ? WHERE isbn = ?");
                stmt.setInt(1, stock);
                stmt.setDouble(2,price);
                stmt.setString(3, isbn);
                stmt.executeUpdate();
                stmt.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    创建Servlet类BookServlet,用来以表格的形式显示books表中的所有记录,并提供超链接,代码如下:
    java
    Copy

    import java.io.IOException;
    import java.util.List;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class BookServlet extends HttpServlet {
        private BookDAO bookDAO;
    
        public void init() {
            bookDAO = new BookDAO();
        }
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            List<Book> books = bookDAO.getAllBooks();
            request.setAttribute("books", books);
            request.getRequestDispatcher("/booklist.jsp").forward(request, response);
        }
    }
    
    

    创建JSP页面booklist.jsp,用来显示books表中的所有记录和提供修改链接,代码如下:
    jsp
    Copy

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Books</title>
    </head>
    <body>
        <h1>Books</h1>
        <table border="1">
            <tr>
                <th>ISBN</th>
                <th>Title</th>
                <th>Author</th>
                <th>Price</th>
                <th>Stock</th>
                <th>Action</th>
            </tr>
            <c:forEach var="book" items="${books}">
                <tr>
                    <td>${book.isbn}</td>
                    <td>${book.title}</td>
                    <td>${book.author}</td>
                    <td>${book.price}</td>
                    <td>${book.stock}</td>
                    <td><a href="updatebook.jsp?isbn=${book.isbn}">Update</a></td>
                </tr>
            </c:forEach>
        </table>
    </body>
    </html>
    
    
    

    创建JSP页面updatebook.jsp,用来修改books表中某条记录的库存数量和价格,代码如下:
    jsp
    Copy

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Update Book</title>
    </head>
    <body>
        <h1>Update Book</h1>
        <form method="post" action="updatebook">
            <label>ISBN:</label>
            <input type="text" name="isbn" value="${param.isbn}" readonly><br>
            <label>Stock:</label>
            <input type="text" name="stock" value="${param.stock}"><br>
            <label>Price:</label>
            <input type="text" name="price" value="${param.price}"><br>
            <input type="submit" value="Update">
        </form>
    </body>
    </html>
    
    
    

    最后创建Servlet类UpdateBookServlet,用来处理updatebook.jsp页面提交的表单数据,并调用BookDAO的updateBook方法来更新books表中的某条记录,代码如下:
    java
    Copy

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class UpdateBookServlet extends HttpServlet {
        private BookDAO bookDAO;
    
        public void init() {
            bookDAO = new BookDAO();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String isbn = request.getParameter("isbn");
            int stock = Integer.parseInt(request.getParameter("stock"));
            double price = Double.parseDouble(request.getParameter("price"));
            bookDAO.updateBook(isbn, stock, price);
            response.sendRedirect("book");
        }
    }
    
    

    以上是一个简单的使用MVC模式实现对books表的增、删、改、查操作的示例。需要注意的是,这只是一个基础的示例,实际应用中可能需要更加复杂的逻辑和功能,例如添加数据校验、权限控制、分页查询等功能。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月31日
  • 修改了问题 5月23日
  • 修改了问题 5月23日
  • 创建了问题 5月23日

悬赏问题

  • ¥20 access中怎么分割分别获取一下图中的值
  • ¥15 类图中关联与聚合的区别
  • ¥15 ENVI高分五号去除云层的方法
  • ¥15 16进制数据如何得到奇偶校验位
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500