1 Servlet生命周期
1.1 servle实现
init,destroy方法只调用一次,service方法每次访问时被调用。
@WebServlet("/demo")
public class TestServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("对Servlet完成初始化操作:"+servletConfig);
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("执行Servlet的业务方法");
}
@Override
public String getServletInfo() {
System.out.println("getServletInfo().");
return null;
}
@Override
public void destroy() {
System.out.println("释放Servlet对象");
}
}
对Servlet完成初始化操作:org.apache.catalina.core.StandardWrapperFacade@50800b36
执行Servlet的业务方法
............
18-May-2020 17:09:45.632 信息 [main] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
...........
释放Servlet对象
1.2 servlet对象创建
service方法是一个非静态方法,意味着调用该方法必须需要一个对象,这个对象由tomcat容器通过反射机制来创建,这也是我们为什么要在web.xml配置全类名的原因。
反射创建对象一般是调用无参构造函数,我们在TestServlet中添加这样一个函数。
@WebServlet("/demo")
public class TestServlet implements Servlet {
//........其他函数
public TestServlet(){
System.out.println("调用了TestServlet"