很久以來,都知道JSP其實就是Servlet,今天心血來潮,想把里面的具體代碼看一遍,并記錄心得。
一個編譯好的JSP類如下:
public final class index_jsp extends HttpJspBase
implements JspSourceDependent
//上述類為index.jsp被編譯后得到的類
//HttpJspBase是extends HttpServlet的一個類
//JspSourceDependent是一個接口,只聲明了一個方法、、getDependants(),返回當前page所依賴的文件的名稱,文件包括以下幾種
//1) files that are included by page directives
//2) files that are included by include-prelude and include-coda in jsp:config
//3) files that are tag files and referenced
//4) TLDs referenced
其核心方法為:
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{





.
}
該方法重載HttpJspBase中的_jspService方法,進行頁面解析,包括對scriptlet的加載,html的生成,自定義Tag的解析等等
HttpJspBase的service再對_jspService再進行調用,最終生成HTML頁面