下面是一份面向期末考试的Java Web速成复习指南,涵盖核心知识点、常见技术栈、重点难点和实战建议,帮你快速抓重点、掌握考点。


Java Web 期末速成复习指南


目录

  1. Java Web 基础架构与原理
  2. Servlet 与 JSP 技术
  3. HTTP 协议基础与请求响应流程
  4. Java Web 常用技术栈介绍
  5. Session 与 Cookie 原理及应用
  6. 表单提交与数据处理
  7. MVC 架构模式与框架基础
  8. 数据库连接与操作(JDBC)
  9. 常见安全问题及防护
  10. 期末高频考点总结与建议

1️⃣ Java Web 基础架构与原理

  • 客户端浏览器发送 HTTP 请求 -> 服务器接收请求 -> Web 容器(如 Tomcat)调用对应 Servlet 处理 -> 生成响应返回给浏览器
  • Web 容器负责管理 Servlet 生命周期、请求分发
  • 常见 Web 容器:Tomcat、Jetty、WebLogic

2️⃣ Servlet 与 JSP 技术

  • Servlet:Java Web 的核心组件,继承 HttpServlet,重写 doGetdoPost 等方法处理请求
  • JSP:Java Server Pages,动态网页技术,实质上是 Servlet 的简写,方便嵌入 HTML
  • 了解 Servlet 生命周期(init、service、destroy)
  • 请求转发与重定向:RequestDispatcher.forward() 与 response.sendRedirect() 的区别

3️⃣ HTTP 协议基础与请求响应流程

  • 常见请求方法:GET、POST、PUT、DELETE
  • 请求行、请求头、请求体结构
  • 状态码含义:200 OK,302 重定向,404 未找到,500 服务器错误
  • 了解请求参数传递与编码处理

4️⃣ Java Web 常用技术栈介绍

  • JDBC:Java 数据库连接,执行 SQL
  • 连接池:如 DBCP、C3P0,提高数据库连接效率
  • ORM 框架:MyBatis、Hibernate 简介
  • Servlet API:请求、响应、会话管理
  • 过滤器与监听器:实现请求预处理、资源释放等功能

5️⃣ Session 与 Cookie 原理及应用

  • Cookie:客户端保存数据,随请求发送
  • Session:服务器端保存会话信息,常通过 Cookie 关联 Session ID
  • 会话保持机制,登录验证常用
  • Session 生命周期及超时设置

6️⃣ 表单提交与数据处理

  • GET 与 POST 提交区别
  • 表单编码类型:application/x-www-form-urlencodedmultipart/form-data
  • 参数获取:request.getParameter()
  • 文件上传处理(MultipartConfig)

7️⃣ MVC 架构模式与框架基础

  • MVC:Model(模型)、View(视图)、Controller(控制器)
  • Servlet 充当 Controller,JSP 作为 View
  • Spring MVC 简介及请求映射
  • 分层设计思想,解耦业务逻辑与视图展示

8️⃣ 数据库连接与操作(JDBC)

  • 加载驱动类
  • 获取连接 DriverManager.getConnection()
  • 创建 Statement 或 PreparedStatement 执行 SQL
  • 处理结果集 ResultSet
  • 关闭连接释放资源

9️⃣ 常见安全问题及防护

  • XSS 攻击:输入过滤、输出编码
  • SQL 注入:使用预编译语句(PreparedStatement)
  • 会话固定攻击、防止 Session 劫持
  • CSRF(跨站请求伪造)简单防护手段

🔟 期末高频考点总结与建议

重点考点复习建议
Servlet 生命周期重点理解生命周期方法和执行流程
请求转发与重定向区分应用场景,掌握方法调用及区别
Session 与 Cookie会话原理,管理机制及常用操作
HTTP 协议理解请求响应基本结构及常见状态码
表单提交与参数获取熟悉 GET、POST 及表单编码方式
JDBC 操作流程理解连接、执行、结果处理及资源释放
MVC 模式与框架结构了解分层架构优势及基本实现方式
安全防护基本安全威胁及防护措施

期末冲刺小贴士

  • 多动手写 Servlet 和 JSP 代码,加深理解
  • 理解请求响应链路,掌握调试技巧
  • 熟悉常用 API,避免死记硬背
  • 结合框架(Spring MVC)可重点了解请求映射和数据绑定

