首页 > 其他分享 >Servlet的三种创建方式和生命周期

Servlet的三种创建方式和生命周期

时间:2024-05-31 20:30:14浏览次数:22  
标签:生命周期 方式 Servlet 方法 调用 三种 创建 servlet

        Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

        Servlet技术的核心是Servlet接口,定义了Servlet与Servlet容器之间的契约,Servlet容器将Servlet类载入内存,生成Servlet实例并调用它具体的方法,所以它是所有Servlet类必须直接或者间接实现的一个接口。

  • Servlet接口:只负责定义Servlet程序的访问规范;

  • GenericServlet抽象类:实现了Servlet接口,做了很多空实现,并持有一个ServletConfig类的引用,并提供了一些ServletConfig的使用方法;

  • HttpServlet抽象类:实现了service方法,并实现了请求分发处理;

         servlet共有三种创建方式,分别是实现Servlet接口、继承GenericServlet抽象类、继承HttpServlet类。创建servlet的前提必须导入servlet-api的jar包。

        第一种方式:实现Servlet接口。

1.首先创建一个maven的web项目,并导入servlet-api的坐标

 2.在项目中创建一个类并且实现Servlet接口和实现接口中的全部抽象方法

3.找到service方法,在里面添加如下内容,可以通过流的方式在页面上打印Hello Servlet~~~

servletResponse.setContentType("text/html;charset=utf-8");
servletResponse.getWriter().write("Hello Servlet~~~");

 4.找到webapp下的web.xml,在里面编写如下内容

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

5.把项目部署到Tomcat中就可以运行了

 

6.运行结果如下,页面成功打印出了Hello Servlet~~~

 

这就是第一种创建servlet的方式,一定有很多人感觉xml方式来配置起来比较麻烦。我们也可以使用注解的方式来创建,前提是servlet-api的版本必须是3以上即引入的坐标版本号必须在3以上。把原来web.xml中的内容去掉,在类上添加@WebServlet("/hello1"),其中"/hello1"是访问地址。

运行结果如下,注意地址栏已经换成/hello1

  第二种方式:继承GenericServlet抽象类。

1.创建一个类继承GenericServlet并实现service方法

在service方法中添加 下面内容

servletResponse.setContentType("text/html;charset=utf-8");
servletResponse.getWriter().write("GenericServlet抽象类方式创建servlet");

2.运行结果 

说明:这里使用的是注解方式 ,没有使用xml配置的方式。

第三种方式:继承HttpServlet类。 

1.创建一个类继承HttpServlet并重写doGet方法 

 

 2.运行结果 

说明:这里使用的是注解方式 ,没有使用xml配置的方式。

三种方式比较来说最好是继承HttpServlet来创建servlet。第一种方式要实现所有抽象方法,第二种方式虽然比第一种方式简洁了一些,但相比第三种方式还差些意思。第三种方式是不仅对HttpServletRequest和HttpServletResponse进行了增强,还可以根据自己需求来选择用doGet还是doPost或者是doDelete。

servlet生命周期

        Servlet的生命周期就是servlet类对象什么时候创建?什么时候调用对应的方法,什么时候销毁。 自定义对象的生命周期由我们程序员自己手动控制。但是!!!Servlet它不是一个普通的java类。是一个被tomcat服务器调用的。所以Servlet是生命周期是被tomcat服务器去控制的。

  • 构造方法:创建servlet的时候调用。默认情况下,第一次访问servlet的时候,会创建servlet对象。此时会有且只会调用1次构造函数,证明了servlet对象是单实例的。

  • init方法:创建完servlet对象之后调用,也只是会调用1次。

  • service方法:提供服务的方法,接收用户的请求,并处理用户的请求,然后响应用户的请求。每次发送请求,都会调用service方法。调用几次,service方法会执行几次。

  • destroy方法:销毁的方法。销毁servlet对象的时候调用。比如我们停止tomcat服务器或者重新部署tomcat服务器,都会销毁servlet对象,只会调用1次。

 下面演示一下

