servlet 一篇文章就够了
servlet是我们java学习,必不可少的知识,那么servlet指什么呢?
下文笔者将一一道来,如下所示
下文笔者将一一道来,如下所示
servlet简介
Servlet是运行
在Web 服务器或应用服务器上Java程序
用于处理客户端的 HTTP 请求并生成响应内容
Servlet核心关键字
1.核心组件与接口
| 关键字 | 说明 |
| `Servlet` | Servlet 的核心接口,定义了 `init()`, `service()`, `destroy()` 方法 |
| `HttpServlet` | 抽象类,简化 HTTP 协议处理,开发者通常继承此类 |
| `ServletRequest` | 封装客户端请求信息 |
| `ServletResponse` | 封装响应信息 |
| `HttpServletRequest` | HTTP 请求对象,提供获取请求头、参数、会话等方法 |
| `HttpServletResponse` | HTTP 响应对象,用于设置状态码、响应头、输出内容 |
| `ServletContext` | 表示整个 Web 应用的上下文,用于共享数据、获取资源等 |
| `ServletConfig` | 用于获取 Servlet 初始化参数和上下文 |
2.生命周期相关
| 关键字 | 说明 |
| `init()` | 初始化方法,在 Servlet 第一次被加载时调用 |
| `service()` | 处理请求的核心方法,根据请求类型调用 `doGet`, `doPost` 等 |
| `doGet()` | 处理 GET 请求 |
| `doPost()` | 处理 POST 请求 |
| `destroy()` | 销毁方法,在 Web 应用关闭或 Servlet 被卸载时调用 |
3.注解(Servlet 3.0+)
| 注解 | 说明 |
| `@WebServlet` | 声明一个 Servlet,并指定 URL 映射(无需 web.xml) |
| `@WebInitParam` | 配置 Servlet 初始化参数 |
| `@Weblistener` | 声明监听器类 |
| `@WebFilter` | 声明过滤器类 |
4.请求与响应处理
| 关键字 | 说明 |
| `getParameter()` | 获取请求参数 |
| `getParameterMap()` | 获取所有参数的 Map 形式 |
| `setAttribute()` / `getAttribute()` | 在 request 或 session 中存取属性 |
| `setContentType()` | 设置响应内容类型(如 text/html, application/json) |
| `getWriter()` | 获取字符输出流,用于向客户端发送文本响应 |
| `getOutputStream()` | 获取二进制输出流,用于发送文件等二进制数据 |
会话管理
| 关键字 | 说明 |
| `HttpSession` | 表示用户会话,用于跨多个请求保持用户状态 |
| `getSession()` | 获取当前用户的会话对象 |
| `setAttribute()` / `getAttribute()` | 在 Session 中保存和读取数据 |
| `invalidate()` | 使会话失效,用于注销功能 |
6.过滤器与监听器
| 关键字 | 说明 |
| `Filter` | 过滤器接口,实现 `doFilter()` 方法 |
| `FilterChain` | 过滤链,控制请求继续传递 |
| `ServletContextListener` | Web 应用启动和关闭时的监听器 |
| `HttpSessionListener` | 监听会话创建和销毁事件 |
| `ServletRequestListener` | 监听请求的创建和销毁 |
7.部署描述符(web.xml)
| 元素 | 说明 |
| `<servlet>` | 声明一个 Servlet |
| `<servlet-mapping>` | 映射 URL 到对应的 Servlet |
| `<filter>` | 声明一个过滤器 |
| `<filter-mapping>` | 映射过滤器到某个 URL 或 Servlet |
| `<listener>` | 注册监听器类 |
| `<context-param>` | 定义全局上下文参数 |
使用@WebServlet注解定义Servlet
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
resp.setContentType("text/html");
try (PrintWriter out = resp.getWriter()) {
out.println("<h1>Hello, Servlet!</h1>");
} catch (IOException e) {
e.printStackTrace();
}
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


