一個JSP執行過程

執行過程圖解

在這裏插入圖片描述

具體的代碼:

1.jsp
在這裏插入圖片描述
在這裏插入圖片描述

注意幾點:

1.當客戶端向一個JSP頁面發出請求時,Web Container(web容器,一般是Tomcatt)將JSP轉化成Servlet的源代碼(只在第一次請求時),然後編譯轉化後的Servlet並加載到內存中執行,執行的結果Response到客戶端。
2.JSP只在第一次執行的時候會轉化爲Servlet,以後每次執行Web容器都是直接執行編譯後的Servlet,所以JSP和Servlet只是在第一次執行的時候不一樣,JSP慢一點,以後的執行都是相同的。
**3.**如果你修改了jsp文件中的代碼,是需要重新啓動服務器,加載編譯jsp代碼的。因爲一旦修改,相當於重新寫了一個jsp一樣。

查看硬盤中1.jsp頁面加載執行過後生成的servlet的java文件,以及對應的.class文件

IDEA並沒有將jsp生成的相關文件放在Tomcat容器中,而是CATALINA_BASE中。當你啓動服務器就會在控制檯中看到這個目錄。在這裏插入圖片描述

1.jsp頁面,執行從被客戶端請求,到生成.java (servlet)文件的和class(文件),最後響應給客戶端的全過程如下:

在這裏插入圖片描述
修改1.jsp內容,重新啓動服務器,查看是否重新生成了相關java和class的文件
在這裏插入圖片描述

重新生成了java和class的文件的執行全過程如下:

觀察最後文件生成的時間,就知道修改jsp文件,確實會重新生成了相關java和class文件在這裏插入圖片描述

查看1.jsp被Tomcat容器生成的_1_jsp.java的內容,確定其是一個servlet。

它具有一個servlet的生命週期的init,destroy,以及service方法。
關於servlet的生命週期可參考這篇博文:servlet的生命週期
而且直接讀取1.jsp裏面的內容通過輸出語句out.write輸出到了瀏覽器上。
在這裏插入圖片描述

補充內容:

1.eclipse默認將發佈到服務器上的項目放在work目錄下:
下面中的文件分別是add.jsp,edit.jsp,index.jsp,list.jsp對應的.class和.java文件。(stums是項目名,org是指非盈利組織,是頂級域名中的一種,apache是阿帕奇公司)
在這裏插入圖片描述
2.看的仔細的同學,可能會注意爲什麼上面的1.jsp得到的java(servlet)和class(字節碼)文件的文件名形式和add.jsp等不一樣。
1.jsp是以"_“開頭,生成的java文件名爲”_1_jsp.java",對應的字節碼文件名爲"_1_jsp.class"。
add.jsp是其文件名"add"開頭,生成的java文件名爲"add_jsp.java",對應的字節碼文件名爲"add_jsp.class"。

這樣看來jsp生成的Java和class文件名稱的格式好像有兩種標準一樣,其實不然,標準只有一種
這裏總結一下:jsp生成的java和class文件名稱是以第二種add.jsp這種形式來生成對應的java和class文件的。
如果jsp文件名爲Demo1.jsp,那麼得到的servlet形式的java文件名稱爲Demo1_jsp.java和Demo1_jsp.class
在這裏插入圖片描述
那爲什麼1.jsp文件中生成的java文件會以"_"開頭呢?而不是 1_jsp.java和1_jsp.class這種形式呢?
因爲這涉及到了一個Java入門的基礎知識 標識符的命名

標識符的命名

Java中的標識符由文本字符(包括字母,中文等),數字,下劃線(_),美元符號($)組成,並且首字符不能是數字,不能包含任何嵌入的空格或點".",以及除下劃線以外的特殊字符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章