Java Web 主要用于构建基于 Web 的应用程序,涵盖了从客户端请求到服务器端处理再到响应返回的全过程
掌握这些 Java Web 关键技术后,可以进一步学习 Spring MVC、Spring Boot 等现代框架来构建更复杂的 Web 应用! 🚀
1. HTTP 协议
HTTP(HyperText Transfer Protocol,超文本传输协议) 是 Web 开发的基础,主要用于客户端(浏览器)和服务器之间的通信
1.1 HTTP 的特点
- 无状态:每次请求是独立的,服务器不会记录上次请求的状态
- 基于请求-响应模式:客户端发送请求,服务器返回响应
- 明文传输:默认情况下,HTTP 传输的数据是明文的(可使用 HTTPS 进行加密)
- 可扩展性 :通过请求头(Header)可以扩展功能,如
Cookie
、User-Agent
等
1.2 常见的 HTTP 方法
- GET:获取资源(如网页、图片、数据等)
- POST:提交数据(如表单、JSON 数据等)
- PUT:更新资源
- DELETE:删除资源
- HEAD:类似 GET 请求,但不返回响应体(只返回头部信息)
- OPTIONS:获取服务器支持的请求方法
2. GET 和 POST 请求
2.1 GET 请求
-
参数通过 URL 传递 如
?key=value&key2=value2
-
数据长度受 URL 限制(通常 2048 字符)
-
适用于获取数据,而不进行修改
-
不适用于敏感数据传输(参数暴露在 URL 中)
-
示例:
bashGET /login?username=admin&password=123 HTTP/1.1 Host: example.com
2.2 POST 请求
-
参数存放在请求体(body)中,不会暴露在 URL
-
没有数据长度限制
-
适用于数据提交(如表单、文件上传等)
-
更安全(但仍需加密,如使用 HTTPS)
-
示例:
makefilePOST /login HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded Content-Length: 27 username=admin&password=123
3. HTTP 响应数据格式
服务器处理请求后,返回响应数据,通常包含:
- 状态行 :如
HTTP/1.1 200 OK
- 响应头 :如
Content-Type
、Content-Length
、Set-Cookie
等 - 响应体:返回的实际数据,如 JSON、HTML、XML、文本等
常见的 HTTP 状态码
状态码 | 含义 |
---|---|
200 OK | 请求成功 |
301 Moved Permanently | 资源永久重定向 |
302 Found | 资源临时重定向 |
400 Bad Request | 客户端请求错误 |
401 Unauthorized | 未授权 |
403 Forbidden | 禁止访问 |
404 Not Found | 资源未找到 |
500 Internal Server Error | 服务器内部错误 |
4. Tomcat 服务器
Tomcat 是一个轻量级的 Java Web 服务器,用于运行 Servlet 和 JSP 应用。它实现了 Servlet 规范 和 JSP 规范,是 Java Web 开发的基础
Tomcat 的主要组件
- Catalina:Servlet 容器,负责处理 HTTP 请求和响应
- Coyote:Tomcat 的 HTTP 连接器,负责解析 HTTP 请求
- Jasper:JSP 解析引擎,将 JSP 转换为 Servlet 进行执行
Tomcat 部署 Web 应用
-
webapps/
目录:存放 Web 应用,如.war
包或文件夹 -
conf/server.xml
:Tomcat 配置文件,可修改端口等参数 -
启动命令:
sh./bin/startup.sh # Linux/macOS bin\startup.bat # Windows
5. Servlet
5.1 什么是 Servlet
Servlet 是 Java Web 开发的核心,它是运行在服务器端的 Java 类,负责接收 HTTP 请求,处理数据,并返回 HTTP 响应
5.2 Servlet 的生命周期
- 创建(init) :容器加载 Servlet 并调用
init()
方法(只执行一次) - 处理请求(service) :每次请求都会调用
service()
方法,根据请求方法调用doGet()
或doPost()
- 销毁(destroy) :服务器关闭或应用卸载时调用
destroy()
方法(只执行一次)
5.3 示例:HelloServlet
java
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("<h1>Hello, Servlet!</h1>");
}
}
@WebServlet("/hello")
:定义访问路径/hello
doGet()
处理 GET 请求,并返回text/html
响应
6. JSP(Java Server Pages)
6.1 什么是 JSP
JSP 是一种基于 Java 的动态网页技术,本质上是 Servlet 的扩展,可以在 HTML 中嵌入 Java 代码
6.2 JSP 的核心语法
-
指令(Directive)
-
设置 JSP 属性,如页面编码:
jsp<%@ page language="java" contentType="text/html; charset=UTF-8" %>
-
-
表达式(Expression)
-
输出变量值:
jsp<h1>当前时间:<%= new java.util.Date() %></h1>
-
-
脚本(Scriptlet)
-
在 JSP 页面中写 Java 代码:
jsp<% String message = "Hello, JSP!"; out.print(message); %>
-
-
声明(Declaration)
-
定义类级别变量或方法:
jsp<%! int count = 0; %>
-
6.3 JSP 的工作原理
- JSP 文件被 Tomcat 转换为 Servlet (
*.java
) - 编译生成
*.class
文件并执行 - 处理请求并生成 HTML 响应
6.4 JSP 与 Servlet 的关系
- JSP 更适合页面开发(可以混写 HTML + Java)
- Servlet 更适合业务逻辑处理
- 最佳实践 :使用 JSP 做视图 ,Servlet 做控制器(MVC 设计模式)
7. 总结
技术 | 作用 |
---|---|
HTTP 协议 | 客户端与服务器的通信规则 |
GET & POST | 两种常用的 HTTP 请求方法 |
Tomcat | 运行 Java Web 应用的服务器 |
Servlet | 处理 HTTP 请求的 Java 服务器端组件 |
JSP | 生成动态 HTML 的 Java 视图技术 |