JavaWeb关键概念解析

1. Servlet

  • 是什么:处理 HTTP 请求的 Java 类,是 JavaWeb 的核心组件

  • 作用

    • 接收请求(GET/POST)
    • 处理业务逻辑(如验证登录)
    • 返回响应(重定向、转发到 JSP)
  • 生命周期

    1. 初始化:首次访问时调用 init()
    2. 服务:每次请求调用 service() → 分发给 doGet()doPost()
    3. 销毁:服务器关闭时调用 destroy()
  • 示例

    1
    2
    3
    4
    5
    6
    @WebServlet("/hello")
    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 标签 简化页面逻辑
  • 执行流程
    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
    @WebFilter("/*")
    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
    @WebListener
    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)
  • 优势:代码分层,易于维护和扩展。
  • 流程示例
    1. 用户访问 /loginLoginServlet(Controller)处理请求
    2. Servlet 调用 UserService(Model)验证用户名密码
    3. 返回结果到 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。
  • 核心步骤
    1. 加载驱动 Class.forName("com.mysql.cj.jdbc.Driver");
    2. 建立连接 Connection conn = DriverManager.getConnection(url, user, pwd);
    3. 执行 SQL Statement stmt = conn.createStatement();
    4. 处理结果 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 分层架构设计 大型项目开发

学习建议

  1. 动手实践:从简单的登录功能开始,逐步整合各组件。
  2. 调试工具:使用 Postman 测试 API,浏览器开发者工具查看请求/响应。
  3. 框架过渡:掌握基础后学习 Spring Boot 简化开发。

理解这些核心概念后,你将能独立开发基础 JavaWeb 应用,并为学习企业级框架(如 Spring)奠定坚实基础!