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被销毁之前执行 一般用于释放资源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!