Servlet如何在启动web的时候就自动初始化运行init方法创建servlet对象

版权声明:《==study hard and make progress every day==》 https://blog.csdn.net/qq_38225558/article/details/82959798

Servlet的生命周期:构造器-->init方法--> 循环[ service方法 ]-->destory方法(正常关闭Tomcat)

这种方式只有在访问的时候servlet才创建,那么如何在启动web的时候,就自动初始化,运行init方法,创建servlet对象呢??

方式一:web.xml中添加 <load-on-startup>1</load-on-startup>       ( 注意:中间的数据,最小启动越早 )

方式二:如果是使用@WebServlet注解,则直接在注解中加上loadOnStartup=1   【注意:@WebServlet注解配置Servlet需修改web.xml文件 metadata-complete="false"  】

              ex:@WebServlet(value={"/default"},loadOnStartup=1)   


ex方式1:web.xml中添加 <load-on-startup>1</load-on-startup> 

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0" metadata-complete="true">

	<servlet>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>com.zhengqing._01Helloservlet.HelloServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/HelloServlet</url-pattern>
	</servlet-mapping> 

</web-app>
public class HelloServlet extends HttpServlet {
	@Override
	public void init() throws ServletException {
		System.out.println("===初始化===");
	}
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		System.out.println("===Servlet程序===");
	}
}

ex方式2:如果是使用@WebServlet注解,则直接在注解中加上loadOnStartup=1

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0" metadata-complete="false">

</web-app>
@WebServlet(value={"/HelloServlet"},loadOnStartup=1)
public class HelloServlet extends HttpServlet {
	@Override
	public void init() throws ServletException {
		System.out.println("===初始化===");
	}
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		System.out.println("===Servlet程序===");
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38225558/article/details/82959798