Servlet生命周期
Servlet生命周期
在Java中对象的生命周期指一个对象从被创建到被销毁的整个过程。
我们可以将Servlet大致划分为四个阶段
1:加载和实例化,我们的默认情况下,没有自己指定值的话,Servlet在被第一次被访问的时候,会由容器创建Servlet对象。
默认情况,Servlet会在第一次访问被容器创建,但是如果创建Servlet比较耗时的话,那么第一个访问的人等待的时间就比较长,用户的体验就比较差,那么我们能不能把Servlet的创建放到服务器启动的时候来创建,具体如何来配置?
@WebServlet(urlPatterns = “/demo1”,loadOnStartup = 1)
loadOnstartup的取值有两类情况
(1)负整数:第一次访问时创建Servlet对象
(2)0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高
2:初始化,继加载和实例化之后然后Servlet的init()方法会实现初始化对象。初始化完成的工作就是加载配置文件,创建连接等初始化工作。初始化的方法只会执行一次。
3:请求处理,每次请求Servlet都会自动调用service请求进行处理。
4:服务终止,当需要释放内存或者容器关闭时,容器就会调用Servlet实例的==destroy()==方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收
测试用例
package jgd;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo2", loadOnStartup = 1)
public class ServletDemo02 implements Servlet {
public void init(ServletConfig servletConfig) throws ServletException {
// 初始化方法
// 1:调用时机:默认情况下Servlet被第一次访问的时候调用
// 2:调用次数:只会被调用一次
System.out.println("init");
}
public ServletConfig getServletConfig() {
return null;
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//每次Servlet被访问的时候service会自动执行
System.out.println("servlet hello world");
}
public String getServletInfo() {
return null;
}
/**
* 销毁方法
* 2:调用次数:1次
* 1:调用时机:内存或者服务器关闭的时候,Servlet对象会被销毁
*/
public void destroy() {
System.out.println("destory---");
}
}
Servlet方法说明和体系结构
方法说明
在上文中已经说明了三个方法。初始化,服务,以及销毁。
1:初始化方法,只执行一次,默认在Servlet被第一次访问执行。
init(ServletConfig servletConfig)
2:服务方法,每次Servlet被访问的时候会默认访问,主要用于编写处理的访问逻辑.
void service(ServletRequest servletRequest, ServletResponse servletResponse)
3:销毁方法,Servlet被销毁的时候,该方法被调用。在内存释放或者服务器关闭的时候销毁Servlet。需要进行正常的关闭,如果关掉java进程就来不及等到对象被销毁。
destroy()
4:获取Servlet信息,一般的话不怎么用,给它返回空字符串和空就可以
String getServletInfo()
5:获取ServletConfig对象
ServletConfig getServletConfig()
我们研究一下如何获取到这个对象,我们可以这样做。主要是扩大作用范围。看看就明白了。
package jgd;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
/*
Servlet方法说明演示
*/
@WebServlet(urlPatterns = "/demo3", loadOnStartup = 1)
public class ServletDemo02 implements Servlet {
private ServletConfig servletConfig;
public void init(ServletConfig servletConfig) throws ServletException {
// 初始化方法
// 1:调用时机:默认情况下Servlet被第一次访问的时候调用
// 2:调用次数:只会被调用一次
System.out.println("init");
//将servletConfig值赋给了局部变量
this.servletConfig=servletConfig;
}
public ServletConfig getServletConfig() {
return servletConfig;
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//每次Servlet被访问的时候service会自动执行
System.out.println("servlet hello world");
}
public String getServletInfo() {
return null;
}
/**
* 销毁方法
* 2:调用次数:1次
* 1:调用时机:内存或者服务器关闭的时候,Servlet对象会被销毁
*/
public void destroy() {
System.out.println("destory---");
}
}
- 点赞
- 收藏
- 关注作者
评论(0)