1. Servlet
是什么:处理 HTTP 请求的 Java 类,是 JavaWeb 的核心组件。
作用:
- 接收请求(GET/POST)
- 处理业务逻辑(如验证登录)
- 返回响应(重定向、转发到 JSP)
生命周期:
- 初始化:首次访问时调用
init()
- 服务:每次请求调用
service()
→ 分发给doGet()
或doPost()
- 销毁:服务器关闭时调用
destroy()
- 初始化:首次访问时调用
示例:
1
2
3
4
5
6
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
resp.getWriter().write("Hello World!");
}
}
2. JSP(JavaServer Pages)
是什么:动态生成 HTML 页面的技术,本质是被编译为 Servlet。
特点:
- 支持嵌入 Java 代码(
<% ... %>
) - 使用 EL 表达式
${}
和 JSTL 标签 简化页面逻辑
- 支持嵌入 Java 代码(
执行流程:
JSP文件
→ 转换为Servlet.java
→ 编译为.class
→ 处理请求示例:
1
2
3
4
5
6<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<h1>欢迎, ${user.name}!</h1> <!-- EL表达式读取数据 -->
</body>
</html>
3. Filter(过滤器)
是什么:拦截请求/响应的组件,用于预处理或后处理。
典型用途:
- 统一设置编码(解决中文乱码)
- 记录请求日志
- 权限验证(如检查用户是否登录)
执行顺序:按
web.xml
配置顺序或类名顺序执行。示例:
1
2
3
4
5
6
7
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, res); // 放行请求
}
}
4. Listener(监听器)
是什么:监听 Web 应用中的事件(如应用启动、会话创建)。
常用监听器:
ServletContextListener
:监听应用启动/关闭HttpSessionListener
:统计在线用户数ServletRequestListener
:监控请求生命周期
示例:
1
2
3
4
5
6
public class AppListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
System.out.println("应用启动了!");
}
}
5. MVC 设计模式
- 核心思想:
- Model(模型):数据与业务逻辑(如 JavaBean、Service 类)
- View(视图):展示数据(如 JSP、HTML)
- Controller(控制器):接收请求并协调 Model 和 View(如 Servlet)
- 优势:代码分层,易于维护和扩展。
- 流程示例:
- 用户访问
/login
→LoginServlet
(Controller)处理请求 - Servlet 调用
UserService
(Model)验证用户名密码 - 返回结果到
login-result.jsp
(View)显示
- 用户访问
6. 会话管理(Session & Cookie)
Session:
- 服务器端存储用户会话数据(如
HttpSession
) - 默认通过 JSESSIONID Cookie 关联客户端
- 服务器端存储用户会话数据(如
Cookie:
- 客户端存储少量数据(如用户偏好设置)
- 大小限制约 4KB
示例:
1
2
3// 在 Servlet 中创建 Session
HttpSession session = request.getSession();
session.setAttribute("user", user); // 存储用户对象
7. JDBC(Java Database Connectivity)
- 作用:连接数据库并执行 SQL。
- 核心步骤:
- 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
- 建立连接
Connection conn = DriverManager.getConnection(url, user, pwd);
- 执行 SQL
Statement stmt = conn.createStatement();
- 处理结果
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
- 加载驱动
- 优化:使用连接池(如 HikariCP)提升性能。
8. Tomcat(Web 服务器)
- 是什么:轻量级的 JavaWeb 应用服务器,用于部署和运行 Servlet/JSP。
- 关键目录:
webapps
:存放 WAR 包或项目文件夹logs
:查看运行日志(如catalina.out
)
- 部署方式:
- 直接将项目文件夹复制到
webapps
- 使用 Maven 打包为 WAR 文件自动部署
- 直接将项目文件夹复制到
总结:JavaWeb 技术栈
组件 | 作用 | 常见应用场景 |
---|---|---|
Servlet | 处理 HTTP 请求 | 用户登录、表单提交 |
JSP | 动态生成页面 | 显示用户数据、商品列表 |
Filter | 请求预处理/后处理 | 编码设置、权限控制 |
Listener | 监听应用事件 | 统计在线人数、初始化资源 |
JDBC | 操作数据库 | 用户注册、订单查询 |
MVC | 分层架构设计 | 大型项目开发 |
学习建议
- 动手实践:从简单的登录功能开始,逐步整合各组件。
- 调试工具:使用 Postman 测试 API,浏览器开发者工具查看请求/响应。
- 框架过渡:掌握基础后学习 Spring Boot 简化开发。
理解这些核心概念后,你将能独立开发基础 JavaWeb 应用,并为学习企业级框架(如 Spring)奠定坚实基础!