色色一区二区三区,一本大道道久久九九AV综合,国产香蕉97碰碰视频va碰碰看,综合亚洲国产2020

    <legend id="mljv4"><u id="mljv4"><blockquote id="mljv4"></blockquote></u></legend>

    <sub id="mljv4"><ol id="mljv4"><abbr id="mljv4"></abbr></ol></sub>
      <mark id="mljv4"></mark>
      教育培訓(xùn) > Jsp和Servlet有什么區(qū)別?

      Jsp和Servlet有什么區(qū)別?

      2020-11-16 17:03閱讀(59)

      Jsp和Servlet有什么區(qū)別?:Jsp是一種動態(tài)網(wǎng)頁開發(fā)技術(shù),它使用Jsp標簽在HTML網(wǎng)頁中插入Java代碼。標簽通常以lt;%開頭,以%gt;結(jié):-servlet,jsp,區(qū)別

      1

      Jsp是一種動態(tài)網(wǎng)頁開發(fā)技術(shù),它使用Jsp標簽在HTML網(wǎng)頁中插入Java代碼。標簽通常以<%開頭,以%>結(jié)束。Jsp標簽有多種功能,比如訪問數(shù)據(jù)庫、記錄用戶選擇信息、訪問JavaBeans組件等,還可以在不同的網(wǎng)頁中傳遞控制信息和共享信息。Jsp本質(zhì)上是Servlet的一種簡易形式,Jsp經(jīng)編譯后就變成了Servlet,是Servlet的擴展。由于jvm只能識別Java類,不能識別Jsp代碼,Web容器會將Jsp的代碼編譯成jvm能夠識別的Java類,然后再由Servlet負責響應(yīng)用戶請求。

      Servlet是一種服務(wù)器端的Java應(yīng)用程序,它運行于服務(wù)器的jvm中,由Web容器加載和管理,用于生成動態(tài)Web內(nèi)容,負責處理客戶端請求,能夠依靠服務(wù)器的支持向瀏覽器提供顯示內(nèi)容。在數(shù)通暢聯(lián)AEAI DP開發(fā)平臺的交互機制中,就是通過DispatchServlet來響應(yīng)瀏覽器上請求,再調(diào)用對應(yīng)Handler中的prepareDisplay方法,然后查詢對應(yīng)的信息放到PageBean中,最后將PageBean放到request中轉(zhuǎn)發(fā)到Jsp頁面來顯示結(jié)果集。

      Servlet和Jsp的區(qū)別:

      1. Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML中分離開來;而Jsp是Java和HTML組合成一個擴展名為.jsp的文件。
      2. Jsp側(cè)重于視圖,Servlet更側(cè)重于控制邏輯,在MVC架構(gòu)模式中,Jsp適合充當視圖(view)而Servlet適合充當控制器(controller)。
      3. Servlet中沒有內(nèi)置對象,Jsp中的內(nèi)置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到。

      數(shù)通暢聯(lián)專注于企業(yè)IT架構(gòu)、SOA綜合集成、數(shù)據(jù)治理分析領(lǐng)域,感謝您的閱讀與關(guān)注。

      2

      JSP簡介

      JSP是一種建立在Servlet規(guī)范功能之上的動態(tài)網(wǎng)頁技術(shù)。和ASP類似,它們都是在通常的網(wǎng)頁文件中嵌入腳本代碼,用于產(chǎn)生動態(tài)內(nèi)容,不過JSP文件中嵌入的是Java代碼和JSP標記。

      JSP文件在用戶第一次請求時,會被編譯成Servlet,然后再由這個Servlet處理用戶的請求,所以JSP也可以看成是運行時的Servlet。既然JSP也是Servlet,那么我們?yōu)槭裁催要使用JSP呢?或者說JSP和Servlet的區(qū)別是什么呢?

      ? Servlet是Java對CGI的回應(yīng)。它們在服務(wù)器上執(zhí)行和解釋瀏覽器的請求,承擔客戶端和其他應(yīng)用程序之間的中間層的角色。Servlet主要是把動態(tài)的內(nèi)容混合到靜態(tài)的內(nèi)容中以產(chǎn)生HTML。

      ? JSP頁面在HTML元素中嵌入Java腳本代碼和JSP標記,使得文件長度變短,格式更加清晰。另一方面,JSP把靜態(tài)和動態(tài)的內(nèi)容分離開來,實現(xiàn)了內(nèi)容和表示的分離。

      ? 使用JSP,不需要單獨配置每一個文件,只要擴展名是.jsp,JSP容器(也是Servlet容器)就會自動識別,將其轉(zhuǎn)換為Servlet為客戶端服務(wù)。術(shù)語Web容器和JSP容器是同義的。

      JSP的運行機制

      我們先來看一個簡單的JSP文件:

      <html>

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

      <body>

      <%

      out.println(\"Hello World!\");

      %>

      </body>

      </html>

      這個JSP頁面向客戶端輸出“Hello World!”。我們把這個頁面復(fù)制到%CATALINA_ HOME%\webapps\ROOT目錄下,啟動Tomcat,打開瀏覽器,在地址欄中輸入http://localhost: 8080/hello.jsp,看到“Hello World!”的輸出后,你可以轉(zhuǎn)到%CATALINA_HOME%\work\Catalina\localhost目錄,在ROOT\org\apache\jsp目錄下,可以看到兩個文件:“hello_jsp.java”和“hello_jsp.class”,這兩個文件就是在我們訪問hello.jsp文件時,由JSP容器生成的,整個過程如下圖所示。


      

      JSP文件的指定過程

      JSP容器管理JSP頁面生命周期的兩個階段:轉(zhuǎn)換階段(translation phase)和執(zhí)行階段(execution phase)。當有一個對JSP頁面的客戶請求到來時,JSP容器檢驗JSP頁面的語法是否正確,將JSP頁面轉(zhuǎn)換為Servlet源文件,然后調(diào)用javac工具類編譯Servlet源文件生成字節(jié)碼文件,這一階段是轉(zhuǎn)換階段。接下來,Servlet容器加載轉(zhuǎn)換后的Servlet類,實例化一個對象處理客戶端的請求,在請求處理完成后,響應(yīng)對象被JSP容器接收,容器將HTML格式的響應(yīng)信息發(fā)送到客戶端,這一階段是執(zhí)行階段。

      從整個過程中我們可以知道,當?shù)谝淮渭虞dJSP頁面時,因為要將JSP文件轉(zhuǎn)換為Servlet類,所以響應(yīng)速度較慢。當再次請求時,JSP容器就會直接執(zhí)行第一次請求時產(chǎn)生的Servlet,而不會再重新轉(zhuǎn)換JSP文件,所以其執(zhí)行速度和原始的Servlet執(zhí)行速度幾乎就相同了。在JSP執(zhí)行期間,JSP容器會檢查JSP文件,看是否有更新或修改。如果有更新或修改,JSP容器會再次編譯JSP或Servlet;如果沒有更新或修改,就直接執(zhí)行前面產(chǎn)生的Servlet,這也是JSP相對于Servlet的好處之一。

      JSP容器在后臺針對hello.jsp生成的Servlet源文件中有如下代碼:

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

      HttpJspBase類是Tomcat提供的實現(xiàn)了HttpJspPage接口的類,而HttpJspPage接口繼承自javax.servlet.jsp.JspPage接口(JSP 規(guī)范中定義,JSP頁面轉(zhuǎn)換后的Servlet類必須實現(xiàn)JspPage接口),JspPage接口又繼承自javax.servlet.Servlet接口。

      結(jié)論:JSP本質(zhì)上還是Servlet。

      3

      jsp編譯后形成servlet類,本質(zhì)上它還是servlet。由于servlet在做頁面展示需要將html信息作為輸出信息,維護成本太高,開發(fā)難度很大,美工和程序員很難配合,因此產(chǎn)生了jsp技術(shù)。jsp主要是在html中嵌入java代碼,這使得美工和程序員可以有效的配合。但是jsp還是難以拜托維護難度高弊病,且缺乏面向?qū)ο蟮木幊趟枷搿?/p>

      相關(guān)問答推薦