• 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...");
    	}
    
    }
    
    
  • 相关阅读:
    将log4Net记录的日志导入数据库操作指南
    算法40 leetcode 155.最小栈
    c++求以3为底的对数 遇到243 怎么也通不过
    算法36 动规初探&&斐波那契&&尾递归
    算法38 5. 最长回文子串
    算法39 leetcode22. 括号生成
    算法34 堆排序heapsort
    算法37 动规求数组和
    算法35 力扣twosum
    c++ vector size()18446744073709551615 bug
  • 原文地址:https://www.cnblogs.com/prjruckyone/p/12551806.html
Copyright © 2020-2023  润新知