jsp轉譯和編譯(jsp被編譯成)

本文目錄一覽:

tomcat怎麼編譯jsp文件

一、jsp執行過程圖解

用戶訪問jsp頁面時,jsp的處理過程如下圖所示: 

二、預處理階段

客戶第一次請求jsp頁面時,jsp引擎會將jsp文件中的腳本代碼(HTML)和代碼片段(java代碼)全部轉換為java代碼,轉換過程非常直觀:對於HTML文本只需要用簡單的out.println方法包裹,對於java腳本只做保留或簡單的處理。

三、編譯階段

預處理階段把jsp文件解析為java代碼,編譯階段jsp引擎把java代碼編譯成servlet類文件,對於Tomcat,生成的class文件默認情況下存放在Tomcat/work目錄下。

四、響應階段

編譯後的class對象被加載到容器中,並根據用戶的請求生成HTML格式的響應頁面返回給客戶端。 

在執行jsp網頁時,通常分為兩個時期:轉譯時期和請求時期。轉譯時期jsp頁面被翻譯成Servlet類,然後編譯成Class文件;用戶請求時期,servlet類被執行,生成HTML響應至客戶端。

五、jsp和servlet的執行速度

jsp的轉譯和請求都在在第一次訪問時進行的,所以用戶在第一次訪問jsp頁面時響應時間會比較長。在之後的請求中,這些工作已經完成,時間延長問題不存在了。在處理後續的訪問時jsp和servlet的執行速度是一樣的。

六、容器、jsp容器、jsp引擎

jsp要轉譯為servlet,但是servlet沒有main()方法,servlet對象的創建、方法的調用由web容器來實現。以Tomcat為例,先看一下Tomcat的總體結構:

從圖中可以看出,Tomcat的核心組建是connector和container,container就是容器。容器就是負責管理控制servlet的應用程序。圖中的jasper就是解析jsp的jsp引擎。Tomcat既是servlet容器又是web服務器,也是jsp引擎。

jsp編譯過程是什麼樣的

每一個JSP頁面都會被Web容器編譯成一個Java類,供web容器調用,並且生成HTML葉面回饋給用戶。而了解其中的變異方法和規則,對我們學習JSP是非常有好處的,可以說學習好了這個編譯原理,就已經學習好了大部分的JSP知識,剩下的工作就只剩下熟記一些tablib和反覆應用以使自己更加熟練而已了JSP會被編譯成.java放Tomcat/work/Catalina/localhost/***/org/apache/jsp/page

然後編譯成.classjsp = java + html

servlet = java + out.print(html)

1.客戶端發送請求給web容器

2.web容器將jsp首先轉譯成servlet源代碼

3.web容器將servlet源代碼編譯成.class 文件

4.web容器執行.class 文件

5.web容器將結果響應給客戶端

第二個問題,會.

參考資料:

JSP 轉譯

第一 jsp最終被服務器編譯 就變成了servlet

第二 servlet 主要用於截獲客戶端請求 對請求響應服務器 然後將處理過的信息返回客戶端

Server激活Servlet的service()方法,傳遞請求和響應對象作為參數

service()方法獲得關於請求對象的信息,處理請求,訪問其他資源,獲得需要的信息

service()方法使用響應對象的方法,將響應傳回Server,最終到達客戶端。service()方法可能激活其它方法以處理請求,如doGet()或doPost()或程序員自己開發的新的方法。

當然 接觸了struts 框架了 你就不需要這麼麻煩了 配置一個struts-config。xml 就可以了 反正 基礎就是servlet

jsp源代碼的編譯

任何工具都不能完成對java 文件和Jsp文件的編譯,只能由Tomcat服務器利用JVM虛擬機才能完成對文件的編譯。

無論你使用的是什麼工具JSP的轉義和編譯都是由Tomcat服務器完成的。

jsp源代碼中的關於html的部分最後會轉譯成Servlet文件,這也是個java文件最後又服務器編譯成class 文件。你看一下這個文件夾下的文件就全明白了Tomcat\work\demo\org\apache\jsp

JSP頁面上的所有HTML部分都會轉換成Java文件存放在這個文件夾下,包括服務器編譯完的生成的Class文件。

由Tomcat編譯的。每次重起Tomcat服務器都要對服務器中的java文件編譯,生成Class文件,存放在WEB-INF文件夾下classes文件下。JSP頁面的內容會先轉義成相應的Servlet形式文件,這些文件存放在Tomcat\work\demo\org\apache\jsp文件夾下,並且有相應界面的java文件,在第一次對相應的頁面請求時服務器會自動對相應JSP頁面的java文件進行編譯,生成class文件。JSP的編譯過程是先轉義然後再編譯,當第二次請求時就不需要再編譯了。

所以JSP是一次編譯多次使用。

但是如果你後台的Java類發生了改變,那麼你必須重起啟動服務器對Java類文件進行編譯。

你看下關於JSP的生命周期。

原創文章,作者:VASS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/133864.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VASS的頭像VASS
上一篇 2024-10-04 00:01
下一篇 2024-10-04 00:02

相關推薦

發表回復

登錄後才能評論