初始Servlet

作者: 马佳乐 | 来源:发表于2022-04-13 11:01 被阅读0次

Servlet是什么

Servlet是Server与Applet 的缩写,是服务端小程序的意思。使用Java 语言编写的服务器端程序,可以像生成动态的WEB页,Servlet主要运行在服务器端,并由服务器调用执行,是一种按照Servlet标准来开发的类。是SUN公司提供的一门用于开发动态Web资源的技术。(言外之意:要实现web开发,需要实现 Servlet标准)

Servlet本质上也是Java类,但要遵循Servlet规范进行编写,没有main()方法,它的创建、使用、销毁都由Servlet容器进行管理(如Tomcat)。(言外之意:写自己的类,不用写main方法,别人自动调用)

Servlet是和HTTP协议是紧密联系的,其可以处理HTTP协议相关的所有内容。这也是Servlet应用广泛的原因之一。

提供了Servlet功能的服务器,叫做Servlet容器,其常见容器有很多,如Tomcat, Jetty, WebLogic Server,WebSphere,JBoss等等。

实现Servlet规范

实现Servlet 规范,即继承 HttpSejMet类,并到如响应的包,该类中已经完成了通信的规则,我们只需要进行业务的实现即可。

package com.xxx.servlet;
import javax.servlet.http.HttpServlet;
public class Servlet01 extends HttpServlet {

}

重写service方法

满足Servlet规范只是让我们的类能够满足接收请求的要求,接收到请求后需要对请求进行分析,以及进行业务逻辑处理,计算出结果,则需要添加代码,在规范中有一个叫做service的方法,专门用来做请求处理的操作,业务代码则可以写在该方法中。

package com.student1.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("");       
        }

设置注解

在完成好了一切代码的编写后,还需要向服务器说明,特定请求对应特定资源。
开发servlet项目,使用@WebServlet将一个继承于javax.servlet.http.HttpServlet 的类定义为Servlet组件。在Servlet3.0中,可以使用@WebServlet注解将一个继承于javax.servlet.http.HttpServlet的类标注为可以处理用户请求的Servlet。

package com.xxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@webServlet("/ser01")
public class Servlet01 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("");       
        }
}

注解写法:

常用:

@webServlet("/ser01")

给注解起名字:

@webServlet(name="Servlet01",value="/ser01")

可以有多个value

@webServlet(name="Servlet01",value={"/ser01","/ser02"})

value和urlPatterns效果一样

@webServlet(name="Servlet01",urlPatterns={"/ser01","/ser02"})

注意"/"不能忘

Servlet的生命周期

Servlet没有main()方法,不能独立运行,它的运行完全由Servlet引擎来控制和调度。所谓生命周期,指的是servlet容器何时创建servlet实例、何时调用其方法进行请求的处理、何时并销毁其实例的整个过程。

实例和初始化时机

当请求到达容器时,容器查找该servlet对象是否存在,如果不存在,则会创建实例并进行初始化。

init方法,在Servlet实例创建之后执行(证明该Servlet有实例创建了)

    public void init() throws ServletException {
        System.out.println("init()方法被调用");
    }

就绪/调用/服务阶段

有请求到达容器,容器调用servlet对象的service()方法,处理请求的方法在整个生命周期中可以被多次调用;HttpServlet的service()方法,会依据请求方式来调用doGet()或者doPost()方法。但是,这两个do方法默认情况下,会抛出异常,需要子类去override。

service方法,每次有请求到达某个Servlet方法时执行,用来处理请求(证明该Servlet进行服务了)

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service()方法被调用");
    }

销毁时机

当容器关闭时(应用程序停止时),会将程序中的Servlet 实例进行销毁。
上述的生命周期可以通过Servlet 中的生命周期方法来观察。在Servlet中有三个生命周期方法,不由用户手动调用,而是在特定的时机有容器自动调用,观察这三个生命周期方法即可观察到Servlet 的生命周期。

destroy方法,Servlet'实例销毁时执行(证明该Servlet的实例被销毁了)

    public void destroy() {
        System.out.println("destroy()方法被调用");
    }

Servlet的生命周期,简单的概括这就分为四步:servlet类加载-->实例化-->服务-->销毁。

相关文章

  • Servlet

    Servlet介绍 Servlet开发步骤 创建Servlet 配置Servlet 配置Servlet中设置初始化...

  • 初始Servlet

    Servlet是什么 Servlet是Server与Applet 的缩写,是服务端小程序的意思。使用Java 语言...

  • servlet学习(二):servlet的生命周期

    Servlet 生命周期指的是,Servlet 对象的创建、Servlet 对象的初始化、Servlet 对象服 ...

  • 52--Servlet知识点回顾以及SpringMVC分析入口

    1.Servlet 生命周期 Servlet 通过调用 init () 方法进行初始化。 Servlet 调用 s...

  • JSP基础(二)

    1.Servlet生命周期创建servlet实例当servlet实例化后,将调用这个对象的init()方法进行初始...

  • Servlet-07(Servlet的生命周期)

    (1)什么是Servlet的生命周期? Servlet容器如何创建Servlet对象、如何对其进行初始化、如何调用...

  • Servlet进阶与web.xml详解

    在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet...

  • Servlet入门(三)

    一、区别 1、定义 ( 1)ServletConfig:Servlet的配置对象,容器在初始化Servlet时通...

  • Servlet

    开发servlet的三种方式 1.实现servlet接口 init初始化,就是把servlet装载到内存中,只会被...

  • 解释下Servlet的生命周期。

    对每一个客户端的请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet的初始化。...

网友评论

    本文标题:初始Servlet

    本文链接:https://www.haomeiwen.com/subject/ictasrtx.html