zoukankan      html  css  js  c++  java
  • JavaWeb学习(12): servlet 的生命周期(执行流程)

    Servlet 的执行流程:

    加载 和 卸载 : Servlet 容器自动处理。
    
    加载
    初始化: init()      该方法会在 Servlet被加载并实例化的以后 执行
    服务  :service()    ->doGet()  doPost
    销毁  :destroy()    Servlet被系统回收时执行
    卸载
    

    各个阶段的执行次数:

    加载和卸载:Servlet 容器自动处理。
      
    init: 默认第一次访问 Servlet 时会被执行(只执行这一次)。
          可以修改为在启动服务器时就自动执行。
                i.Servlet2.5:  web.xml
    		  <servlet>
    			...
    			 <load-on-startup>1</load-on-startup>
    			</servlet>
    		其中的“1”代表第一个。
    	ii.Servlet3.0
    		@WebServlet( value="/WelcomeServlet" ,loadOnStartup=1  )
    service:(主要是 doget() 方法 和 dopost() 方法)
        doGet(): 主要处理 get 提交方式的请求。
        doPost(): 主要处理 Post 提交方式的请求。
    
        调用几次,执行几次。
    destroy():
        关闭 Tomcat 服务器时,执行一次。
    

    效果展示:

    默认第一次访问时调用 init() 方法:

    修改后服务器启动时自动调用 init() 方法:

    Service 服务调用几次执行几次:

    销毁时自动调用 destroy() 方法:

    代码展示(3.0):

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    		<!-- 超链接默认也是 get 提交方式 -->
    		<a href = "WelcomeServlet">WelcomeServlet</a>
    		
    		<form action="WelcomeServlet" method = "post">
    			<input type = "submit" value = "登录">
    			
    		</form>
    </body>
    </html>
    

    WelcomeServlet.java

    package org.servlet3;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    // loadOnStartup = 1 : 修改为Tomcat服务器启动时自动调用 init() 方法
    @WebServlet(value = "/WelcomeServlet" ,loadOnStartup=1)
    public class WelcomeServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	
    	@Override
    	public void init() throws ServletException {
    		System.out.println("init...");
    	}
    	
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("doGet...");
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("doPost...");
    //		doGet(request, response);
    	}
    	
    	@Override
    	public void destroy() {
    		System.out.println("destroy...");
    	}
    
    }
    
    
  • 相关阅读:
    魔术方法之__call与__callStatic方法
    thinkphp5 实现搜索分页能下一页保留搜索条件
    koa2
    mongodb
    nodejs
    小程序
    Vue学习
    js4
    扎心!来自互联网er的2019年度总结,看完笑着流泪……
    谈谈“奋斗逼!”
  • 原文地址:https://www.cnblogs.com/prjruckyone/p/12551806.html
Copyright © 2011-2022 走看看