一文带你了解什么是servlet!

JavaWeb——Servlet(全网最详细教程) JavaWeb技术之Servlet 阅读详情

介绍

Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应,是基于 Java 技术的 web 组件,该组件由容器托管,用于生成动态内容。他是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。

servlet说实在点就是个接口,浏览器发送请求给Tomcat(服务器),若是这个请求正好对应了servlet实现类的请求路径,Tomcat就会使用它来响应浏览器,这也就是request(请求)、response(响应)了。

java

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}

servlet有5个方法

执行流程

  1. 浏览器发出 http://localhost:8080/web-demo/demo1 请求,从请求中可以解析出三部分内容,分别是localhost:8080、web-demo、demo1:

    • 根据localhost:8080可以找到要访问的Tomcat Web服务器

    • 根据web-demo可以找到部署在Tomcat服务器上的web-demo项目

    • 根据demo1可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配

  2. 找到ServletDemo1这个类后,Tomcat Web服务器就会为ServletDemo1这个类创建一个对象,然后调用对象中的service方法

  3. ServletDemo1实现了Servlet接口,所以类中必然会重写service方法供Tomcat Web服务器进行调用

  4. service方法中有ServletRequest和ServletResponse两个参数,ServletRequest封装的是请求数据,ServletResponse封装的是响应数据。

那么Servlet由谁创建?

Servlet方法由谁调用? Servlet由web服务器创建,Servlet方法由web服务器调用。

服务器怎么知道Servlet中一定有service方法?

因为自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有service方法。这就是接口的规范

生命周期

生命周期就是指对象在被创建到销毁的整个过程

Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:

  1. 加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象。

    • 默认情况,Servlet会在第一次访问被容器创建,但是如果创建Servlet比较耗时的话,那么第一个访问的人等待的时间就比较长,用户的体验就比较差,可以修改loadOnStartup配置 -> @WebServlet(urlPatterns = "/demo1",loadOnStartup = 1)

      • loadOnstartup的取值有两类情况:

      • 负整数:第一次访问时创建Servlet对象

      • 0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高

  2. 初始化:在Servlet实例化之后,容器将调用Servlet的 init() 方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次。

  3. 请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的 service() 方法对请求进行处理。 service方法在Servlet被访问的时候调用,每访问1次就调用1次

  4. 服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的 destroy() 方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。 destroy() 方法只调用一次。

HttpServlet

前端发送GET和POST请求的时候,参数的位置不一致,GET请求参数在请求行中,POST请求参数在请求体中,为了能处理不同的请求方式,得在service方法中进行判断,然后写不同的业务处理。但是每个Servlet类中都将有相似的代码,因此就有了HttpServlet,来简化代码开发。

编写Servlet类的时候,只需要继承MyHttpServlet,重写父类中的doGet和doPost方法,就可以用来处理GET和POST请求的业务逻辑。

和MVC的对比

Spring MVC 和 Servlet 都是 Java Web 开发中常用的技术,它们之间的区别在于:

  1. Spring MVC 是基于 Servlet 的框架,它提供了一种 MVC(Model-View-Controller)的架构模式来帮助组织代码,简化开发。而 Servlet 则是 Java Web 应用程序的基础,它允许 Java 开发人员处理 HTTP 请求和响应。
  2. Spring MVC 框架提供了更加强大、灵活的控制器(Controller)层,支持不同的数据绑定、校验等功能,同时也提供了 AOP、IOC 等企业级特性。而 Servlet 只提供了基本的请求处理和转发功能。
  3. Spring MVC 对前端技术支持更加友好,如内置 JSP 标签库、支持 RESTful 架构等。

Spring MVC 相比于 Servlet 的优势:

  1. MVC模式:Spring MVC 提供了基于 MVC 模式的架构,可以将应用程序分为模型(Model)、视图(View)和控制器(Controller),使代码更容易组织、维护和测试。而 Servlet 则需要手动处理请求和响应,代码比较混乱。
  2. 易于扩展:Spring MVC 借助 Spring Framework 强大的 DI(依赖注入)和 AOP(面向切面编程)特性,更容易进行扩展和定制。开发人员可以轻松地添加新的拦截器(Interceptors)、过滤器(filters)等功能。而在Servlet中,需要手动开发这些功能,增加了开发难度和工作量。
  3. 更好的灵活性:Spring MVC 支持多种视图技术,包括 JSP、FreeMarker、Velocity、Thymeleaf 等。并且支持 RESTful 架构, 可以方便地创建 REST 风格的应用程序。而Servlet通常使用JSP或者HTML进行前端展示。
  4. 更好的测试性:Spring MVC 代码更容易进行单元测试,开发人员可以通过模拟请求来测试控制器的行为。而在 Servlet 中,由于代码比较混乱,测试方法也会比较复杂。
  5. 更好的错误处理机制:Spring MVC 提供了更好的异常处理机制,可以集中处理应用程序中出现的各种异常,而Servlet则需要手动捕捉和处理异常。
Servlet详解(超详细) (保姆级教学)本文从Servlet的概念,使用,生命周期三个大点来详细理解Servlet。其内还含有需要注意的点,相关经验,小tips等等。 阅读详情

相关推荐

Servlet的详细教程

文章目录一、Servlet的简介二、Servlet的入门案例三、创建Servlet的三种方式3.1实现Servlet接口的方式3.2继承GenericServlet抽象类的方式3.3继承HttpServlet的方式四、Servlet注解和配置文件的写法4.1配置文件的写法4.2注解的写法五、Servlet的生命周期六、Servlet获取前端请求的参数七、通过前端发送数据到servlet,然后存入到数据库八、中文乱码的解决方案九、重定向和转发【重要】9.1重定向9.2转发十、URL匹配规则十一、Servlet

小yu别错过的博客 5394

servlet详解

servlet详解 1、什么是servlet: servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。servlet实例是由web服务器(tomcat)创建的,它是单例多线程的。单例是指servlet的实例只有一个,多线...

张康的博客 2万+

【Servlet篇】一文带你读懂Request对象

最近一直在更新 Servlet 的文章,在前面一篇中说到 sevice() 方法由 Servlet 容器调用执行,而该方法中有两个重要的参数,分别是 Request 对象和 Response 对象,下面我们就来探讨这两个参数究竟有何作用。

zhangxia_的博客 3462

都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet

不得不说,Servlet 确实是一门古老的技术了,现在很少有公司直接使用 Servlet 来写项目了,大家都在用 SpringMVC-Spring-MyBatis / SpringBoot 做开发了,那么都2023年了,Servlet 还需要学习吗?真的有必要吗?本文将对 Servlet 做深入的探讨。

zhangxia_的博客 2万+

深入解析JESD204B Periodic SYSREF在多ADC/DAC系统中的同步优化策略

本文深入探讨了JESD204B Periodic SYSREF在多ADC/DAC系统中的同步优化策略,针对雷达阵列和宽带通信系统中的同步精度问题,详细解析了硬件实现细节、参数配置实战经验及系统级优化方法。通过案例分析和技术要点,帮助工程师解决由温度漂移和时钟抖动引起的同步挑战,提升系统性能。

weixin_29267307的博客 137

2026中银杯区块链赛项备赛全攻略:从任务书拆解到高分技巧

区块链技术正从概念走向工程化落地,其核心价值在于通过分布式账本、智能合约与共识机制,构建可信、透明、可追溯的业务协作网络。在供应链溯源、存证、资产流转等场景中,区块链应用已从单一技术验证转向完整业务系统交付,这对开发者的综合能力提出了更高要求。对于职业院校技能大赛而言,选手不仅需要掌握联盟链底层搭建、Solidity合约开发、前后端应用联调等技术,还需具备规范交付与团队协作的工程素养。围绕2026年中银杯湖北省职业院校技能大赛区块链技术应用赛项,本文深入拆解任务书模块与评分逻辑,梳理底层链搭建、智能合约开发

weixin_27960253的博客 333

一文带你了解什么是servlet

Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应,是基于 Java 技术的 web 组件,该组件由容器托管,用于生成动态内容。他是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。servlet说实在点就是个接口,浏览器发送请求给Tomcat(服务器),若是这个请求正好对应了servlet实现类的请求路径,Tomcat就会使用它来响应浏览器,这也就是request(请求)、response(响应)了。java。

weixin_60669486的博客 1112

Cesium WebGL性能调优实战:从卡顿根源到流畅渲染

本文深入探讨Cesium WebGL性能调优的实战技巧,从硬件配置、框架适配到3D Tiles加载策略,全面解决卡顿问题。通过强制启用独立显卡、优化浏览器设置、避免Vue内存陷阱等实用方法,显著提升3D地图应用的流畅度。文章还分享了高级调试工具和实战避坑经验,帮助开发者实现高效渲染。

weixin_27215337的博客 421

【Java】一文了解 Servlet

狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。

Data · Model · Agent · Repeat 1017

matlab内读取文件目录时斜杠和反斜杠的使用