可以看到构造和初始化方法只执行了一次

 

销毁方法要在关闭tomcat时执行 

标签:生命周期,方式,Servlet,方法,调用,三种,创建,servlet
From: https://blog.csdn.net/m0_65419210/article/details/139305663

相关文章

  • Vue生命周期
    1.beforeCreate初始化界面前:在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。2.created初始化界面后:在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更改数据不会触发updated函数,也就是不会更新视图,SSR可以......
  • 创建和管理一个 CA 及证书的生命周期
    0使用openssl或者gmssl,提交markdown格式文档和转化后的pdf1创建一个根CA,包括生成私钥和根证书。分析证书和0015,0034标准的符合情况2为一台服务器生成一个私钥和证书签署请求(CSR)。3使用根CA对服务器的CSR进行签名,生成服务器证书。4吊销该服务器的证书。5提交生成的......
  • Python3 笔记:三种取整方式
    取整方式包括向下取整、四舍五入取整、向上取整等。1、向下取整:向下取整很简单,就是去掉小数部分,直接使用int()函数即可。print(int(1.9))#运行结果:1print(int(1.1)) #运行结果:1print(int(1.5)) #运行结果:12、四舍五入取整:四舍五入取整用到的是round()函数。格式:rou......
  • 【软件测试】软件测试概念 | 测试用例 | BUG | 开发模型 | 测试模型 | 生命周期
    文章目录一、什么是软件测试1.什么是软件测试2.软件测试和调试的区别测试人员需要的素养二、软件测试概念1.需求1.需求的定义2.测试人员眼中的需求2.测试用例1.测试用例概念3.BUG软件错误4、开发模型和测试模型1.软件的生命周期2.开发模型1.瀑布模型2.螺旋模型3.......
  • 基于Servlet+Mysql+Jsp机票管理系统(含论文)
    博主介绍:大家好,本人精通Java、Python、C#、C、C++编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类个性化的开题框架和实际运作方案。我擅长在JavaWeb、SSH......
  • 三种U盘文件系统介绍
    U盘常用的文件系统主要有FAT32,NTFC,exFAT三种。1.FAT32:兼容性:具有较好的兼容性,能被大多数操作系统识别和支持,包括Windows,Mac和Linux等。文件大小限制:不支持大于4GB的单个文件的传输。分区容量限制:FAT32格式U盘的最大分区容量不能超过32GB。适用场景:适合用于储存小文件,如文档,......
  • 计算机网络——三种交换方式
    电路交换(CircuitSwitching)要实现每台主机相互连接是不现实,假如一台主机要和另外一台主机相连,则需要一根连接线,五台就需要十条连接线,而更多则需要的连接线成指数级上升(代词),如果有n个主机则需要的连接线计算公式为:2/n(n-1) 那么怎么实现通过减少连接线还能让主机与主机......
  • C语言转移表的三种方法
    一、一般实现转移表转移表–>计算机的实现首先说明,本次的代码,最主要是用函数的调用,实现计算机的功能。一般实现的计算机的思路和猜数字游戏的思路差不多。思路如下,首先设置入口:intinput=1;,用do-while循环和switch语句,设置菜单,选择进入或者不进入;然后调用函数,计算结......
  • Vue 组件生命周期:探索钩子
    title:Vue组件生命周期:探索钩子date:2024/5/2718:42:38updated:2024/5/2718:42:38categories:前端开发tags:生命周期异步加载通信原理父子通信兄弟通信跨层通信性能优化第1章:介绍与背景1.1什么是Vue组件生命周期?Vue组件生命周期是指Vue组件从创建......
  • 创建和管理一个 CA 及证书的生命周期
    任务详情0使用openssl或者gmssl,提交markdown格式文档和转化后的pdf1创建一个根CA,包括生成私钥和根证书。分析证书和0015,0034标准的符合情况2为一台服务器生成一个私钥和证书签署请求(CSR)。3使用根CA对服务器的CSR进行签名,生成服务器证书。4吊销该服务器的证书。......