servlet生命周期

生命周期过程介绍

serlvet 是单实例【产生一次,销毁一次】多线程

默认第一次访问的时候,服务器创建 servlet,并调用 init 主方法实现初始化操作,只要请求来的时候,服务器就会自动创建一个线程,去调用 service 方法执行业务逻辑代码,而当 serlvet 被移除的时候服务器正常关闭的时候,服务器调用 servlet 中的 destroy 方法实现销毁操作

生命周期

  • void init(ServletConfig config):初始化
    • 初始化方法
    • 执行者:服务器(tomcat)
    • 执行次数:一次
    • 执行时机:默认第一次访问的时候
  • void service(ServletRequest request,ServletResponse response):服务,处理业务逻辑代码编写
    • 服务
    • 执行者:服务器
    • 执行次数:请求一次执行一次
    • 执行时机:请求来的时候
  • void destroy():销毁
    • 销毁
    • 执行者:服务器
    • 执行次数:只执行一次
    • 执行时机:当servlet被移除的时候或者服务器正常关闭的时候

index.html

html 复制代码
	<a href="/a_web/life">3_生命周期</a>

LifeServlet.java

java 复制代码
public class LifeServlet implements Servlet {
    /**
     * 初始化
     * 执行者:服务器
     * 执行次数:一次
     * 执行时机:默认第一次访问的时候
     */
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init:出生了");
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /**
     * 业务逻辑处理
     * 执行者:服务器
     * 执行次数:请求一次执行一次
     * 执行时机:当请求过来的时候
     */
    public void service(ServletRequest req, ServletResponse res) throws
            ServletException, IOException {
        System.out.println("service:过程");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    /**
     * 销毁
     * 执行者:服务器
     * 执行次数:一次
     * 执行时机:当服务器正常关闭【tomcat点stop时】或是servlet被移除时
     */
    public void destroy() {
        System.out.println("destroy:销毁");
    }
}

web.xml

xml 复制代码
    <servlet>
        <servlet-name>LifeServlet</servlet-name>
        <servlet-class>com.LifeServlet</servlet-class>
        <!-- 值为0或者大于0时,表示容器在应用启动时就加载这个servlet -->
        <load-on-startup>3</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>LifeServlet</servlet-name>
        <url-pattern>/life</url-pattern>
    </servlet-mapping>

load-on-startup 说明

如果设置了多个 servlet 的时候,使用 load-on-startup 来指定 servlet 的加载顺序,服务器会根据load-on-startup 的大小依次对 servlet 进行初始化。不过即使我们将 load-on-startup 设置重复也不会出现异常,服务器会自己决定初始化顺序。

主要作用:用来修改 servlet 的初始化时机

写值:正整数(值越大优先级越低)

查看 tocmat 下的 conf 的 web.xml,load-on-startup 默认为 1。

如果访问错误不存在页面,出现 404,响应信息由 tomcat 服务器的 defaultServlet 提供处理提示信息(优先使用我们自已编写方式,如果不能或配置没有,才往上查找 tomcat 进行处理)。

默认访问 index.html 或 jsp,web.xml 帮忙处理有访问列表页,不写也会自动查找 tomcat 里的 web.xml 下的访问列表(及 JspServlet 和 servlet-mapping 匹配 *.jsp 后缀)。

url-pattern

1).完全匹配: /web根项目名称 或/xxx/myservlet (以"/"开始)

2).目录匹配: /xxx/* /* ("/"开始,以"*"结束)

3).后缀名匹配:如: *.jsp 或 .do (以" "开始,以字符结尾)

优先级:

完全匹配>目录匹配>后缀名匹配

当 web 项目配置文件里面如果没有指定配置,会自动去 tomcat 的 web.xml 查找,如果请求 javaweb 的项目处理不了,则 tomcat 默认的 servlet 会进行处理(如 index.html,404 页面等)。

相关推荐
DianSan_ERP7 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
小道仙978 天前
jenkins对接、jenkins-rest
java·servlet·jenkins·jenkins-rest
vx_Biye_Design9 天前
【关注可免费领取源码】云计算及其应用网络教学系统--毕设附源码35183
java·spring·spring cloud·servlet·eclipse·云计算·课程设计
啊哈哈哈哈哈啊哈哈10 天前
Spring MVC 项目结构学习笔记
java·spring boot·spring·servlet·maven
百锦再11 天前
Jenkins 全面精通指南:从入门到脚本大师
运维·后端·python·servlet·django·flask·jenkins
隔壁老王的代码11 天前
Jenkins的流水线详解
运维·servlet·jenkins
衍生星球11 天前
【JSP程序设计】Servlet对象 — page对象
java·开发语言·servlet·jsp·jsp程序设计
二哈喇子!11 天前
Servlet 开发技术
servlet
vx-Biye_Design11 天前
servlet家政公司管理系统-计算机毕业设计源码01438
java·vue.js·spring·servlet·tomcat·maven·mybatis
云和数据.ChenGuang11 天前
jenkins安装需要多少版本的jdk
java·servlet·jenkins