Java web项目基础
- Published on
这份笔记整理了 JavaWebDemo 项目中几个核心概念,偏向记录要点,方便后续回顾。
目录
Maven 是什么
Maven 是 Java 项目的构建工具,作用类似前端的 npm。
- 依赖管理:下载和维护项目依赖
- 构建流程:编译、测试、打包
- 生命周期:统一的构建阶段
| 前端 | Java |
|---|---|
npm | Maven |
package.json | pom.xml |
npm install | mvn install |
npm run build | mvn clean package |
常用命令:
mvn clean # 清理构建输出
mvn compile # 编译源码
mvn test # 运行测试
mvn package # 打包生成 JAR/WAR
mvn install # 安装到本地仓库
mvn clean package # 先清理再完整构建
注意点:只执行 mvn package 时,可能会复用上一次的构建结果;若要从头构建,常用 mvn clean package。
Maven 的构建过程大致分为三个生命周期:
| 阶段 | 典型命令 | 说明 |
|---|---|---|
| Clean | clean | 清理输出 |
| Default | compile/test/package/install | 默认构建 |
| Site | site/site-deploy | 文档生成 |
pom.xml 详解
pom.xml 是 Maven 的核心配置文件,记录项目标识、依赖和构建方式。
<groupId>com.example</groupId>
<artifactId>JavaWebDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
几个关键点:
packaging:决定打包类型。jar适合普通 Java 项目,war适合 Web 项目。groupId / artifactId:项目坐标,例如com.example:JavaWebDemo。scope:依赖范围,如provided表示由容器提供,test表示只用于测试。dependencies:声明项目依赖,Servlet API、JUnit 等都可在这里配置。
常见打包类型对比:
| 类型 | 适用场景 | 运行方式 |
|---|---|---|
jar | 普通 Java 应用 | java -jar app.jar |
war | Web 应用 | 部署到 Tomcat |
pom | 父项目 | 仅做依赖管理 |
打包和运行不是一回事:
mvn package负责生成构建产物- 真正运行需要把产物部署到 Tomcat 等 Servlet 容器中
Servlet 容器概念
Servlet 容器 是 Web 应用的运行环境,负责接收请求、分发 Servlet、返回响应。
它的职责主要是:
- 管理 Servlet 生命周期
- 监听 HTTP 请求
- 根据 URL 找到对应 Servlet
- 生成并返回 HTML/JSON 响应
常见容器有 Tomcat、Jetty、WildFly、GlassFish,其中 Tomcat 最常见。
请求流程可简记为:
浏览器请求 → Tomcat 接收 → 查找 Servlet → 调用 doGet/doPost → 返回响应
JavaWeb 项目 vs 普通 Java 项目
| 维度 | 普通 Java 项目 | JavaWeb 项目 |
|---|---|---|
| 入口点 | main() | 由容器启动 |
| 打包方式 | jar | war |
| 运行方式 | java -jar | 部署到 Tomcat 后访问 URL |
| 处理对象 | 业务逻辑 | HTTP 请求/响应 |
当前项目属于 Web 项目,结构上会有 src/main/java 和 src/main/webapp 两部分,最终通过 Tomcat 运行。
Web 项目通常没有 main(),因为它不是一个“单一入口程序”,而是由容器根据请求触发 Servlet。也就是说,应用启动由 Tomcat 负责,业务逻辑由 Servlet 在收到请求时执行。
项目配置和启动
环境上通常需要 Maven、Tomcat 和 Java 8+。
IDEA + Tomcat
- 配置 Tomcat Server。
- 新建运行配置,选择
Tomcat Server。 - 在
Before launch中加入clean package。 - 部署产物选择
JavaWebDemo:war。 - 启动后访问
http://localhost:8080/JavaWebDemo/hello-servlet。
命令行构建
cd /Users/nippyxu/VProjects/cocobolo/Java/JavaWebDemo
mvn clean package
cp target/JavaWebDemo-1.0-SNAPSHOT.war /path/to/tomcat/webapps/JavaWebDemo.war
方式三:Maven 内置 Tomcat 插件
可在 pom.xml 中添加 Tomcat 插件,然后运行:
mvn tomcat7:run
实践示例
当前项目里比较重要的几个文件:
HelloServlet.java:处理请求并返回响应web.xml:传统配置入口,可选index.jsp:首页入口
1. HelloServlet
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>servlet data</h1>");
}
}
2. web.xml
当前项目使用注解方式,web.xml 里可以为空,Servlet 通过 @WebServlet 注册。
3. index.jsp
首页中通过链接访问 Servlet:
<a href="hello-servlet">访问 Servlet</a>
访问方式:
| URL | 说明 |
|---|---|
http://localhost:8080/JavaWebDemo/ | 默认首页 |
http://localhost:8080/JavaWebDemo/hello-servlet | Servlet 响应 |
总结
学习顺序可以记成:
- 先掌握 Maven 和
pom.xml - 再理解 Servlet 容器与 Web 项目运行方式
- 最后结合当前示例动手跑一遍
关键概念速记:
| 概念 | 简要说明 |
|---|---|
Maven | Java 项目的构建管理工具 |
pom.xml | Maven 配置文件 |
war | Web 应用打包格式 |
Servlet | 处理 Web 请求的组件 |
Tomcat | 最常见的 Servlet 容器 |
进一步学习可继续扩展到 JSP、Filter、Session、Cookie 和 Spring。