目录大纲
Part01-基础概念与理论知识
1.1 Web应用基本概念
Web应用是基于Java Servlet技术的应用程序,运行在Web容器(如Tomcat)中,主要特点包括:
- 遵循Servlet规范
- 包含多个组件:Servlet、JSP、过滤器、监听器等
- 以WAR(Web Application Archive)包形式部署
- 具有特定的目录结构
1.2 Web应用目录结构
标准Web应用目录结构:
webapp/ # 应用根目录
├── WEB-INF/ # 受保护的目录,浏览器无法直接访问
│ ├── classes/ # 编译后的Java类文件
│ ├── lib/ # 依赖的JAR包
│ └── web.xml # 部署描述符
├── META-INF/ # 元数据目录
├── index.html # 首页
└── resources/ # 静态资源(CSS、JS、图片等)
1.3 部署描述符web.xml
web.xml是Web应用的部署描述符,用于配置:
- Servlet映射
- 过滤器配置
- 监听器配置
- 初始化参数
- 会话配置
- 错误页面
学习交流加群风哥微信: itpux-com
Part02-生产环境规划与建议
2.1 开发环境准备
- JDK 17或更高版本
- Tomcat 11.0.8或更高版本
- Maven 3.6.0或更高版本
- IDE(如IntelliJ IDEA、Eclipse)
2.2 项目结构规划
项目结构建议:
fgedu-webapp/ # 项目根目录
├── src/ # 源代码目录
│ ├── main/ # 主要源代码
│ │ ├── java/ # Java源代码
│ │ ├── resources/ # 资源文件
│ │ └── webapp/ # Web资源
│ └── test/ # 测试代码
├── pom.xml # Maven配置文件
└── README.md # 项目说明
2.3 依赖管理
Maven依赖配置:
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
更多视频教程www.fgedu.net.cn
Part03-生产环境项目实施方案
3.1 创建Web应用
mvn archetype:generate -DgroupId=com.fgedu -DartifactId=fgedu-webapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
[INFO] Scanning for projects…
[INFO] ————————————————————————
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ————————————————————————
[INFO]
[INFO] — maven-archetype-plugin:3.2.0:generate (default-cli) @ standalone-pom —
[INFO] Generating project in Batch mode
[INFO] —————————————————————————-
[INFO] Using following parameters for creating project from Archetype: maven-archetype-webapp:1.4
[INFO] —————————————————————————-
[INFO] Parameter: groupId, Value: com.fgedu
[INFO] Parameter: artifactId, Value: fgedu-webapp
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.fgedu
[INFO] Parameter: packageInPathFormat, Value: com/fgedu
[INFO] Parameter: package, Value: com.fgedu
[INFO] Parameter: groupId, Value: com.fgedu
[INFO] Parameter: artifactId, Value: fgedu-webapp
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /root/fgedu-webapp
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 2.345 s
[INFO] Finished at: 2026-04-10T10:00:00Z
[INFO] ————————————————————————
3.2 开发Servlet
mkdir -p fgedu-webapp/src/main/java/com/fgedu/servlet
# 创建HelloServlet
vi fgedu-webapp/src/main/java/com/fgedu/servlet/HelloServlet.java
package com.fgedu.servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(“/hello”)
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(““);
out.println(“
Hello, Tomcat!
“);
out.println(“
这是第一个Web应用
“);
out.println(“”);
}
}
3.3 配置web.xml
vi fgedu-webapp/src/main/webapp/WEB-INF/web.xml
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd”
version=”6.0″>
3.4 打包与部署
cd fgedu-webapp && mvn clean package
[INFO] Scanning for projects…
[INFO] ————————————————————————
[INFO] Building fgedu-webapp Maven Webapp 1.0-SNAPSHOT
[INFO] ————————————————————————
[INFO]
[INFO] — maven-clean-plugin:2.5:clean (default-clean) @ fgedu-webapp —
[INFO] Deleting /root/fgedu-webapp/target
[INFO]
[INFO] — maven-resources-plugin:2.6:resources (default-resources) @ fgedu-webapp —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] — maven-compiler-plugin:3.1:compile (default-compile) @ fgedu-webapp —
[INFO] Changes detected – recompiling the module!
[INFO] Compiling 1 source file to /root/fgedu-webapp/target/classes
[INFO]
[INFO] — maven-resources-plugin:2.6:testResources (default-testResources) @ fgedu-webapp —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] — maven-compiler-plugin:3.1:testCompile (default-testCompile) @ fgedu-webapp —
[INFO] Nothing to compile – all classes are up to date
[INFO]
[INFO] — maven-surefire-plugin:2.12.4:test (default-test) @ fgedu-webapp —
[INFO] No tests to run.
[INFO]
[INFO] — maven-war-plugin:2.2:war (default-war) @ fgedu-webapp —
[INFO] Packaging webapp
[INFO] Assembling webapp [fgedu-webapp] in [/root/fgedu-webapp/target/fgedu-webapp]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/fgedu-webapp/src/main/webapp]
[INFO] Webapp assembled in [1.234s]
[INFO] Building war: /root/fgedu-webapp/target/fgedu-webapp.war
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 3.456 s
[INFO] Finished at: 2026-04-10T10:05:00Z
[INFO] ————————————————————————
# 部署到Tomcat
cp target/fgedu-webapp.war /Tomcat/app/webapps/
from Tomcat视频:www.itpux.com
Part04-生产案例与实战讲解
4.1 实战案例:用户管理系统
vi fgedu-webapp/src/main/java/com/fgedu/servlet/UserServlet.java
package com.fgedu.servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(“/users”)
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(““);
out.println(“
用户管理系统
“);
out.println(“
| ID | 姓名 | 邮箱 |
|---|---|---|
| 1 | 张三 | zhangsan@fgedu.net.cn |
| 2 | 李四 | lisi@fgedu.net.cn |
| 3 | 王五 | wangwu@fgedu.net.cn |
“);
out.println(“”);
}
}
# 重新打包部署
mvn clean package && cp target/fgedu-webapp.war /Tomcat/app/webapps/
4.2 目录结构解析
ls -la /Tomcat/app/webapps/fgedu-webapp/
total 24
drwxr-xr-x 4 root root 4096 Apr 10 10:10 .
drwxr-xr-x 10 root root 4096 Apr 10 10:05 ..
drwxr-xr-x 3 root root 4096 Apr 10 10:10 META-INF
drwxr-xr-x 3 root root 4096 Apr 10 10:10 WEB-INF
-rw-r–r– 1 root root 150 Apr 10 10:00 index.html
# 查看WEB-INF目录
ls -la /Tomcat/app/webapps/fgedu-webapp/WEB-INF/
total 16
drwxr-xr-x 3 root root 4096 Apr 10 10:10 .
drwxr-xr-x 4 root root 4096 Apr 10 10:10 ..
drwxr-xr-x 3 root root 4096 Apr 10 10:10 classes
-rw-r–r– 1 root root 500 Apr 10 10:05 web.xml
# 查看classes目录
ls -la /Tomcat/app/webapps/fgedu-webapp/WEB-INF/classes/com/fgedu/servlet/
total 16
drwxr-xr-x 2 root root 4096 Apr 10 10:10 .
drwxr-xr-x 3 root root 4096 Apr 10 10:10 ..
-rw-r–r– 1 root root 1000 Apr 10 10:05 HelloServlet.class
-rw-r–r– 1 root root 1500 Apr 10 10:10 UserServlet.class
4.3 部署与验证
tail -f /Tomcat/app/logs/catalina.out
10-Apr-2026 10:15:00.000 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/Tomcat/app/webapps/fgedu-webapp.war]
10-Apr-2026 10:15:00.000 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/Tomcat/app/webapps/fgedu-webapp.war] has finished in [1500] milliseconds
# 访问应用首页
curl http://localhost:8080/fgedu-webapp/
Hello World!
# 访问HelloServlet
curl http://localhost:8080/fgedu-webapp/hello
Hello, Tomcat!
这是第一个Web应用
# 访问UserServlet
curl http://localhost:8080/fgedu-webapp/users
用户管理系统
| ID | 姓名 | 邮箱 |
|---|---|---|
| 1 | 张三 | zhangsan@fgedu.net.cn |
| 2 | 李四 | lisi@fgedu.net.cn |
| 3 | 王五 | wangwu@fgedu.net.cn |
4.4 常见问题与解决方案
- 404错误:检查URL路径是否正确,确保Servlet映射配置正确
- 500错误:查看Tomcat日志,检查代码是否有语法错误或运行时异常
- 部署失败:检查WAR包是否正确构建,查看Tomcat日志
- 类加载错误:检查依赖是否正确,确保所有必要的JAR包都已包含
学习交流加群风哥QQ113257174
Part05-风哥经验总结与分享
5.1 开发最佳实践
- 使用Maven或Gradle管理项目依赖
- 遵循Java编码规范
- 使用注解配置Servlet(@WebServlet)
- 合理组织代码结构
- 编写单元测试
5.2 部署技巧
- 使用热部署提高开发效率
- 配置自动部署监控
- 使用版本控制管理代码
- 制定部署流程和规范
- 备份部署文件
5.3 性能优化建议
- 使用连接池管理数据库连接
- 启用缓存减少重复计算
- 优化Servlet代码,减少IO操作
- 使用异步处理提高并发能力
- 启用压缩减少网络传输
5.4 故障排查指南
- 查看Tomcat日志文件
- 检查应用日志
- 使用浏览器开发者工具检查网络请求
- 启用详细日志记录
- 使用调试工具分析问题
风哥提示:在开发Web应用时,建议遵循MVC设计模式,将业务逻辑与表现层分离,提高代码的可维护性和可扩展性。
总结
本文详细介绍了如何开发第一个Web应用并部署到Tomcat,包括Web应用目录结构解析、开发步骤、部署过程和实战案例。通过本文的学习,您应该掌握了Web应用的基本开发流程和部署方法。
Web应用开发是Java企业级应用开发的基础,掌握Web应用的开发和部署技巧对于Java开发者来说非常重要。在实际开发中,建议遵循最佳实践,编写高质量的代码,确保应用的性能和稳定性。
更多学习教程公众号风哥教程itpux_com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
