JSP是Servlet的擴充,JSP沒出現之前,就已經出現了Servlet技術.Servlet是利用了"輸出流",動態的生成了HTML頁面。包括 每個HTML標籤和所有的HTML頁面中出現的內容,簡單點說就是利用Servlet的輸出流將HTML標籤產生一個HTML頁面。由於時間長了Servlet包含了大量的HTML標籤、大量的靜態文字及格式等,導致了Servlet的開發效率非常低下.
這時候JSP誕生了,JSP彌補了這種情況,JSP通過在標準的THML頁面中嵌入JAVA代碼,使其靜態的部分無需JAVA程序控制,只有那些需要從數據庫讀取或需要動態生成的頁面內容,才使用JAVA腳本控制。
JSP主要是由兩部分組成:
(1)靜態部分:標準的HTML標籤、靜態的頁面內容,這些內容與靜態HTML頁面相同.
(2)動態部分:Java程式控制的內容,這些內容由Java程式來動態產生。
下面是一個最簡單的一段jsp程式碼:
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <html> <head> <title>欢迎</title> </head> <body> 欢迎学习Java JSP!现在时间是:<%out.println(new java.util.Date());%> </body> </html>
頁面中粗體字碼放在<%和%>之間,表示這些是Java腳本,而不是靜態內容,透過這種方式就可以把Java程式碼嵌入HTML頁面中,這就變成了動態的JSP頁面。從表面上來分析,JSP頁面已經不再需要Java類別,似乎感覺完全脫離了Java物件導向的特徵了,但是,實際上JSP是Servlet的一種特殊的形式,每一個JSP的頁面就是一個Servlet的實例。
工作原理
(1)當使用者造訪一個JSP頁面時,回想一個Servlet容器(Tomcat)發出請求;
(2)如果是第一次請求頁面,或頁面有所改動,則servlet容器首先要把JSP頁面(假設為test.jsp)轉換為Servlet程式碼(test.java),再將其轉換為(test. class檔案);因為這個過程(編譯)會耗費一定時間,所以第一次存取或jsp檔案有改動時,存取時間有些長;
(3)JSP容器負責呼叫從JSP轉換來的servlet,這些servlet負責提供服務相應用戶請求(例如客戶端發送表單,要求servlet:formprocessor.java來處理,則容器會建立一個線程,調用formprocessor.java來處理該請求);如果用戶有多個請求,則容器會建立多個執行緒處理多個請求;
(4)容器執行字節碼檔案(包括呼叫的servlet:formprocessor.java位元組嗎),並將其結果傳回客戶端; (回傳的最終方式是有servlet輸出html格式的檔案流)
註解:
JSP頁面必須在JSP伺服器內運作,如tomcat weblogic,jboss等等.(順便說一下,apache 和tomcat是兩碼事兒,有不少人認為
apache就是tomcat,其實是錯誤的理解!~,tomcat只是apache中的一個子項目,apache是作為WEB應用伺服器,而tomcat可以說是JSP或Servlet的一個web容器);
JSP頁面的訪客無須安裝任何客戶端,甚至不需要可以運行Java的運行環境,因為JSP頁面輸送到客戶端的是標準HTML頁面。
相關學習推薦:java基礎教學
以上是jsp運作原理是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!