杰瑞科技汇

Java Web开发实例PDF如何快速入门?

Java Web开发实例:从零开始构建一个用户管理系统

这个实例将使用当前主流且稳定的Java EE 8 (Jakarta EE 8)技术栈,并采用Maven进行项目管理。

Java Web开发实例PDF如何快速入门?-图1
(图片来源网络,侵删)

技术栈

  • 后端框架: Spring Boot 2.7.x (简化配置,快速开发)
  • Web服务器: 内嵌 Tomcat
  • 持久层框架: Spring Data JPA (简化数据库操作)
  • 数据库: H2 Database (内存数据库,无需安装,适合快速原型)
  • 前端模板引擎: Thymeleaf (在服务器端渲染HTML,易于与Spring Boot集成)
  • 项目管理: Maven
  • 构建工具: Maven
  • 开发工具: IntelliJ IDEA (或 Eclipse)

第一步:环境准备

在开始之前,请确保您的电脑上已安装以下软件:

  1. JDK 8 或更高版本: Oracle JDKOpenJDK
  2. Maven: Maven 官网下载 (确保配置好环境变量 MAVEN_HOMEPATH)
  3. IntelliJ IDEA: IntelliJ IDEA 官网 (社区版免费即可)

第二步:使用Spring Initializr创建项目

Spring Initializr 是一个在线项目生成器,可以帮我们快速创建一个标准化的Spring Boot项目结构。

  1. 访问 Spring Initializr
  2. 配置项目参数:
    • Project: Maven Project
    • Language: Java
    • Spring Boot: 选择一个稳定版本,如 7.17 (与Java 8兼容性最好)
    • Project Metadata:
      • Group: com.example
      • Artifact: user-management
      • Name: user-management
      • Description: A simple user management system
      • Package name: com.example.usermanagement
    • Packaging: Jar
    • Java: 8 (或你安装的版本)
  3. 添加依赖:
    • 点击 "ADD DEPENDENCIES",搜索并添加以下依赖:
      • Spring Web: 用于构建Web应用,包含RESTful支持和Tomcat。
      • Spring Data JPA: 用于数据库访问。
      • H2 Database: 内存数据库。
      • Thymeleaf: 用于服务器端页面渲染。
  4. 点击 "GENERATE" 按钮,下载生成的 user-management.zip 压缩包。
  5. 将下载的压缩包解压,并用IntelliJ IDEA打开该文件夹。

第三步:项目结构与核心文件

创建成功后,你的项目结构应该如下:

user-management/
├── pom.xml                  <!-- Maven项目配置文件 -->
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── usermanagement/
│   │   │               ├── UserManagementApplication.java  // 主启动类
│   │   │               ├── controller/
│   │   │               │   └── UserController.java         // 控制器
│   │   │               ├── model/
│   │   │               │   └── User.java                   // 实体类
│   │   │               ├── repository/
│   │   │               │   └── UserRepository.java         // 数据访问层
│   │   │               └── service/
│   │   │                   ├── UserService.java           // 业务逻辑层
│   │   │                   └── impl/
│   │   │                       └── UserServiceImpl.java   // 业务逻辑层实现
│   │   ├── resources/
│   │   │   ├── application.properties                   // Spring Boot配置文件
│   │   │   ├── static/                                  // 存放静态资源 (CSS, JS, 图片)
│   │   │   └── templates/                              // 存放Thymeleaf模板
│   │   │       ├── index.html
│   │   │       ├── add-user.html
│   │   │       └── list-users.html
│   │   └── ...
│   └── test/
└── ...

第四步:编写核心代码

配置文件 (src/main/resources/application.properties)

# 服务器端口
server.port=8080
# H2 数据库配置
spring.datasource.url=jdbc:h2:mem:userdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# JPA/H2 自动建表策略
spring.jpa.hibernate.ddl-auto=update
# 显示SQL语句,方便调试
spring.jpa.show-sql=true
# H2 Web控制台配置 (方便在浏览器中查看数据库)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

实体类 (src/main/java/com/example/usermanagement/model/User.java)

package com.example.usermanagement.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
    // Getters and Setters
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

数据访问层 (src/main/java/com/example/usermanagement/repository/UserRepository.java)

Spring Data JPA会自动帮我们实现CRUD(增删改查)方法。

Java Web开发实例PDF如何快速入门?-图2
(图片来源网络,侵删)
package com.example.usermanagement.repository;
import com.example.usermanagement.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // 这里可以定义自定义查询方法,
    // User findByName(String name);
}

业务逻辑层 (src/main/java/com/example/usermanagement/service/UserService.java.../impl/UserServiceImpl.java)

接口 (UserService.java)

package com.example.usermanagement.service;
import com.example.usermanagement.model.User;
import java.util.List;
public interface UserService {
    List<User> findAll();
    User findById(Long id);
    void save(User user);
    void deleteById(Long id);
}

实现 (UserServiceImpl.java)

package com.example.usermanagement.service.impl;
import com.example.usermanagement.model.User;
import com.example.usermanagement.repository.UserRepository;
import com.example.usermanagement.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;
    @Override
    public List<User> findAll() {
        return userRepository.findAll();
    }
    @Override
    public User findById(Long id) {
        Optional<User> result = userRepository.findById(id);
        return result.orElse(null);
    }
    @Override
    public void save(User user) {
        userRepository.save(user);
    }
    @Override
    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}

