前期准备:工具链与环境搭建
1 基础软件安装
| 软件名称 | 作用 | 推荐版本/下载链接 | 配置要点 |
|---|---|---|---|
| JDK | Java 运行时环境 | OpenJDK 17+ (LTS) / Oracle JDK | 设置 JAVA_HOME 环境变量,添加至系统 Path |
| IntelliJ IDEA | 集成开发环境 (IDE) | 社区版/旗舰版 | 安装插件:Maven、Tomcat、Lombok |
| Maven | 项目管理与依赖管理 | Apache Maven 3.9+ | 配置 settings.xml 镜像源加速依赖下载 |
| Tomcat | Web 服务器 | Apache Tomcat 10.x | 解压即用,无需安装 |
| Git | 版本控制 | 最新版 | 初始化本地仓库,关联远程代码托管平台 |
验证命令:
终端执行 java -version 应显示 Java 版本信息;mvn -v 显示 Maven 版本及本地仓库路径。
2 项目初始化
通过 Maven 创建标准目录结构的 Web 项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetypes-webapp -DinteractiveMode=false
生成的项目结构如下:
my-webapp/
├── src/
│ ├── main/
│ │ ├── java/ # Java 源代码
│ │ ├── resources/ # 资源文件(如图片、配置文件)
│ │ └── webapp/ # Web 根目录(JSP/静态资源)
│ └── test/ # 测试代码
├── pom.xml # Maven 配置文件
核心技术选型与实现
1 后端框架选择
| 框架名称 | 特点 | 适用场景 |
|---|---|---|
| Spring Boot | 自动配置、起步依赖(Starter)、内嵌 Tomcat,大幅减少 XML 配置 | 企业级应用首选 |
| Spring MVC | 经典 MVC 模式,需手动配置 DispatcherServlet、ViewResolver | 需精细控制流程的场景 |
| Jakarta EE | 官方标准规范,支持 EJB、JPA 等重量级特性 | 大型分布式系统 |
| 纯 Servlet | 底层 API 直接操控 HTTP 请求生命周期,灵活性高 | 教学/轻量级定制需求 |
推荐方案:优先选择 Spring Boot,其 “约定优于配置” 的特性可快速构建可扩展的应用。
2 典型功能实现示例(以 Spring Boot 为例)
2.1 创建控制器与视图
src/main/java/com/example/MyWebAppApplication.java:
@SpringBootApplication
public class MyWebAppApplication {
public static void main(String[] args) {
SpringApplication.run(MyWebAppApplication.class, args);
}
}
src/main/java/com/example/controller/HelloController.java:
@RestController // 返回 JSON 数据,若需 JSP 改为 @Controller
@RequestMapping("/hello")
public class HelloController {
@GetMapping
public String sayHello(@RequestParam(name="name", required=false) String name) {
return "Hello, " + (name != null ? name : "World");
}
}
2.2 静态资源处理
将 CSS/JS/图片放入 src/main/resources/static 目录,可直接通过 URL 访问。static/css/style.css 对应访问路径 /css/style.css。
2.3 数据库集成(以 MySQL 为例)
pom.xml 添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
application.properties 配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=yourpassword spring.jpa.hibernate.ddl-auto=update
定义实体类并继承 JpaRepository 接口即可实现 CRUD 操作。
前端交互增强
1 模板引擎选择
| 模板引擎 | 语法特点 | 优势 |
|---|---|---|
| Thymeleaf | HTML 标签属性扩展 | 天然支持 HTML5,类型安全 |
| FreeMarker | FTL 脚本语言 | 高性能,适合复杂逻辑 |
| Mustache | 双大括号语法 | 轻量级,易学易用 |
示例(Thymeleaf):src/main/resources/templates/index.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>首页</title>
</head>
<body>
<h1 th:text="'欢迎来到 ' + ${userName}">默认标题</h1>
<img th:src="@{/images/logo.png}" alt="Logo"/>
</body>
</html>
2 前后端数据交互
前端通过 AJAX 发送请求,后端返回 JSON 数据:
// frontend.js
fetch('/api/users')
.then(response => response.json())
.then(data => console.log(data));
后端控制器添加接口:
@GetMapping("/api/users")
@ResponseBody
public List<User> getAllUsers() {
return userRepository.findAll();
}
部署与发布
1 本地调试
在 IDEA 中右键运行 MyWebAppApplication,浏览器访问 http://localhost:8080(默认端口),若需修改端口,可在 application.properties 中设置 server.port=8081。
2 生产环境部署
独立 Tomcat 部署
- 打包项目为 WAR 文件:
mvn clean package(生成target/my-webapp.war)。 - 将 WAR 文件复制到 Tomcat 的
webapps目录。 - 启动 Tomcat,自动解压并部署应用。
- 访问
http://<tomcat-ip>:<port>/my-webapp。
Docker 容器化部署
编写 Dockerfile:
FROM openjdk:17-jdk-alpine COPY target/my-webapp.jar /app/my-webapp.jar ENTRYPOINT ["java","-jar","/app/my-webapp.jar"] EXPOSE 8080
构建并运行容器:
docker build -t my-webapp . docker run -p 8080:8080 my-webapp
关键注意事项
| 环节 | 常见问题与解决方案 |
|---|---|
| 跨域请求 | 前端配置代理(Vue CLI):devServer.proxy;后端添加 @CrossOrigin 注解 |
| 中文乱码 | 确保响应头设置 Content-Type: text/html; charset=UTF-8,数据库表/字段字符集为 utf8mb4 |
| 热部署失效 | IDEA 中启用 “Registry” → “Compiler” → “Automake on save” |
| 日志级别调整 | application.properties 中设置 logging.level.root=INFO |
| SSL 加密 | 生成自签名证书,配置 server.ssl.key-store=classpath:keystore.p12 |
相关问答 FAQs
Q1: 启动 Tomcat 时报 “Port already in use” 如何解决?
答:
该错误表示指定端口已被其他进程占用,解决方法:
- 查看占用端口的进程:Windows 执行
netstat -ano | findstr :8080,Linux/macOS 执行lsof -i :8080。 - 终止占用进程:Windows 任务管理器结束进程;Linux/macOS 执行
kill -9 <PID>。 - 修改应用端口:在
application.properties中设置server.port=8081(或其他未被占用的端口)。
Q2: 访问 JSP 页面出现 “HTTP Status 500” 错误怎么办?
答:
常见原因及排查步骤:
- 编译错误:检查 JSP 语法是否正确,尤其是表达式语言(EL)的使用。
- 依赖缺失:确保
pom.xml中包含spring-boot-starter-web依赖(提供 JSP 解析器)。 - 视图解析器配置:若使用 Spring Boot,需在
application.properties中添加spring.mvc.view.prefix=/WEB-INF/views/和spring.mvc.view.suffix=.jsp。 - 权限问题:确认 Tomcat 对 JSP 文件所在目录有读写权限。
- 查看完整堆栈跟踪日志:检查 Tomcat 日志文件(
logs/catalina.out),定位具体错误行数。
