From Gossip@caterpillar

JSP/Servlet: JSP 生命週期



JSP會在第一次執行頁面時轉譯為Servlet的.java原始碼,然後再編譯為.class,之後實例化物件並載入JVM中,雖然JSP會轉譯為 Servlet,不過如果您要對JSP撰寫一些初始化的動作,不是重新定義Servlet中對應的init()這樣的方法名稱,而是定義jspInit() 方法,例如:
<%!
    public void jspInit() {
        // .....
    }
%>
 

為了要能夠指定特定的初始參數給特定的JSP網頁,您必須要在web.xml中如下定義,然後使用 config 隱含物件取得初始參數:
<servlet>
    <servlet-name>JSPConfigTest</servlet-name>
    <jsp-file>/config.jsp</jsp-file>
    <init-param>
        <param-name>count</param-name>
        <param-value>100</param-value>
    </init-param>
</servlet>  
 

同樣的,您也可以定義jspDestroy(),就如同Servlet的destroy()方法:
<%!
    public void jspDestroy() {
        // ....
    }
%>
 
JSP最後是轉換為Servlet,Servlet在執行時會執行service()方法,在JSP中您如果重新定義_jspService()方法,在轉譯為Servlet之後就是在重新定義service()方法,之所以在_jspService()方法上有個底線_,表示您不應該去動它,基本上您也不會去重新定義Servlet的service()方法。

為了要更瞭解JSP的生命週期,您必須瞭解 Servlet 生命週期,畢竟,JSP最後就是轉換為Servlet。