首頁>Club>

12
回覆列表
  • 1 # 數通暢聯

    Jsp是一種動態網頁開發技術,它使用Jsp標籤在HTML網頁中插入Java程式碼。標籤通常以<%開頭,以%>結束。Jsp標籤有多種功能,比如訪問資料庫、記錄使用者選擇資訊、訪問JavaBeans元件等,還可以在不同的網頁中傳遞控制資訊和共享資訊。Jsp本質上是Servlet的一種簡易形式,Jsp經編譯後就變成了Servlet,是Servlet的擴充套件。由於jvm只能識別Java類,不能識別Jsp程式碼,Web容器會將Jsp的程式碼編譯成jvm能夠識別的Java類,然後再由Servlet負責響應使用者請求。

    Servlet和Jsp的區別:

  • 2 # IT小白鴿

    jsp編譯後形成servlet類,本質上它還是servlet。由於servlet在做頁面展示需要將html資訊作為輸出資訊,維護成本太高,開發難度很大,美工和程式設計師很難配合,因此產生了jsp技術。jsp主要是在html中嵌入java程式碼,這使得美工和程式設計師可以有效的配合。但是jsp還是難以拜託維護難度高弊病,且缺乏面向物件的程式設計思想。

  • 3 # IT技術專家孫鑫

    JSP簡介

    JSP是一種建立在Servlet規範功能之上的動態網頁技術。和ASP類似,它們都是在通常的網頁檔案中嵌入指令碼程式碼,用於產生動態內容,不過JSP檔案中嵌入的是Java程式碼和JSP標記。

    JSP檔案在使用者第一次請求時,會被編譯成Servlet,然後再由這個Servlet處理使用者的請求,所以JSP也可以看成是執行時的Servlet。既然JSP也是Servlet,那麼我們為什麼還要使用JSP呢?或者說JSP和Servlet的區別是什麼呢?

    — Servlet是Java對CGI的迴應。它們在伺服器上執行和解釋瀏覽器的請求,承擔客戶端和其他應用程式之間的中間層的角色。Servlet主要是把動態的內容混合到靜態的內容中以產生HTML。

    — JSP頁面在HTML元素中嵌入Java指令碼程式碼和JSP標記,使得檔案長度變短,格式更加清晰。另一方面,JSP把靜態和動態的內容分離開來,實現了內容和表示的分離。

    — 使用JSP,不需要單獨配置每一個檔案,只要副檔名是.jsp,JSP容器(也是Servlet容器)就會自動識別,將其轉換為Servlet為客戶端服務。術語Web容器和JSP容器是同義的

    JSP的執行機制

    我們先來看一個簡單的JSP檔案:

    <html>

    <head><title>Hello</title></head>

    <body>

    <%

    out.println("Hello World!");

    %>

    </body>

    </html>

    這個JSP頁面向客戶端輸出“Hello World!”。我們把這個頁面複製到%CATALINA_ HOME%webappsROOT目錄下,啟動Tomcat,開啟瀏覽器,在位址列中輸入http://localhost: 8080/hello.jsp,看到“Hello World!”的輸出後,你可以轉到%CATALINA_HOME%workCatalinalocalhost目錄,在ROOTorgapachejsp目錄下,可以看到兩個檔案:“hello_jsp.java”和“hello_jsp.class”,這兩個檔案就是在我們訪問hello.jsp檔案時,由JSP容器生成的,整個過程如下圖所示。

    

    JSP容器管理JSP頁面生命週期的兩個階段:轉換階段(translation phase)和執行階段(execution phase)。當有一個對JSP頁面的客戶請求到來時,JSP容器檢驗JSP頁面的語法是否正確,將JSP頁面轉換為Servlet原始檔,然後呼叫javac工具類編譯Servlet原始檔生成位元組碼檔案,這一階段是轉換階段。接下來,Servlet容器載入轉換後的Servlet類,例項化一個物件處理客戶端的請求,在請求處理完成後,響應物件被JSP容器接收,容器將HTML格式的響應資訊傳送到客戶端,這一階段是執行階段。

    從整個過程中我們可以知道,當第一次載入JSP頁面時,因為要將JSP檔案轉換為Servlet類,所以響應速度較慢。當再次請求時,JSP容器就會直接執行第一次請求時產生的Servlet,而不會再重新轉換JSP檔案,所以其執行速度和原始的Servlet執行速度幾乎就相同了。在JSP執行期間,JSP容器會檢查JSP檔案,看是否有更新或修改。如果有更新或修改,JSP容器會再次編譯JSP或Servlet;如果沒有更新或修改,就直接執行前面產生的Servlet,這也是JSP相對於Servlet的好處之一。

    JSP容器在後臺針對hello.jsp生成的Servlet原始檔中有如下程式碼:

    public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase{...}

    HttpJspBase類是Tomcat提供的實現了HttpJspPage介面的類,而HttpJspPage介面繼承自javax.servlet.jsp.JspPage介面(JSP 規範中定義,JSP頁面轉換後的Servlet類必須實現JspPage介面),JspPage介面又繼承自javax.servlet.Servlet介面。

    結論:JSP本質上還是Servlet。

  • 中秋節和大豐收的關聯?
  • 準備換手機,要求螢幕好,拍照真實,沒道德綁架的好手機,請推薦?