本文目錄一覽:
- 1、tomcat怎麼編譯jsp文件
- 2、jsp編譯過程是什麼樣的
- 3、JSP 轉譯
- 4、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-tw/n/133864.html