荐 Servlet的生命周期与详解
程序员文章站
2022-09-14 08:38:33
前言周期说明initgetServletConfigservicedestoryinit方法的执行时期周期总结initservicedestory前言Servlet例子与注解配置周期创建web项目,写一个测试ServletDemo1类package com.lingaolu.servlet;import javax.servlet.*;import javax.servlet.annotati......
前言
周期
创建web项目,写一个测试ServletDemo1类
package com.lingaolu.servlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; /** * @author 林高禄 * @create 2020-07-06-10:46 */ @WebServlet("/demo1") public class ServletDemo1 implements Servlet { /** * 初始化方法,在Servlet被创建是执行,只会执行一次 * @param servletConfig * @throws ServletException */ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init......"); } @Override public ServletConfig getServletConfig() { return null; } /** * 提供服务方法,每一次Servlet被访问是执行,执行多次 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service......"); } @Override public String getServletInfo() { return null; } /** * 摧毁方法,在服务器正常关闭是,执行,执行一次 */ @Override public void destroy() { System.out.println("destroy......"); } }
运行访
一直刷新访问,控制台输出
可见init方法只执行一次,而service方法每次访问都执行
我们关闭项目
控制台输出
destory方法也执行了一次
说明
init
初始化方法,在Servlet被创建是执行,只会执行一次
getServletConfig
获取配置对象,不常用
service
提供服务方法,每一次Servlet被访问是执行,执行多次
destory
摧毁方法,在服务器正常关闭是,执行,执行一次
init方法的执行时期
我们运行项目,没有有init......输出,说明ServletDemo1还没有被创建,init方法还没有执行,直到我们第一次访问demo1,才执行init放发
那么 ServletDemo1能不能在项目启动的时候被创建呢,加载一下资源,可以,需要配置loadOnStartup
loadOnStartup为负数时,是访问才创建,loadOnStartup大于等于0时,是启动项目就创建
默认为-1,访问才创建
我们启动下项目
ServletDeme1被创建了,也执行了init方法
周期总结
init
- Servlet创建时执行,
- 可配置loadOnStartup的值来设置执行时期,loadOnStartup为负数时,是访问才创建,loadOnStartup大于等于0时,是启动项目就创建
- 只执行一次,可用于相关资源的初始化
- 因为只执行一次,说明只有一个实例,是单例的,在多用户访问时会存在线程安全问题
- 线程安全问题解决:不能加锁,会影响性能,所以尽量不要在servlet中定义成员变量,要定义局部变量,这样每个用户进来都是一个新的变量,如果要定义成员变量,也是不能修改这个成员变量。
service
提供服务方法,每一次Servlet被访问是执行,执行多次
destory
摧毁方法,在服务器正常关闭是,执行,执行一次,用于释放资源
本文地址:https://blog.csdn.net/lgl782519197/article/details/107151955
上一篇: python实现判断一个整数是否是回文数
下一篇: Linux 变量详解
推荐阅读
-
详解Nginx服务器中map模块的配置与使用
-
详解Dockerfile 中的 COPY 与 ADD 命令
-
JavaScript遍历数组的三种方法map、forEach与filter实例详解
-
C#中的尾递归与Continuation详解
-
Linux NFS服务器的安装与配置方法(图文详解)
-
对sklearn的使用之数据集的拆分与训练详解(python3.6)
-
php 去除html标记--strip_tags与htmlspecialchars的区别详解
-
Spring实战之XML与JavaConfig的混合配置详解
-
基于android样式与主题(style&theme)的详解
-
android中ProgressDialog与ProgressBar的使用详解