说明:本文章主要说明Servlet的生命周期。
Servlet的加载是在启动web容器后,去寻找部署文件也就是web.xml文件,读取部署文件中servlet标签,包括初始化参数(init-param)中配置。
1.servlet的init()方法在一个生命周期中只会执行一次,其中有参的init方法调用了无参的init方法,如果要重写init方法只需要重写无参的方法就行了,调用service前必须初始化完成。
2.每次请求来的时候都会调用service方法,在servlet中service只是判断请求的方法(一般不用重写),而去重写doget方法或dopost方法
3.destroy方法是销毁servlet实例用的,意味着servlet的生命周期结束!
总结:web启动 执行init()方法且只执行一次,每次请求都会执行service方法,项目结束执行destroy方法。
案例:
先在web.xml中配置
<web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
创建HelloWorld类并继承HttpServlet
// 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); // 实际的逻辑是在这里 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // 什么也不做 } }输入访问 http://localhost:8080/hello就可以了。