首页 > 编程知识 正文

servlet三个生命周期,servlet生命周期顺序

时间:2023-05-05 23:17:24 阅读:51820 作者:271

文章前言Servelt介绍javawebapplicationwebapplication的基本结构是指Servlet Tomcat介绍关于Tomcat的目录关于Tomcat的安装结构关于Tomcat的安装结构关于servlet larar et (方法doPost )方法destroy )方法的servlet生命周期图和过程说明演示servlet生命周期代码实例

前言J3 -

本文重视的是:

1、什么是Java网络APP

2、网络APP的基本结构

3、什么是servlet

4、servlet生命周期servlet介绍了javawebapplicationjavawebapplication是指一组servlet、HTML、类和其他可绑定资源可以在servlet规范的servlet容器中运行。

Java web APP应用程序可以包含以下两大部分:

1、动态资源:服务器端具有处理能力的资源,常见动态资源:各类、JSP、servlet等

2、静态资源:服务器上没有处理能力的资源。 例如,各种静止文本、HTML、CSS、JavaScript、图像等

3、web.xml文件。 说明整个文本APP应用程序的信息

网络APP的基本结构

servlet servlet是在服务器上运行的Java类。 接收来自客户端的请求并响应客户端。 其流程如下图所示。

servlet容器—为Java APP应用程序提供运行时环境,并管理servlet/JSP的生命周期和有关servlet/JSP的共享数据

Tomcat介绍Tomcat的目录

关于Tomcat的安装配置运行Tomcat需要jre支持,因此运行Tomcat需要确保jre安装成功并正确配置

有关Tomcat安装配置的Server.xml文件存储在: conf目录中。

配置文件适用于整个服务器,配置将影响向此服务器公开的所有项目

可以将servlet生命周期servlet生命周期定义为从创建到破坏的整个过程。 servlet遵循以下步骤:

1、初始化servlet后,调用init ()方法。

2、servlet调用service (方法,处理客户端请求。

3、销毁servlet前调用destroy (方法。

4、最后,servlet由JVM的垃圾回收器进行垃圾回收。

init ) )方法J3 -白起

init方法设计为只调用一次。 第一次创建servlet时调用,之后每次用户请求时不再调用。 因此,它用于一次初始化,就像applet的init方法一样。

虽然servlet是在用户第一次调用与servlet对应的URL时创建的,但也可以指定在服务器首次启动时加载servlet。

当用户调用servlet时,将创建一个servlet实例,为每个用户请求生成一个新线程,并根据需要将其传递给doGet或doPost方法。 init ) )方法可以轻松创建或加载在servlet的整个生命周期中使用的数据。 init方法的定义如下:

公共void init (throwsservletexception ) /初始化代码…) } service )方法J3 -白起

service (方法是执行实际任务的主要方法。 servlet容器(即Web服务器)调用service ()方法来处理客户端(浏览器)的请求,并将格式化的响应写回客户端。

每当服务接收到servlet请求时,服务都会生成新线程并调用该服务。 服务) )方法检查HTTP请求类型(GET、POST、PUT、DELETE等),并根据需要调用doGet、doPost、doPut、doDelete等方法。

service (方法从容器中调用,service方法根据需要调用doGet、doPost、doPut、doDelete等方法。 因此,您只需要重写service (根据客户端的请求类型,doGet ) (或doPost ) ),而无需对方法执行任何操作。 service方法定义如下:

公共语音服务(servletrequestrequest,servlet响应响应) throws ServletException,IOException{} doGet )方法J3 -

GET请求是来自URL的常规请求或来自未指定METHOD的HTML表单的请求(doGet ) )方法处理。 文档

方法的定义如下:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代码} doPost() 方法 J3 - 白起
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。

doPost 方法的定义如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代码} destroy() 方法 J3 - 白起
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:

destroy 方法的定义如下:

public void destroy() { // 终止化代码... } servlet生命周期图解及步骤说明


步骤说明:

1、客户端发送请求
2、如果请求的是一个servlet,那么Tomcat会直接到servlet容器中去查找是否有所请求servlet实例
3、如果有servlet实例,那么就直接调用这个实例进行处理,然后返回结果给客户端
4、找客户端所请求的资源的对应class文件,并加载到JVM中去
5、servlet容器会去调用这个servlet的构造方法
6、创建好servlet的实例后,servlet容器会调用这个实例的init方法,用于初始化servlet
7、servlet容器会调用servlet的service方法
8、默认的service方法(图中写错了),会根据客户端请求的方法不同(get/post)来调用响应的doGet/doPost方法
最后响应消息到客户端

servlet生命周期代码实例演示

代码如下(示例):

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletLife extends HttpServlet{public ServletLife() {System.out.println("构造函数");// TODO Auto-generated constructor stub}@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("service......");super.service(request, response);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doget方法");super.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("dopost方法");super.doPost(req, resp);}@Overridepublic void destroy() {System.out.println("destroy方法");super.destroy();}@Overridepublic void init() throws ServletException {System.out.println("init方法");super.init();}}

第一次在浏览器中采用get方式请求访问输出如下:

第二次在浏览器中采用get方式请求访问输出如下:

可以看出init方法只调用了一次进行初始化,而采用的是get方式请求了两次,所以调用了两service及都get方法,所以还是符合我们的流程结构的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。