当前位置: 首页 > news >正文

Servlet介绍(详细)

目录

一、Servlet是什么

核心特点

1、平台独立

2、高效性

3、生命周期管理

4、协议无关性

二、Servlet 与 Tomcat的关系

三、Servlet的使用步骤

1、创建Servlet类

2、配置Servlet

方式一:注解(推荐)

方式二:web.xml(传统方式)

3、部署到Tomcat

四、Servlet 工作流程

五、Servlet生命周期 (图示)

六、总结


一、Servlet是什么

Servlet是java平台上的一个核心组件,用于处理HTTP请求并生成动态响应。它是Java EE (现Jakarta EE)规范的一部分,主要用于构建基于HTTP协议的Web应用程序。Servlet 运行在支持Java的Web服务器(如 Tomcat、Jetty 等)中,通过处理客户端请求,执行业务逻辑并返回响应,实现了动态Web内容生成。

核心特点

1、平台独立

        基于Java语言、跨平台。

2、高效性

        多线程处理请求(每个请求分配一个线程,Servlet实例单例复用)。

3、生命周期管理

        有容器(Tomcat)管理初始化、请求处理、销毁。

4、协议无关性

        主要支持HTTP,但也可扩展其他协议。


二、Servlet 与 Tomcat的关系

1、Tomcat是Servlet容器

  •         Tomcat实现了Servlet规范,负责管理Servlet的生命周期(如 init()service()destroy()),同时处理HTTP协议解析,线程池,安全性等底层细节。

2、分工明确

  •         Servlet:编写业务逻辑(如处理表单提交、查询数据库)
  •         Tomcat:处理通络通信(Socket、HTTP请求解析)、线程调度,并将请求转发给对应的Servlet。

3、依赖关系

  •         Servlet代码需要部署到Tomcat中才能运行,Tomcat提供运行环境(类似JVM对Java程序的作用)。

三、Servlet的使用步骤

1、创建Servlet类

继承 HttpServlet 并重写关键方法:

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<h1>Hello, Servlet!</h1>");
    }
}

2、配置Servlet

方式一:注解(推荐)

 使用 @WebServlet 注解,无需 web.xml

@WebServlet(name = "HelloServlet", urlPatterns = {"/hello"})
public class HelloServlet extends HttpServlet { ... }

方式二:web.xml(传统方式)

WEB-INF/web.xml  中添加配置:

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

3、部署到Tomcat

1、将项目打包为WAR文件。(如 myapp.war)

2、将WAR文件放入Tomcat的webapps目录。

3、启动Tomcat,访问 http://localhost:8080/myapp/hello


四、Servlet 工作流程

  1. 客户端发起请求
    浏览器发送 HTTP 请求到 Tomcat(如 GET /myapp/hello)。

  2. Tomcat 接收请求

    • Connector 监听端口(默认 8080),解析 HTTP 请求。

    • 根据 URL 路径匹配 Web 应用(/myapp)和 Servlet(/hello)。

  3. Servlet 生命周期方法调用

    • 初始化:若 Servlet 未加载,调用 init()(仅一次)。

    • 处理请求:创建 HttpServletRequestHttpServletResponse 对象,调用 service() 方法,最终分派到 doGet()doPost()

    • 生成响应:通过 resp.getWriter() 写入 HTML/JSON 等数据。

  4. 返回响应
    Tomcat 将 HttpServletResponse 转换为 HTTP 响应,返回给客户端。

  5. 销毁阶段
    当容器关闭或应用卸载时,调用 destroy() 释放资源。


五、Servlet生命周期 (图示)

启动容器 → Servlet 类加载 → init() → (就绪)
         ↓
        收到请求 → service() → doGet()/doPost()
         ↓
容器关闭 → destroy()

六、总结

  • Servlet 是处理动态请求的核心 Java 组件。

  • Tomcat 作为 Servlet 容器,管理其生命周期并提供运行环境。

  • 实际开发中,通常结合 JSP、Spring MVC 等框架简化 Servlet 直接编码。

相关文章:

  • C# 事件机制详解:定义、订阅、触发与应用实践
  • 大数据学习(78)-spark streaming与flink
  • rust学习笔记16-206.反转链表(递归)
  • 用java代码开发一个安卓app,实现账号注册登录
  • 算法训练篇06--力扣611.有效三角形的个数
  • coze ai assistant Task5
  • 相机光学中一些疑难问题的解释
  • 共注意力机制及创新点深度解析
  • 小程序开发中的用户反馈收集与分析
  • Grid布局示例代码
  • ubuntu20如何升级nginx到最新版本(其它版本大概率也可以)
  • 基于carla的模仿学习(附数据集CORL2017)更新中........
  • 虚拟化加密恢复---惜分飞
  • Flink实时统计单词【入门】
  • MySQL -- 索引
  • IOS接入微信方法
  • 压力测试实战指南:JMeter 5.x深度解析与QPS/TPS性能优化
  • ABC395题解
  • 算法系列——有监督学习——4.支持向量机
  • VNA操作使用学习-01 界面说明
  • 加强战略矿产出口全链条管控工作部署会召开
  • 上海建筑领域绿色发展2025年工作要点发布
  • 欧阳娜娜担任江西吉安文化旅游大使
  • 四姑娘山一游客疑因高反身亡,镇卫生院:送到时已很严重
  • 印度军方否认S-400防空系统被摧毁
  • 被取消总统候选人资格,金文洙:将采取政治法律措施讨回公道