溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

jsp工作原理

發(fā)布時(shí)間:2020-11-03 14:34:59 來(lái)源:億速云 閱讀:130 作者:小新 欄目:編程語(yǔ)言

jsp工作原理?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

 JSP是Servlet的擴(kuò)展,JSP沒(méi)出現(xiàn)之前,就已經(jīng)出現(xiàn)了Servlet技術(shù).Servlet是利用了"輸出流",動(dòng)態(tài)的生成了HTML頁(yè)面。包括 每一個(gè)HTML標(biāo)簽和所有的HTML頁(yè)面中出現(xiàn)的內(nèi)容,簡(jiǎn)單點(diǎn)說(shuō)就是利用Servlet的輸出流將HTML標(biāo)簽生成一個(gè)HTML頁(yè)面。由于時(shí)間長(zhǎng)了 Servlet中包含了大量的HTML標(biāo)簽、大量的靜態(tài)文本及格式等,導(dǎo)致了Servlet的開(kāi)發(fā)效率非常低下.

這時(shí)候JSP誕生了,JSP彌補(bǔ)了這種情況,JSP通過(guò)在標(biāo)準(zhǔn)的THML頁(yè)面中嵌入JAVA代碼,使其靜態(tài)的部分無(wú)需JAVA程序控制,只有那些需要從數(shù)據(jù)庫(kù)讀取或需要?jiǎng)討B(tài)生成的頁(yè)面內(nèi)容,才使用JAVA腳本控制。

JSP主要是由兩部分組成:

(1)靜態(tài)部分:標(biāo)準(zhǔn)的HTML標(biāo)簽、靜態(tài)的頁(yè)面內(nèi)容,這些內(nèi)容與靜態(tài)HTML頁(yè)面相同.

(2)動(dòng)態(tài)部分:Java程序控制的內(nèi)容,這些內(nèi)容由Java程序來(lái)動(dòng)態(tài)生成。

下面是一個(gè)最簡(jiǎn)單的一段jsp代碼:

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<html>
    <head>
        <title>歡迎</title>
    </head>
    <body>
        歡迎學(xué)習(xí)Java JSP!現(xiàn)在時(shí)間是:<%out.println(new java.util.Date());%>
    </body>
</html>

頁(yè)面中粗體字代碼放在<%和%>之間,表明這些是Java腳本,而不是靜態(tài)內(nèi)容,通過(guò)這種方式就可以把Java代碼嵌入HTML頁(yè)面中,這就變成了動(dòng)態(tài)的JSP頁(yè)面。從表面上來(lái)分析,JSP頁(yè)面已經(jīng)不再需要Java類,似乎感覺(jué)完全脫離了Java面向?qū)ο蟮奶卣髁?,但?實(shí)際上JSP是Servlet的一種特殊的形式,每一個(gè)JSP的頁(yè)面就是一個(gè)Servlet的實(shí)例。

工作原理

(1)當(dāng)用戶訪問(wèn)一個(gè)JSP頁(yè)面時(shí),回想一個(gè)Servlet容器(Tomcat)發(fā)出請(qǐng)求;

(2)如果是第一次請(qǐng)求頁(yè)面,或頁(yè)面有所改動(dòng),則servlet容器首先要把JSP頁(yè)面(假設(shè)為test.jsp)轉(zhuǎn)化為Servlet代碼(test.java),再將其轉(zhuǎn)化為(test.class文件);因?yàn)檫@個(gè)過(guò)程(編譯)會(huì)耗費(fèi)一定時(shí)間,所以第一次訪問(wèn)或jsp文件有改動(dòng)時(shí),訪問(wèn)時(shí)間有些長(zhǎng);

(3)JSP容器負(fù)責(zé)調(diào)用從JSP轉(zhuǎn)換來(lái)的servlet,這些servlet負(fù)責(zé)提供服務(wù)相應(yīng)用戶請(qǐng)求(比如客戶端發(fā)送表單,要求servlet:formprocessor.java來(lái)處理,則容器會(huì)建立一個(gè)線程,調(diào)用formprocessor.java來(lái)處理該請(qǐng)求);如果用戶有多個(gè)請(qǐng)求,則容器會(huì)建立多個(gè)線程處理多個(gè)請(qǐng)求;

(4)容器執(zhí)行字節(jié)碼文件(包括調(diào)用的servlet:formprocessor.java字節(jié)嗎),并將其結(jié)果返回到客戶端;(返回的最終方式是有servlet輸出html格式的文件流)

注釋:

JSP頁(yè)面必須要在JSP服務(wù)器內(nèi)運(yùn)行,如tomcat weblogic,jboss等等.(順便說(shuō)一下,apache 和 tomcat是兩碼事兒,有不少人認(rèn)為
apache就是tomcat,其實(shí)是錯(cuò)誤的理解!~,tomcat只是apache中的一個(gè)子項(xiàng)目,apache是作為WEB應(yīng)用服務(wù)器,而tomcat可以說(shuō)是JSP或
Servlet的一個(gè)web容器);
JSP頁(yè)面的訪問(wèn)者無(wú)須安裝任何客戶端,甚至不需要可以運(yùn)行Java的運(yùn)行環(huán)境,因?yàn)镴SP頁(yè)面輸送到客戶端的是標(biāo)準(zhǔn)HTML頁(yè)面。

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)jsp工作原理大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jsp
AI