这份宝典将不仅仅是知识点的罗列,更侧重于实战思维、核心原理和最佳实践,希望能帮助您构建一个系统、扎实的 Java Web 技术体系。

宝典序言:Java Web 的过去、现在与未来
Java Web 开发曾经是“企业级应用”的代名词,以 SSH (Struts + Spring + Hibernate) 为代表的框架组合统治了多年,随着技术的发展,生态发生了巨大变化:
- 过去: Servlet/JSP 是基石,SSH 是主流,开发流程相对笨重,但思想深刻。
- Spring Boot 绝对主导,极大地简化了配置和开发。Spring MVC 是事实上的 Web 开发标准。MyBatis 因其灵活性和 SQL 直观性,在持久层成为 Hibernate 的有力竞争者。Vue/React/Angular 等前端框架实现了前后端分离。
- 云原生、微服务 (Spring Cloud/Dubbo)、响应式编程 (WebFlux)、云原生数据库 等将成为新的技术栈标配。
本宝典的核心理念: “以 Spring Boot 为中心,向两端延伸:一端是 Servlet 底层原理,另一端是分布式、云原生架构,知其然,更知其所以然。”
第一部分:基石篇 - Java Web 核心原理
是内功,理解了它们,你才能在后续的学习中游刃有余,不被框架的“黑魔法”所迷惑。
第一章:Servlet & Tomcat - 万丈高楼平地起
- 1 Servlet 的本质:
- 是什么: 一个运行在 Web 容器(如 Tomcat)中的 Java 类,用于接收和响应来自客户端的 HTTP 请求。
- 核心接口:
javax.servlet.Servlet,javax.servlet.http.HttpServlet,重点理解service()方法。
- 2 HTTP 协议基础:
- 请求/响应模型: Method (GET/POST/PUT/DELETE)、URL、Headers、Body。
- 状态码: 200, 301, 404, 500 的含义。
- 3 Tomcat 工作原理:
- 一个简单的 Web 服务器: 如何用 Java 写一个能处理 HTTP 请求的 Socket 服务器。
- Tomcat 作为容器: 如何加载
webapp,如何解析web.xml,如何根据 URL 映射到对应的 Servlet。 - 实战:
- 手动创建一个 Maven 项目,编写一个
HelloWorldServlet,并手动部署到 Tomcat 的webapps目录下。 - 理解
web.xml配置:<servlet-mapping>的精确匹配、路径匹配、扩展名匹配。
- 手动创建一个 Maven 项目,编写一个
第二章:JSP & EL & JSTL - 动态页面的旧时代与新貌
- 1 JSP (JavaServer Pages):
- 本质: 一个 Servlet,JSP 文件最终会被 Tomcat 编译成一个 Servlet 类。
- 三大指令:
page,include,taglib。 - 九大内置对象:
request,response,session,application,out,pageContext,config,page,exception,重点掌握前四个。
- 2 EL (Expression Language):
- 作用: 替代 JSP 中的 Java 代码片段,简化数据访问。
- 语法:
${expression}。${user.name}等价于pageContext.findAttribute("user").getName()。
- 3 JSTL (JSP Standard Tag Library):
- 作用: 使用标签库来控制逻辑,进一步将 Java 代码从页面中剥离。
- 核心标签库:
<c:if>,<c:forEach>等。
- 实战:
- 创建一个用户列表页面,使用 JSP 遍历一个
List<User>对象,并用 EL 和 JSTL 进行展示和条件判断。 - 理解 MVC 模式在 JSP 中的体现: Servlet 作为 Controller,处理请求并存入
request,forward到 JSP 作为 View 进行展示。
- 创建一个用户列表页面,使用 JSP 遍历一个
第二部分:框架篇 - 现代 Java Web 开发利器
这是实战的核心,也是企业招聘要求的主流技能。