@matlab内读取文件目录时斜杠和反斜杠的使用TOC matlab内读取文件目录时,斜杠和反斜杠的使用 最近被斜杠和反斜杠弄晕了,于是总结了一下,在此和大家分享一下。 代码 clear; clc; close all; I1= imread('..\zs1.jpg'); %和代码文件夹同目录的图片 (纯反斜杠) I2= imread('../zs2/zs2.j...

weixin_44456694的博客 6574

海康视觉平台VisionMaster使用学习笔记(1)

双击图像源设置图像源的属性,像素格式分为Mono8和RDB24分别对应导入的图像是彩色还是黑白。打开相机驱动软件MVS,对连接的相机进行属性上的配置,先对相机的IP进行对应的设置。将自动触发的使能打开,保存配置好的相机属性,默认保存到用户集1中。点击MVS软件中的触发按钮,查看相机是否进行正常的触发拍照。打开VM软件添加一个图像源,选择图像源选项拖出图像源。回到VM软件中将选择相机选项选择到配置好参数的相机。取图方式也可以调整为相机取图,将图像源改为相机。双击相机进行连接后对相机的属性进行配置。

A567852的博客 1万+

一文了解Servlet

Servlet是用于开发基于Java的Web应用程序的Java类。Servlet在Web服务器上运行,接收来自客户端(通常是Web浏览器)的请求并生成响应。 Servlet提供了一种动态生成网页内容的方法。它可以接收HTTP请求,读取请求参数,与数据库进行交互,生成动态内容,并返回响应给客户端。 Servlet通常被部署在Java Web容器(如Apache Tomcat)中。Web容器负责管理Servlet的生命周期、处理并发请求以及与用户代理(如浏览器)通信。

小林的博客 1265

Android11 关于三方应用获取su权限

SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,如果不禁用SELinux,完成下面的修改可能会导致设备进入Recovery界面!adb shell getenforce 为Permissive(宽容模式),查看报错日志,发现是客户apk想使用su命令提权,但是没有权限!对于保护系统资源和防止未经授权访问非常有帮助!系统这边做修改,让su权限下放到三方应用.客户的apk运行报错。

sinat_37429535的博客 1901

都2024年了,Servlet还有必要学习吗?一文带你快速了解Servlet_servlet用得多吗(2)

Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。Servlet 提供了动态 Web 资源开发技术,一种可以将网页数据提交到 Java 代码,并且将 Java 程序的数据返回给网页的技术,使用 Servlet 技术实现了不同用户登录之后在页面上动态的显示不同内容等的功能。

2401_84186067的博客 1509

MTK Meta ISP 工具使用技巧与参数读取路径全解析

在联发科(MediaTek, MTK)平台上进行相机图像调试时,Meta ISP 工具是连接 PC 与设备进行参数调整、寄存器读取和图像输出的重要工具。本文以实战角度出发,系统梳理 Meta ISP 的使用流程、关键模块功能、典型调试技巧与参数读取路径,结合最新版平台(如MTK Genio/Dimensity 系列)架构,帮助工程师掌握联发科图像调优的核心流程。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1148

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

都2024年了,Servlet还有必要学习吗?一文带你快速了解Servlet_servlet用得多吗(3)

Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。Servlet 提供了动态 Web 资源开发技术,一种可以将网页数据提交到 Java 代码,并且将 Java 程序的数据返回给网页的技术,使用 Servlet 技术实现了不同用户登录之后在页面上动态的显示不同内容等的功能。

2401_84186067的博客 1372

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

都2024年了,Servlet还有必要学习吗?一文带你快速了解Servlet_servlet用得多吗

不得不说,Servlet 确实是一门古老的技术,现在很少有公司直接使用 Servlet 来写项目了,大家都在用 SpringMVC-Spring-MyBatis / SpringBoot 做开发了,那么 Servlet 还值得学习吗?一个中肯的建议是不要跳过 Servlet 去学习框架,学习完 Servlet ,你将有更好的基础去面对后面的框架的知识,而绝非浪费时间和精力。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84166896的博客 871

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Servlet知识盘点--一文带你了解servlet

Servlet知识盘点 当前端需要访问到后端的一些接口时,需要指定一个类来负责与前后端建立通信。这个类便是servlet类。它是⽤服务器端程序,其主要功能在于交互式地浏览和修改数据,⽣成动态Web内容。 三个主体: 客户端 servlet容器 服务端 1 Servlet配置 1.1 旧版本 需要在web.xml中指明url , 类名, 类路径等信息 <servlet> <servlet-name>⾃定义名称</servlet-name> <ser

weixin_43763377的博客 230

一文带你搞懂Spring MVC和servlet(面试必备)

一、Spring MVC与Jsp/Servlet比较1、传统的 Jsp/Servlet 技术体系弊端2、Spring Web MVC 特点3、Spring MVC工作流程二、idea创建servlet项目1、搭建过程2、servlet的工作流程3、servlet的生命周期三、idea创建Spring MVC项目1、搭建过程2、Spring MVC接口解释接口解释DispatcherServlet...

qq_36908783的博客 9318
上一篇: 《深入理解Mybatis原理》Mybatis中的缓存实现原理!
下一篇: 【Redis】Redis中常见的数据类型及其应用场景!
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值