返回
Java Web新手指南:打造图书管理系统,轻松入坑
前端
2022-12-18 19:40:10
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 开发之旅打下坚实的基础。
常见问题解答
- 如何连接数据库?
在application.properties
文件中配置数据库连接信息,并在持久层实现中使用连接池来管理数据库连接。 - 如何处理异常?
在控制器和服务层中使用try-catch
块捕获异常,并提供有意义的错误消息。 - 如何优化系统性能?
使用缓存、分页和异步处理等技术来优化系统性能。 - 如何扩展系统功能?
遵循面向对象的原则,将系统设计为可扩展的,以便轻松添加新功能。 - 如何确保系统安全性?
实施输入验证、防跨站脚本攻击(XSS)和防SQL注入攻击措施,以确保系统安全性。