下面是一份面向期末考试的Java Web速成复习指南,涵盖核心知识点、常见技术栈、重点难点和实战建议,帮你快速抓重点、掌握考点。
Java Web 期末速成复习指南
目录
- Java Web 基础架构与原理
- Servlet 与 JSP 技术
- HTTP 协议基础与请求响应流程
- Java Web 常用技术栈介绍
- Session 与 Cookie 原理及应用
- 表单提交与数据处理
- MVC 架构模式与框架基础
- 数据库连接与操作(JDBC)
- 常见安全问题及防护
- 期末高频考点总结与建议
1️⃣ Java Web 基础架构与原理
- 客户端浏览器发送 HTTP 请求 -> 服务器接收请求 -> Web 容器(如 Tomcat)调用对应 Servlet 处理 -> 生成响应返回给浏览器
- Web 容器负责管理 Servlet 生命周期、请求分发
- 常见 Web 容器:Tomcat、Jetty、WebLogic
2️⃣ Servlet 与 JSP 技术
- Servlet:Java Web 的核心组件,继承
HttpServlet
,重写doGet
、doPost
等方法处理请求 - 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-urlencoded
、multipart/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分)
- Servlet 生命周期的三个主要方法是?
A. init、service、destroy
B. init、doGet、doPost
C. service、doGet、doPost
D. start、service、stop
答案:A
解析:Servlet 生命周期包括 init()
初始化,service()
处理请求,destroy()
销毁。
- 以下哪个请求方法不适合提交表单数据?
A. GET
B. POST
C. DELETE
D. PUT
答案:A
解析:GET 请求参数在 URL 中暴露,不适合提交大量或敏感数据。
- Cookie 存储在哪?
A. 服务器
B. 客户端浏览器
C. 数据库
D. 网络传输层
答案:B
- 下列哪种语句可以防止 SQL 注入?
A. Statement.execute()
B. Statement.executeQuery()
C. PreparedStatement 预编译语句
D. Statement.executeUpdate()
答案:C
- JSP 页面的本质是什么?
A. HTML 页面
B. Servlet 的简写形式
C. 静态文件
D. 数据库视图
答案:B
二、简答题(每题5分,共30分)
- 请简述 Servlet 的工作原理。
答案示例:Servlet 由 Web 容器管理,接收到 HTTP 请求后调用 service()
方法,根据请求类型调用 doGet()
或 doPost()
,处理完请求后生成响应返回给客户端。
- 什么是 Session?它是如何实现会话保持的?
答案示例:Session 是服务器端保存的用户会话信息,通过浏览器发送的 Session ID(一般保存在 Cookie)进行标识,实现跨请求保持用户状态。
- 简述 JSP 和 Servlet 的区别。
答案示例:Servlet 是 Java 代码实现,负责业务逻辑;JSP 是更适合写页面展示的技术,最终会编译成 Servlet。JSP 主要用于生成 HTML 内容。
- 说说请求转发和重定向的区别。
答案示例:请求转发在服务器内部完成,地址栏不变;重定向是让浏览器重新发起请求,地址栏会改变。
- JDBC 连接数据库的步骤有哪些?
答案示例:加载数据库驱动,建立连接,创建 Statement,执行 SQL,处理结果集,关闭连接。
- 简述 XSS 攻击及防护措施。
答案示例:XSS 攻击是通过注入恶意脚本窃取用户信息,防护包括输入过滤和输出编码。
三、编程题(共50分)
- 编写一个简单的 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();
}
}
- 编写 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>
- 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 连接查询 | 详见上方代码示例 |
发表回复