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。