jsp的實質(zhì)是什么?
一、JSP的概念
我們的目標(biāo)是要搞清楚什么是JSP,他和HTML的靜態(tài)頁面有什么區(qū)別呢?
jsp是運行在服務(wù)器端的,它的實質(zhì)是一個java文件,
而html的靜態(tài)信息,所有內(nèi)容都是發(fā)送到客戶端再運行的。
JSP全稱是Java 服務(wù)器頁面 (Java Server Page ) 以擴展名 .jsp 保存,是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)簽,就構(gòu)成了JSP網(wǎng)頁java程序片段可以操縱數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,實現(xiàn)建立動態(tài)網(wǎng)站所需要的功能。有效地控制動態(tài)內(nèi)容生成,在Java Server Page里面使用 Java 編程語言和類庫,而HTML 用于表示頁面,而 Java 代碼用于訪問動態(tài)內(nèi)容。這樣大大降低了對客戶瀏覽器的要求,即使客戶瀏覽器端不支持Java,也可以訪問JSP網(wǎng)頁。
二、JSP的優(yōu)點
1、平臺無關(guān)性。
它擁有Java語言跨平臺的特性,以及業(yè)務(wù)代碼分離、組件重用、基礎(chǔ)Java Servlet功能和預(yù)編譯等特征。它也是跨平臺的,可以應(yīng)用在不同的系統(tǒng)中,如Windows、Linux、Mac和Solaris等。這同時也拓寬了JSP可以使用的Web服務(wù)器的范圍。
2、將內(nèi)容與表示分離。
采用JSP技術(shù)開發(fā)的項目,通常使用HTML語言來設(shè)計和格式化靜態(tài)頁面的內(nèi)容,而使用JSP標(biāo)簽和Java代碼片段來實現(xiàn)動態(tài)部分。程序開發(fā)人員可以將業(yè)務(wù)處理代碼全部放到JavaBean中,或者把業(yè)務(wù)處理代碼交給Servlet、Struts等其他業(yè)務(wù)控制層來處理,從而實現(xiàn)業(yè)務(wù)代碼從視圖層分離。這樣JSP頁面只負(fù)責(zé)顯示數(shù)據(jù)即可,當(dāng)需要修改業(yè)務(wù)代碼時,不會影響JSP頁面的代碼。
3、強調(diào)可重用組件。
JSP中可以使用JavaBean編寫業(yè)務(wù)組件,也就是使用一個JavaBean類封裝業(yè)務(wù)處理代碼或者作為一個數(shù)據(jù)存儲模型,在JSP頁面甚至整個項目中都可以重復(fù)使用這個JavaBean。JavaBean也可以應(yīng)用到其他Java應(yīng)用程序中,包括桌面應(yīng)用程序。
簡化頁面開發(fā)-Web 設(shè)計人員和 Web 程序員使用 Web 開發(fā)工具開發(fā) JSP 頁面
4、高速。
JSP會預(yù)編譯,就是在用戶第一次通過瀏覽器訪問JSP頁面時,服務(wù)器將對JSP頁面代碼進行編譯,并且僅執(zhí)行一次編譯。編譯好的代碼將被保存,在用戶下一次訪問時,直接執(zhí)行編譯好的代碼。這樣不僅節(jié)約了服務(wù)器的CPU資源,還大大提升了客戶端的訪問速度。
三、JSP的執(zhí)行過程
JSP全名為Java Server Pages,它實現(xiàn)了Html語法中的java擴張(以 <%, %>形式),我們可以在jsp頁面中嵌入java代碼,如下面這段代碼獲得服務(wù)器的當(dāng)前時間,并打印
<body?onload="getnow()">????<%????????Date now = new Date();????????SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 ?HH:mm:ss");????????String nowstr = sdf.format(now);????????// System.out.println(nowstr);????????out.println("java:"+nowstr);????%><br/></body>
在服務(wù)器端執(zhí)行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶端。雖然JSP頁面很少進行數(shù)據(jù)處理,只是用來實現(xiàn)網(wǎng)頁的靜態(tài)化頁面,只是用來提取數(shù)據(jù),不會進行業(yè)務(wù)處理。
為什么我們可以在jsp中嵌入java代碼呢?因為jsp在執(zhí)行需要先轉(zhuǎn)譯成為java代碼,然后在編譯成為class文件,也就是jsp的實質(zhì)就是一個java文件。如下圖所示:
查看tomcat目錄下的\work\Catalina\localhost目錄,你會發(fā)現(xiàn)所有的web項目都會在這里有對應(yīng)的目錄,打開其中一個項目一直打開進去,會發(fā)現(xiàn)每一個jsp頁面在都會有其對應(yīng)的java文件和編譯后的class文件。,這個文件有tomcat生成。
小編整理了一些java進階學(xué)習(xí)資料和面試題,需要資料的請加JAVA高階學(xué)習(xí)Q群:664389243?這是小編創(chuàng)建的java高階學(xué)習(xí)交流群,加群一起交流學(xué)習(xí)深造。群里也有小編整理的2019年最新最全的java高階學(xué)習(xí)資料!
所以我們在開發(fā)過程會發(fā)現(xiàn)jsp頁面在第一次訪問的時候速度會比較慢,因為需要轉(zhuǎn)譯和編譯兩個步驟,但是以后就會非???,因為直接就訪問以及編譯好的class文件了。
pac?o[?Q?