控制器 (src/main/java/com/example/usermanagement/controller/UserController.java)

控制器是Web层的入口,负责处理HTTP请求,调用业务逻辑,并返回视图或数据。

package com.example.usermanagement.controller;
import com.example.usermanagement.model.User;
import com.example.usermanagement.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class UserController {
    @Autowired
    private UserService userService;
    // 显示用户列表
    @GetMapping("/")
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAll());
        return "list-users"; // 返回 templates/list-users.html
    }
    // 显示添加用户表单
    @GetMapping("/add")
    public String showAddUserForm(User user) {
        return "add-user"; // 返回 templates/add-user.html
    }
    // 处理添加用户请求
    @PostMapping("/save")
    public String saveUser(@ModelAttribute User user) {
        userService.save(user);
        return "redirect:/"; // 重定向到根路径,刷新列表
    }
    // 处理删除用户请求
    @GetMapping("/delete/{id}")
    public String deleteUser(@PathVariable("id") Long id) {
        userService.deleteById(id);
        return "redirect:/";
    }
}

第五步:创建前端页面

src/main/resources/templates 目录下创建HTML文件。

用户列表页面 (list-users.html)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">User List</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        table { width: 100%; border-collapse: collapse; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
        a { margin-right: 10px; text-decoration: none; color: #007bff; }
    </style>
</head>
<body>
    <h1>User Management System</h1>
    <a href="/add">Add New User</a>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
            <tr th:each="user : ${users}">
                <td th:text="${user.id}">1</td>
                <td th:text="${user.name}">John Doe</td>
                <td th:text="${user.email}">john.doe@example.com</td>
                <td>
                    <a th:href="@{'/delete/' + ${user.id}}">Delete</a>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>

添加用户页面 (add-user.html)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">Add User</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        form { max-width: 400px; }
        label { display: block; margin-bottom: 5px; }
        input[type="text"] { width: 100%; padding: 8px; margin-bottom: 10px; }
        input[type="submit"] { background-color: #007bff; color: white; padding: 10px 15px; border: none; cursor: pointer; }
    </style>
</head>
<body>
    <h1>Add New User</h1>
    <form th:action="@{/save}" th:object="${user}" method="post">
        <div>
            <label for="name">Name:</label>
            <input type="text" id="name" th:field="*{name}" required>
        </div>
        <div>
            <label for="email">Email:</label>
            <input type="text" id="email" th:field="*{email}" required>
        </div>
        <input type="submit" value="Save User">
    </form>
</body>
</html>

第六步:运行和测试

  1. 在IntelliJ IDEA中,找到 UserManagementApplication.java 文件。
  2. 右键点击,选择 Run 'UserManagementApplication.main()'
  3. 等待项目启动成功,你会看到控制台输出类似 Started UserManagementApplication in X.XXX seconds (JVM running for Y.YYY) 的信息。
  4. 打开你的浏览器,访问 http://localhost:8080
    • 你将看到一个用户列表页面(初始为空)。
    • 点击 "Add New User" 链接,可以添加新用户。
    • 添加用户后,会自动跳转到列表页面,显示新添加的用户。
    • 点击用户行中的 "Delete" 链接,可以删除该用户。
  5. (可选) 访问 http://localhost:8080/h2-console,可以打开H2数据库的Web控制台,查看你创建的 USER 表和数据。

如何生成PDF

你已经拥有了一个完整可运行的Java Web实例,你可以使用以下方法将其整理成PDF:

  1. 使用Markdown + 工具链:

    • 将上述所有代码和说明整理成一个.md文件。
    • 使用工具如 Pandoc 或在线转换器将Markdown文件转换为PDF。
    • 优点: 格式清晰,版本控制友好。
  2. 使用Word + 另存为PDF:

    • 复制粘贴到Microsoft Word中。
    • 为代码片段使用 "代码块" 样式,使其有背景色和等宽字体。
    • 调整好格式后,点击 "文件" -> "另存为" -> 选择 "PDF (*.pdf)"。
    • 优点: 操作简单,大多数人熟悉。
  3. 使用IDE插件:

    一些IDE(如IntelliJ IDEA)有插件可以将项目文档或代码导出为PDF。

  4. 在线文档平台:

    • 发布到 语雀GitBook 等平台,它们通常提供一键导出为PDF的功能。
    • 优点: 在线协作方便,导出格式美观。

进阶学习资源

当你掌握了这个基础实例后,可以继续学习以下内容来提升技能:

  • RESTful API: 学习如何将 UserController 改造成返回JSON数据的RESTful API,供前端(如Vue.js, React)调用。
  • 安全框架: 集成 Spring Security 来保护你的应用,实现用户认证和授权。
  • 更强大的数据库: 将H2数据库替换为 MySQLPostgreSQL
  • 前端框架: 学习使用 Vue.jsReact 构建现代化的前后端分离应用。
  • 部署: 学习如何将你的应用打包成WAR文件,并部署到外部的Tomcat服务器或云服务器上。

希望这份详细的实例教程能帮助你完成Java Web开发的学习!

分享:
扫描分享到社交APP
上一篇
下一篇