Servlet生命周期详解以及Servlet_3.0注解配置
Servlet生命周期详解
1、被创建:执行init方法,只执行一次
Servlet什么时候被创建?
默认情况下,第一次被访问时,Servlet被创建
在Servlet标签下可以配置执行Servlet的创建时机。
1、第一次被访问时创建
<load-on-startup>的值为负数
2、在服务器启动时创建
<load-on-startup>的值为0或正整数
<servlet> <servlet-name>demo2</servlet-name> <servlet-class>com.tomcat1.web.servlet.ServletDemo2</servlet-class> <!--指定servlet的创建时机 1、第一次被访问时创建 <load-on-startup>的值为负数 2、在服务器启动时创建 <load-on-startup>的值为0或正整数 --> <load-on-startup></load-on-startup> </servlet>
Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
多个用户同时访问时,可能存在线程安全问题
解决:
尽量不要再Servlet中定义成员变量,即使定义了成员变量也不要对其修改值
2、提供服务:执行service方法,执行多次
每次访问Servlet时,Service方法都会被调用一次
3、被销毁:执行destroy方法,只执行一次
Servlet被销毁是执行。服务器关闭时,Servlet被销毁
只有服务器正常关闭时,才会执行destroy方法
Servlet_3.0注解配置
Servlet3.0:
好处:
支持注解配置,可以不需要web.xml了。
步骤:
1、创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
2、定义一个类,实现Servlet接口
3、重写方法
4、在类行是使用@WebServlet注解,进行配置
@WebServlet("资源路径")
package com.tomcat1.web.servlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet("/demo") public class ServletDemo implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("WebServlet注解"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
浏览器:
控制台:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix