很久以來,都知道JSP其實(shí)就是Servlet,今天心血來潮,想把里面的具體代碼看一遍,并記錄心得。
一個(gè)編譯好的JSP類如下:
public final class index_jsp extends HttpJspBase
implements JspSourceDependent
//上述類為index.jsp被編譯后得到的類
//HttpJspBase是extends HttpServlet的一個(gè)類
//JspSourceDependent是一個(gè)接口,只聲明了一個(gè)方法、、getDependants(),返回當(dāng)前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方法,進(jìn)行頁面解析,包括對(duì)scriptlet的加載,html的生成,自定義Tag的解析等等
HttpJspBase的service再對(duì)_jspService再進(jìn)行調(diào)用,最終生成HTML頁面