HttpServlet类简介说明
`HttpServlet`是Java Servlet API中一个抽象类,
专门用于处理HTTP请求
它是 `javax.servlet.http` 包中的核心类之一
开发者通常通过继承该类并重写其方法来创建自己Servlet
HttpServlet简介
功能 | 描述 |
处理HTTP请求 | 提供对 GET、POST、PUT、DELETE 等 HTTP 方法的标准处理方式 |
封装HTTP协议细节 | 通过 `HttpServletRequest` 和 `HttpServletResponse` 操作请求和响应 |
简化开发流程 | 开发者只需关注业务逻辑,无需手动解析 HTTP 协议 |
HttpServlet生命周期
`HttpServlet` 继承自 `GenericServlet`
其生命周期由 Web 容器管理,主要包括以下三个阶段:
1.初始化阶段
- 调用 `init(ServletConfig config)` 方法
- 只执行一次,用于加载资源(如数据库连接)
2.服务阶段
- 调用 `service(HttpServletRequest req, HttpServletResponse resp)` 方法
- 根据请求类型自动调用 `doGet()`、`doPost()` 等方法
3.销毁阶段
- 调用`destroy()`方法
- 在应用关闭或重新部署时执行,用于释放资源
常用方法说明
方法 | 描述 |
`doGet(HttpServletRequest req, HttpServletResponse resp)` | 处理客户端的 GET 请求 |
`doPost(HttpServletRequest req, HttpServletResponse resp)` | 处理客户端的 POST 请求 |
`doPut(HttpServletRequest req, HttpServletResponse resp)` | 处理 PUT 请求(更新资源) |
`doDelete(HttpServletRequest req, HttpServletResponse resp)` | 处理 DELETE 请求(删除资源) |
`service(HttpServletRequest req, HttpServletResponse resp)` | 根据请求类型分发到对应的 `doXxx()` 方法(一般不直接重写) |
例
import java.io.*;
import javax.servlet.http.*;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello from GET!</h1>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello from POST!</h1>");
}
}
使用HttpServlet优点
优势 | 描述 |
简化HTTP请求处理 | 自动识别请求方法,避免手动解析 |
支持多种 HTTP 方法 | 包括 GET、POST、PUT、DELETE 等 RESTful 所需方法 |
与 Web 容器良好集成 | 如 Tomcat、Jetty、Undertow 等主流容器都支持 |
易于扩展 | 可结合 Filter、listener 实现更复杂的功能 |