第三章:Spring Framework - 控制反转与面向切面编程
- 1 IoC (Inversion of Control) / DI (Dependency Injection):
- 核心思想: 将对象创建和依赖关系的维护交给 Spring 容器。
- 实战:
- 创建一个
UserService和UserDao,通过 XML 配置或@Component注解,让 Spring 自动管理它们并注入依赖。 - 理解
ApplicationContext是 Spring 容器的核心。
- 创建一个
- 2 AOP (Aspect-Oriented Programming):
- 核心思想: 将横切关注点(如日志、事务、权限)与业务逻辑分离。
- 核心概念: Aspect, Joinpoint, Pointcut, Advice。
- 实战:
- 创建一个切面,使用
@Aspect注解,定义一个@Around通知,用于拦截所有Service层方法并打印其执行时间。
- 创建一个切面,使用
第四章:Spring MVC - 构建强大的 Web 层
- 1 核心组件与流程:
- DispatcherServlet: 前端控制器,是整个流程的入口。
- HandlerMapping: 请求映射器,将 URL 映射到具体的 Controller 方法。
- Controller: 处理请求,调用业务逻辑,返回
ModelAndView。 - ViewResolver: 视图解析器,解析逻辑视图名,渲染成具体的页面。
- 2 注解驱动开发:
@Controller: 声明一个 Spring MVC 控制器。@RequestMapping: 映射 HTTP 请求到处理方法。@RequestParam: 绑定请求参数。@PathVariable: 绑定 URL 路径变量。@ResponseBody/@RestController: 返回 JSON 等格式的数据,实现 RESTful API。
- 实战:
- RESTful API 开发: 设计一套用户管理的 RESTful API (e.g.,
GET /api/users,POST /api/users,GET /api/users/{id})。 - 参数接收: 接收表单数据、JSON 数据、路径变量。
- 返回数据: 返回 JSON 对象、List、自定义响应体。
- 文件上传: 实现一个文件上传接口。
- RESTful API 开发: 设计一套用户管理的 RESTful API (e.g.,
第五章:MyBatis - 灵活高效的持久层框架
- 1 为什么是 MyBatis:
相比 JPA/Hibernate,MyBatis 更贴近 SQL,让开发者拥有完全的控制权,对于复杂查询和性能优化非常友好。
- 2 核心要素:
SqlSessionFactory/SqlSession: MyBatis 的核心,类似于 JDBC 的Connection。- Mapper Interface: 无需实现,MyBatis 会为其创建动态代理。
- Mapper XML: 编写 SQL 语句、结果映射的核心文件。
- vs : 必须掌握! 是预编译(防SQL注入), 是字符串拼接。
- 实战:
- 集成 MyBatis 到 Spring 项目中。
- 编写
UserMapper接口和对应的UserMapper.xml。 - 实现用户的 CRUD 操作。
- 处理复杂结果集: 使用
<resultMap>解决一对多、多对一的关联查询问题。 - 动态 SQL: 使用
<if>,<where>,<foreach>等标签,根据条件动态拼接 SQL。
第六章:Spring Boot - 一站式解决方案
- 1 核心特性:
- 自动配置:
@EnableAutoConfiguration,根据classpath下的 jar 包自动配置 Bean。 - 起步依赖:
spring-boot-starter-web等,简化了 Maven/Gradle 依赖。 - 嵌入式容器: 无需部署外部 Tomcat,直接
mvn spring-boot:run即可运行。
- 自动配置:
- 2 实战项目:一个完整的 CRUD 系统
- 项目结构: 标准的 Maven/Gradle 项目结构。
pom.xml: 引入spring-boot-starter-web,spring-boot-starter-data-jpa(或mybatis-spring-boot-starter),spring-boot-starter-test,mysql-connector-java等依赖。application.properties/application.yml: 配置数据源、服务器端口、JPA/MyBatis 设置等。推荐使用 YAML 格式,更清晰。- 代码分层:
entity(domain/model): 实体类,如User.java。dao/mapper(repository): 数据访问层接口,如UserRepository.java(JPA) 或UserMapper.java(MyBatis)。service: 业务逻辑层接口和实现,如UserService.java,UserServiceImpl.java。controller: 控制器层,如UserController.java。
- 启动类:
@SpringBootApplication注解的DemoApplication.java。 - 测试: 使用
@SpringBootTest编写单元测试和集成测试。
第三部分:进阶篇 - 企业级应用与架构
当你掌握了基础框架后,这些技能是让你从“会用”到“精通”的关键。
第七章:数据访问进阶
- 1 Spring Data JPA:
- 核心理念: 只需定义接口,无需实现 CRUD 方法。
- 实战: 让
UserRepository继承JpaRepository<T, ID>,即可自动拥有save,findById,findAll,deleteById等方法,使用@Query注解自定义 SQL。
- 2 缓存:
- 为什么需要缓存: 减少数据库访问,提升性能。
- Spring Cache 抽象:
@Cacheable,@CachePut,@CacheEvict。 - 实战: 集成
Redis作为缓存实现,在查询用户的方法上添加@Cacheable(key = "#id"),在更新/删除方法上添加@CacheEvict。
- 3 数据库连接池:
- HikariCP: Spring Boot 2.x 的默认连接池,性能极佳,只需在
application.yml中配置即可。
- HikariCP: Spring Boot 2.x 的默认连接池,性能极佳,只需在
第八章:安全防护
- 1 Spring Security:
- 核心功能: 认证和授权。
- 实战:
- 集成 Spring Security,实现一个简单的登录/注销功能。
- 配置 URL 权限控制:
/api/admin/**需要ADMIN角色,/api/user/**需要USER角色。 - JWT (JSON Web Token) 集成: 实现无状态的 RESTful API 认证,用户登录成功后,服务器返回一个 JWT,后续请求在 Header 中携带此 Token 进行身份验证。
第九章:项目构建与部署
- 1 构建工具:
- Maven vs Gradle: Gradle 在语法灵活性和性能上更优,是目前的主流。
- 2 打包与运行:
- 打包成可执行 JAR:
mvn package,生成一个包含所有依赖和 Tomcat 的fat jar,通过java -jar xxx.jar运行。 - 打包成 WAR: 部署到外部 Tomcat。
- 打包成可执行 JAR:
- 3 容器化部署:
- Docker:
- 编写
Dockerfile,定义应用的构建和运行环境。 - 将 JAR 包和 Dockerfile 打包成 Docker 镜像。
- 使用
docker run命令在本地或服务器上运行应用。
- 编写
- Docker Compose: 用于编排多个容器(如你的应用 + MySQL + Redis)。
- Docker:
第十章:微服务入门
- 1 微服务理念:
- 单体 vs 微服务: 拆分、独立部署、技术异构性。
- 2 Spring Cloud:
- 服务注册与发现: Nacos / Eureka,服务启动时向注册中心注册自己,调用方从注册中心获取服务列表。
- 声明式服务调用: OpenFeign,像调用本地方法一样调用远程服务。
- API 网关: Spring Cloud Gateway,所有请求的入口,负责路由、鉴权、限流等。
- 实战(概念演示):
- 创建两个 Spring Boot 项目
user-service和order-service。 - 集成 Nacos,让它们互相注册发现。
- 在
order-service中使用 OpenFeign 调用user-service的接口。
- 创建两个 Spring Boot 项目
第四部分:实战项目与学习路径
学习路径建议
- 基础扎实 (1-2个月)
- 学习第一部分,动手敲 Servlet + JSP 的例子,理解
web.xml和 MVC。 - 学习第二部分前三章,理解 Spring 的 IoC/AOP,并用 Spring MVC + MyBatis 手动搭建一个 CRUD 项目(不使用 Spring Boot)。
- 学习第一部分,动手敲 Servlet + JSP 的例子,理解
- 框架精通 (2-3个月)
- 全面学习 Spring Boot,将上一阶段的项目用 Spring Boot 重构一遍,感受其便利性。
- 深入学习 Spring Data JPA 和 Spring Security,并集成到项目中。
- 学习 Docker,将项目容器化。
- 进阶与架构 (长期)
- 学习缓存、消息队列 (RabbitMQ/Kafka)、分布式事务等。
- 学习微服务架构,尝试用 Spring Cloud 拆分你的项目。
- 关注云原生、Serverless 等新技术趋势。
实战项目推荐
-
入门级:个人博客系统
- 功能: 文章的增删改查、分类、标签、评论。
- 技术栈: Spring Boot + MyBatis + Thymeleaf (模板引擎,替代JSP) + MySQL。
- 目标: 掌握完整的 CRUD 和项目流程。
-
进阶级:在线商城 / 论坛系统
- 功能: 用户注册登录、商品/帖子浏览、购物车/收藏、订单/发帖、支付集成(模拟)。
- 技术栈: Spring Boot + Spring Data JPA + Spring Security + Redis (缓存/Session) + Vue/React (前后端分离) + Docker。
- 目标: 掌握复杂业务逻辑、缓存、安全、前后端分离。
-
架构级:微服务版商城
- 功能: 将商城拆分为用户服务、商品服务、订单服务、网关服务等。
- 技术栈: Spring Boot + Spring Cloud (Nacos, OpenFeign, Gateway) + MyBatis/JPA + Redis + MySQL + Docker Compose。
- 目标: 理解微服务架构,掌握服务治理。
Java Web 领域技术栈庞大且不断演进,但其核心思想(HTTP、MVC、分层、解耦)是相对稳定的,这份宝典为您描绘了一幅清晰的地图。
最重要的建议:多动手,多思考,多总结。 不要只停留在看懂,要去实现它,遇到问题,学会使用搜索引擎和官方文档,这是程序员最重要的能力。
祝您在 Java Web 的实战之路上,披荆斩棘,终成大侠!