好的!下面给你一份Java Web 期末模拟试题(含答案解析)和重点代码范例,帮助你快速复习和自测。


Java Web 期末模拟试题(含答案解析)


一、选择题(每题2分,共20分)

  1. Servlet 生命周期的三个主要方法是?
    A. init、service、destroy
    B. init、doGet、doPost
    C. service、doGet、doPost
    D. start、service、stop

答案:A
解析:Servlet 生命周期包括 init() 初始化,service() 处理请求,destroy() 销毁。

  1. 以下哪个请求方法不适合提交表单数据?
    A. GET
    B. POST
    C. DELETE
    D. PUT

答案:A
解析:GET 请求参数在 URL 中暴露,不适合提交大量或敏感数据。

  1. Cookie 存储在哪?
    A. 服务器
    B. 客户端浏览器
    C. 数据库
    D. 网络传输层

答案:B

  1. 下列哪种语句可以防止 SQL 注入?
    A. Statement.execute()
    B. Statement.executeQuery()
    C. PreparedStatement 预编译语句
    D. Statement.executeUpdate()

答案:C

  1. JSP 页面的本质是什么?
    A. HTML 页面
    B. Servlet 的简写形式
    C. 静态文件
    D. 数据库视图

答案:B


二、简答题(每题5分,共30分)

  1. 请简述 Servlet 的工作原理。

答案示例:Servlet 由 Web 容器管理,接收到 HTTP 请求后调用 service() 方法,根据请求类型调用 doGet()或 doPost(),处理完请求后生成响应返回给客户端。

  1. 什么是 Session?它是如何实现会话保持的?

答案示例:Session 是服务器端保存的用户会话信息,通过浏览器发送的 Session ID(一般保存在 Cookie)进行标识,实现跨请求保持用户状态。

  1. 简述 JSP 和 Servlet 的区别。

答案示例:Servlet 是 Java 代码实现,负责业务逻辑;JSP 是更适合写页面展示的技术,最终会编译成 Servlet。JSP 主要用于生成 HTML 内容。

  1. 说说请求转发和重定向的区别。

答案示例:请求转发在服务器内部完成,地址栏不变;重定向是让浏览器重新发起请求,地址栏会改变。

  1. JDBC 连接数据库的步骤有哪些?

答案示例:加载数据库驱动,建立连接,创建 Statement,执行 SQL,处理结果集,关闭连接。

  1. 简述 XSS 攻击及防护措施。

答案示例:XSS 攻击是通过注入恶意脚本窃取用户信息,防护包括输入过滤和输出编码。


三、编程题(共50分)

  1. 编写一个简单的 Servlet,响应 GET 请求,输出“Hello, Java Web!”。
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("<h1>Hello, Java Web!</h1>");
    out.close();
  }
}
  1. 编写 JSP 页面,获取请求参数 username 并显示欢迎信息。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <body>
    <%
      String username = request.getParameter("username");
      if (username == null || username.isEmpty()) {
        out.println("欢迎,访客!");
      } else {
        out.println("欢迎," + username + "!");
      }
    %>
  </body>
</html>
  1. JDBC 简单查询示例,查询用户表显示用户名。
import java.sql.*;

public class UserQuery {
  public static void main(String[] args) {
    String url = "jdbc:mysql://localhost:3306/testdb";
    String user = "root";
    String password = "password";

    try {
      Class.forName("com.mysql.cj.jdbc.Driver");
      Connection conn = DriverManager.getConnection(url, user, password);
      String sql = "SELECT username FROM users";
      Statement stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery(sql);
      while(rs.next()) {
        System.out.println("用户名:" + rs.getString("username"));
      }
      rs.close();
      stmt.close();
      conn.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

重点代码范例总结

功能示例代码简述
Servlet 输出文本response.getWriter().println()
JSP 获取请求参数request.getParameter()
请求转发request.getRequestDispatcher("xxx").forward(request, response)
重定向response.sendRedirect("url")
Session 设置获取request.getSession().setAttribute() / getAttribute()
JDBC 连接查询详见上方代码示例