1. 程式人生 > 其它 >Servlet_生命週期詳解以及Servlet_3.0註解配置

Servlet_生命週期詳解以及Servlet_3.0註解配置

Servlet_生命週期詳解

1.被建立:執行init方法,只執行一次

  Servlet什麼時候被建立?

    預設情況下,第一次被訪問時,Servlet被建立

    可以配置執行Servlet的建立時機

      在<servlet>標籤下配置  

      1.第一次被訪問時,建立

        <load-on-startup>的值為負數

      2.在伺服器啟動時,建立     

        <load-on-startup>的值為0或正整數

    <!-- 配置Servlet -->
    <servlet
> <servlet-name>demo2</servlet-name> <servlet-class>com.example.web.servlet.ServletDemo2</servlet-class> <!-- 執行Servlet的建立時機 1.第一次被訪問時,建立 <load-on-startup>的值為負數 2.在伺服器啟動時,建立 <load-on-startup>的值為0或正整數
--> <load-on-startup></load-on-startup> </servlet> <!-- 對映 --> <servlet-mapping> <servlet-name>demo2</servlet-name> <url-pattern>/demo2</url-pattern> </servlet-mapping>

Servlet的init方法,只執行一次,說明一個Servlet在記憶體中只存在一個物件,Servlet是單例的

  多個使用者同時訪問時,可能存線上程安全問題

    解決:儘量不要在Servlet中定義成員變數,即使定義了成員變數,也不要對修改值

2.提供服務:執行service方法,每次訪問執行一次

  每次訪問Servlet時,Servlet方法都會被呼叫一次

3.被銷燬:執行destroy方法,執行一次

  Servlet被銷燬是執行。伺服器關閉時,Servlet被銷燬

  只有伺服器正常關閉時,才會執行destroy方法

Servlet_3.0註解配置

好處:

  支援註解配置,可以不需要web.xml了

步驟:

  1.建立JavaEE專案,選擇Servlet的版本3.0以上,可以不建立web.xml

  2.定義一個類,實現Servlet介面

  3.複寫方法

  4.在類上使用@WebServlet註解,進行配置

      @WebServlet("資源路徑")

@WebServlet("/demo")
public class ServletDemo3 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }


    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Servlet3.0來了...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}