《SpringBoot框架学习三之Servelet的概述及生命周期》

本文用的是idea2019.3.3,maven与tomcat都配置好的情况下完成的这里多提一句,maven是用来管理项目的,可以对项目进行管理和构建,Tomcat就是文中提到的Servlet容器

一,Servlet概述

Servlet是用java编写的运行在服务器的程序。主要用于处理客户端传来的HTTP请求,主要功能在于交互式地动态浏览和生成数据,生成动态的web内容在使用Servlet的时候需要导入javax.servlet的jar包。

Servlet由Servlet容器提供(指Tomcat),Servlet容器是指提供Servlet功能的服务器。

在这里插入图片描述

如图所示,客户端先发出请求,然后Http服务器解析静态的HTML页面,对于Servlet的请求就转交给Servlet容器,Servlet容器根据web.xml文件中的映射关系调用响应的Servlet,然后Servlet将调用的返回给Servlet容器,并通过Http响应传给客户端。

二、如何添加依赖

(1)添加Servlet依赖

俩个都要添加在pom.xml中

<dependency>
    <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>4.0.1</version>
 </dependency>

(2)添加jsp依赖

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
 </dependency>

三、Servlet入门

(1)Servlet的接口

在Servlet技术开发中,最重要是的javax.servelet.Servlet。在Servlet中定义了5个抽象的办法。

在这里插入图片描述

值得一提的是表中的Init(),service(),destroy()可以表示Servlet的生命周期,所以是在特定的时候被调用。

getServletInfo返回的是Servlet的相关信息,getServlet返回的ServletConfig对象包含了Servlet的初始化信息,

(2)实现类

Servlet接口的实现类有俩个,分别为GenericServlet和HttpServlet

平时在开发中用的多为HttpServlet,因为GenericServlet是个抽象类,没有办法实现Http处理请求,HttpServlet是GenericServlet的子类,不仅继承了GenericServlet的所以操作办法还可以为Http请求中的POST和GET提供具体的操作办法。

所以Servlet有三种实现方式:

(1)直接实现

(2)继承GenericServlet

(3)继承HttpServlet

但是直接实现Servlet来编写很不方便,所以需要通过继承来实现

public class hellotest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter a = resp.getWriter();//创建一个输出流PrinterWriter对象,servlet使用输出流来响应
        a.println("hello");
    }
}

运行结果如下:

在这里插入图片描述

三、Servlet的生命周期

在这里插入图片描述

按照功能不同Servlet的生命周期可以分为三个阶段。

(1)初始化阶段

客户端想Servlet容器发出Http请求要求访问Servlet时,Servlet容器首先会解析请求,然后先检查内存中是否有Servlet对象,有就直接调用init()实现Servlet的初始化,没有就创建,记住了init()在整个生命周期内只能调用一次。

(2)运行阶段

这个整个生命周期内最重要的阶段,Servlet容器会为Http请求创建HttpServletRequest对象,会为Http响应创HttpServletResponse对象。然后作为参数传给Service方法。在整个生命周期内对于Servlet的每一次访问请求Servlet容器都会调用一个Service方法,并创建新的HttpServletRequest和HttpServletResponse对象。

也就是Service方法在整个生命周期内会被调用很多次。

(3)销毁阶段

Servlet随着Web应用的销毁而销毁,Servlet容器会先调用destroy方法,与Init()方法一样,destroy()在生命周期中也只被调用一次。

如代码所示:

@WebServlet("/add")
public class tete extends  HttpServlet {
    @Override
    public void init() throws ServletException {
        System.out.println("init");
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello");
    }

    @Override
    public void destroy() {
        System.out.println("destory");
    }
}

如图为输入结果

在这里插入图片描述

当服务被关闭的时候显示结果如下。

在这里插入图片描述

当我们刷新多次浏览器的时候

在这里插入图片描述

会重复多次的输出hello,也就证明了每次都要调用一次Service()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄小胖努力加油中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值