servlet 一篇文章就够了

欢喜 Servlet 发布时间:2025-05-26 14:46:20 阅读数:12470 1
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();
        }
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202505/298.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者