servlet生命周期方法
servlet生命周期方法
java代码
package bai.servlet; import javax.servlet.*; import java.io.IOException; public class ServletDemo03 implements Servlet { /** * 初始化方法 * 在Servlet创建时 执行 只会执行一次 * @param servletConfig * @throws ServletException */ public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init....."); } /** * 获取ServletConfig对象 * ServletConfig:Servlet的配置对象 * @return */ public ServletConfig getServletConfig() { return null; } /** * 提供服务的方法 * 每一次Servlet被访问时 执行 执行多次 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service....."); } /** * 获取Servlet的一些信息 版本 作者等等.. * @return */ public String getServletInfo() { return null; } /** * 销毁方法 * 在服务器正常关闭时 执行 执行一次 */ public void destroy() { System.out.println("destroy....."); } }
运行这三个的方法

1.被创建:执行init方法 只执行一次
- servlet默认情况下 第一次被访问时 Servlet被创建
- 可以在配置执行Servlet的创建时机
- 在<Servlet>标签下配置
xml第一种代码
<servlet> <servlet-name>demo3</servlet-name> <servlet-class>bai.servlet.ServletDemo03</servlet-class> <!--指定Servlet的创建时机 第一次被访问时 创建 <load-on-startup>的值为负数 --> <load-on-startup>-5</load-on-startup> </servlet> <!--映射demo1的配置--> <servlet-mapping> <servlet-name>demo3</servlet-name> <url-pattern>/demo3</url-pattern> </servlet-mapping>
运行结果

xml第二种方式代码
<servlet> <servlet-name>demo3</servlet-name> <servlet-class>bai.servlet.ServletDemo03</servlet-class> <!--指定Servlet的创建时机 在服务器启动时 创建 <load-on-startup>的值为0或正整数 --> <load-on-startup>5</load-on-startup> </servlet> <!--映射demo1的配置--> <servlet-mapping> <servlet-name>demo3</servlet-name> <url-pattern>/demo3</url-pattern> </servlet-mapping>
运行结果

Servlet的init方法 只执行一次 说明一个Servlet在内存中只存在一个对象 Servlet是单例的
- 多个用户同时访问 可能存在线程安全问题
- 解决:尽量不要在Servlet中定义成员变量 即使定义了成员变量 也不要对修改值
2.提供服务:执行Service方法 执行多次
- 每次访问Serclet时 Serclce方法都会被调用一次
3.被销毁:执行destroy方法 只执行一次
- Servlet被销毁时执行 服务器关闭时 Servlet被销毁
- 只有服务器正常关闭时 才会执行destroy方法
- destroy方法在Servlet被销毁之前执行 一般用于释放资源

浙公网安备 33010602011771号