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(); } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。