Servlet的生命周期执行流程与参数配置
Servlet的生命周期
大多数资料是这样说:
客户端请求该 Servlet;
加载 Servlet 类到内存;
实例化servlet,并调用init()方法初始化该 Servlet;
service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy());
调用destroy( ),销毁过程;
直接上图解释;
那么问题来了:在Servlet生命周期中,init()、destroy()执行了几次?(执行流程)
直接上图解释:
servlet在web应用运行期间只会在第一次请求时被实例化一次、初始化一次,后面再次请求servlet时只会调用service方法。
在重新发布web应用时,在两次发布切换之间,先会调用destroy()方法,从内存中清理servlet实例。
在实际的开发中不需要复写doGet() 或者 doPost()方法,只需要复写service方法即可
service()方法对于用get方式或者post方式提交的请求多可以处理。所以只需要复写service方法即可。
@WebServlet("/OutputHtmlServlet")
public class OutputHtmlServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println("<script>alert('hello');</script>"); //往页面写文本
}
}
servlet参数配置
servlet的参数配置在web.xml中配置
<servlet>
<servlet-name>OutputHtmlServlet</servlet-name>
<servlet-class>net.neuedu.web919.controller.OutputHtmlServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
load-on-startup 参数用来配置servlet的实例化时将
值为-1:表示请求时才把servlet实例化
值为 0:表示应用部署时就把servlet实例化
值为 1:表示应用部署时就把servlet实例化
数字越大,越先被实例化
默认值是负数(不配置时),即是请求时才把servlet实例化。
上一篇: [组合数]求组合数的几种方法总结
下一篇: 浅谈servlet与jsp的关系