返回

Java Web新手指南:打造图书管理系统,轻松入坑

前端

Java Web 开发初探:打造图书管理系统,助你畅游 Web 世界

前言

身为 Java 初学者,你是否渴望深入 Java Web 开发领域?你想亲手构建一个完整的系统吗?别担心,这篇文章将一步步带你完成图书管理系统的搭建,让你在实践中掌握 Java Web 的基础知识。

准备工作

在开始之前,确保你已具备以下条件:

  • Java 开发环境(JDK 1.8 以上)
  • Eclipse 或其他 Java 开发工具
  • Apache Tomcat 或其他 Web 服务器
  • MySQL 或其他数据库

项目结构搭建

首先,新建一个 Java Web 项目,并按照如下结构组织项目目录:

├── src
│   ├── java
│   │   ├── com.example.demo
│   │   │   ├── Book.java
│   │   │   ├── BookService.java
│   │   │   ├── BookController.java
│   │   │   ├── BookRepository.java
│   │   │   └── BookDaoImpl.java
│   ├── main
│   │   └── webapp
│   │       ├── WEB-INF
│   │       │   ├── web.xml
│   │       │   ├── jsp
│   │       │   │   ├── index.jsp
│   │       │   │   ├── bookList.jsp
│   │       │   │   ├── addBook.jsp
│   │       │   │   ├── updateBook.jsp
│   │       │   │   └── deleteBook.jsp
│   │       │   └── lib
│   │       │       ├── mysql-connector-java-8.0.28.jar
│   │       │       └── commons-dbcp2-2.9.0.jar
│   └── resources
│       └── application.properties

数据模型构建

接下来,我们需要定义图书实体类 Book,并创建相应的持久层接口和实现类。

public class Book {
    private Integer id;
    private String title;
    private String author;
    private String price;
    // 省略 getter/setter 方法
}

public interface BookService {
    List<Book> getAllBooks();
    void saveBook(Book book);
    Book getBookById(Integer id);
    void updateBook(Book book);
    void deleteBookById(Integer id);
}

public class BookServiceImpl implements BookService {
    // 省略实现方法
}

控制器编写

控制器负责处理请求,在我们的项目中,控制器如下所示:

@WebServlet("/book")
public class BookController extends HttpServlet {
    private BookService bookService = new BookServiceImpl();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String action = req.getParameter("action");
        if ("list".equals(action)) {
            List<Book> books = bookService.getAllBooks();
            req.setAttribute("books", books);
            req.getRequestDispatcher("/jsp/bookList.jsp").forward(req, resp);
        } else if ("add".equals(action)) {
            req.getRequestDispatcher("/jsp/addBook.jsp").forward(req, resp);
        } else if ("update".equals(action)) {
            Integer id = Integer.parseInt(req.getParameter("id"));
            Book book = bookService.getBookById(id);
            req.setAttribute("book", book);
            req.getRequestDispatcher("/jsp/updateBook.jsp").forward(req, resp);
        } else if ("delete".equals(action)) {
            Integer id = Integer.parseInt(req.getParameter("id"));
            bookService.deleteBookById(id);
            resp.sendRedirect("/book?action=list");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String action = req.getParameter("action");
        if ("save".equals(action)) {
            String title = req.getParameter("title");
            String author = req.getParameter("author");
            String price = req.getParameter("price");
            Book book = new Book();
            book.setTitle(title);
            book.setAuthor(author);
            book.setPrice(price);
            bookService.saveBook(book);
            resp.sendRedirect("/book?action=list");
        } else if ("update".equals(action)) {
            Integer id = Integer.parseInt(req.getParameter("id"));
            String title = req.getParameter("title");
            String author = req.getParameter("author");
            String price = req.getParameter("price");
            Book book = new Book();
            book.setId(id);
            book.setTitle(title);
            book.setAuthor(author);
            book.setPrice(price);
            bookService.updateBook(book);
            resp.sendRedirect("/book?action=list");
        }
    }
}

JSP 页面创建

JSP 页面用于展示数据和接收用户输入,以下是图书管理系统中使用的 JSP 页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    
</head>
<body>
    <h1>图书列表</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>书名</th>
            <th>作者</th>
            <th>价格</th>
            <th>操作</th>
        </tr>
        <%
            List<Book> books = (List<Book>) request.getAttribute("books");
            for (Book book : books) {
        %>
        <tr>
            <td><%= book.getId() %></td>
            <td><%= book.getTitle() %></td>
            <td><%= book.getAuthor() %></td>
            <td><%= book.getPrice() %></td>
            <td>
                <a href="/book?action=update&id=<%= book.getId() %>">修改</a>
                <a href="/book?action=delete&id=<%= book.getId() %>">删除</a>
            </td>
        </tr>
        <%
            }
        %>
    </table>

    <br>

    <a href="/book?action=add">添加图书</a>
</body>
</html>

项目运行

将项目部署到 Web 服务器,启动服务器,在浏览器中输入项目地址,你就能看到运行中的图书管理系统了。

总结

通过本文,你已学会了使用 Java Web 技术构建一个图书管理系统。希望它能帮助你更好地理解 Java Web 的基础知识,为你的 Java Web 开发之旅打下坚实的基础。

常见问题解答

  1. 如何连接数据库?
    application.properties 文件中配置数据库连接信息,并在持久层实现中使用连接池来管理数据库连接。
  2. 如何处理异常?
    在控制器和服务层中使用 try-catch 块捕获异常,并提供有意义的错误消息。
  3. 如何优化系统性能?
    使用缓存、分页和异步处理等技术来优化系统性能。
  4. 如何扩展系统功能?
    遵循面向对象的原则,将系统设计为可扩展的,以便轻松添加新功能。
  5. 如何确保系统安全性?
    实施输入验证、防跨站脚本攻击(XSS)和防SQL注入攻击措施,以确保系统安全性。