servlet的生命周期
作者:互联网
这里写目录标题
什么是servlet?
servlet是一种服务应用程序,作为来自web浏览器和其他http服务器上的数据库或者应用程序间的中间层
可以用来获取网页表单输入,呈现数据库或者其他源的记录
servlet的生命周期
一个servlet的生命周期由 实例化、初始化、提供服务、销毁、被回收这5个步骤组成
实例化
当用户输入一个网络地址,这个地址的servlet被调用的时候,这个servlet就会被实例化
例如下面的程序LoginServlet:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public LoginServlet(){
System.out.println("LoginServlet 构造方法 被调用");
}
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//略
}
}
同时,无论访问了多少次LoginServlet,LoginServlet的构造方法只会调用一次,所以servlet是单例的
初始化
LoginServlet继承了HttpServlet,同时也就继承了初始化方法init(ServletConfig)
init(ServletConfig)方法也是单例的
提供服务
然后就是执行service()方法,通过浏览器传递的信息判断使用doGet()还是doPost()方法
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public LoginServlet() {
System.out.println("LoginServlet 构造方法 被调用");
}
public void init(ServletConfig config) {
System.out.println("init(ServletConfig)");
}
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
String html = null;
if ("admin".equals(name) && "123".equals(password))
html = "<div style='color:green'>success</div>";
else
html = "<div style='color:red'>fail</div>";
PrintWriter pw = response.getWriter();
pw.println(html);
}
}
销毁
然后进行销毁destory()
下列两种情况下,会调用destroy()
-
该Servlet所在的web应用重新启动
在server.xml中配置该web应用的时候用到了
<Context path="/" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" />
如果把 reloadable=“false” 改为reloadable=“true” 就表示有任何类发生的更新,web应用会自动重启
当web应用自动重启的时候,destroy()方法就会被调用 -
当关闭tomcat的时候destroy()方法会被调用
被回收
标签:web,生命周期,http,import,servlet,javax,LoginServlet 来源: https://blog.csdn.net/lolhahahaha/article/details/118853257