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)奠定坚实基础!