说明:本文章主要说明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>
<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()
{
// 什么也不做
}
}
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就可以了。