回覆列表
  • 1 # 企校錦囊

    Servlet是在伺服器端的Java程式,只不過它有一套規則(API),而JSP就是一套簡單規則的Servlet,JSP可以寫java程式碼,html程式碼,也可以寫JavaScript,CSS,但是到伺服器端會被轉成Servlet程式,然後按Servlet執行順序執行。

    JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的程式碼,Web容器將JSP的程式碼編譯成JVM能夠識別的java類。

    JSP 工作原理: JSP頁面在執行的時候都會被伺服器端的JSP引擎轉換為Servlet(.java),然後又由JSP引擎呼叫Java編譯器,將Servlet(.java)編譯為Class檔案(.class),並由Java虛擬機器(JVM)解釋執行。

    Servlet的應用邏輯是在Java檔案中,從Java程式碼中動態輸出HTML,並且完全從表示層中的HTML裡分離開來。而JSP的情況是Java和HTML可以組合成一個副檔名為.jsp的檔案。JSP側重於檢視,Servlet主要用於控制邏輯。

  • 2 # 碼聞強識

    你這種問法估計有點問題,Servlet檔案本身就是Java檔案。你可能想問的是,servlet檔案和JSP檔案有什麼不同吧?Jsp檔案是一種特殊的Servlet檔案。

  • 3 # 科技三不猴vip

    Servlet是Server Applet的簡稱,是Java編寫的伺服器端程式,主要功能在於互動式地瀏覽和生成資料,生成動態Web內容。

    這麼說吧:

    Servlet是Java實現的 具有特定格式的 一個介面/類;

    Servlet檔案是Java檔案中的一種。

    servlet是一個供其他java程式呼叫的java類。他不能獨立執行,她的執行完全由servlet引擎控制和排程

    針對客戶端的多次servlet請求,通常情況下,伺服器只會建立一servlet實力物件,也就是說servlet一擔建立,他就會駐留在記憶體之中,為後續的其他請求服務,直至web容器推出,servlet實力物件才會被銷燬。

    在servlet的整個生命週期內,servlet的init方法只會被呼叫一次,而對一個Servlet的每次訪問都導致引擎呼叫一次servlet的service方法。對於每次訪問請求,servlet引擎都會建立有哥httpservletRequest請求物件和一個httpservletReponse響應物件,然後將這兩個物件作為引數傳遞給servlet的service()方法。servlet方法再根據請求方式分別呼叫doXXX方法。

    servlet的執行緒安全問題

    當多個客戶端兵法訪問一個servlet時,web伺服器會為每一個客戶端的訪問請求建立一個執行緒,並在這個執行緒呼叫servlet的service方法,因此service方法內如果放同一個資源的話,就有可能引發執行緒安全問題,

    針對servlet執行緒安全問題,Sun公司是提供有解決方案的:讓Servlet去實現一個SingleThreadModel介面,如果某個Servlet實現了SingleThreadModel介面,那麼Servlet引擎將以但執行緒模式來呼叫期Service方法

    檢視Sevlet的API可以看到,SingleThreadModel介面中沒有定義任何方法和常量,在Java中,把沒有定義任何方法和常量的介面稱之為標記介面,經常看到的一個最典型的標記介面就是"Serializable",這個介面也是沒有定義任何方法和常量的,標記介面在Java中有什麼用呢?主要作用就是給某個物件打上一個標誌,告訴JVM,這個物件可以做什麼,比如實現了"Serializable"介面的類的物件就可以被序列化,還有一個"Cloneable"介面,這個也是一個標記介面,在預設情況下,Java中的物件是不允許被克隆的,就像現實生活中的人一樣,不允許克隆,但是隻要實現了"Cloneable"介面,那麼物件就可以被克隆了。

      讓Servlet實現了SingleThreadModel介面,只要在Servlet類的定義中增加實現SingleThreadModel介面的宣告即可。

      對於實現了SingleThreadModel介面的Servlet,Servlet引擎仍然支援對該Servlet的多執行緒併發訪問,其採用的方式是產生多個Servlet例項物件,併發的每個執行緒分別呼叫一個獨立的Servlet例項物件。

      實現SingleThreadModel介面並不能真正解決Servlet的執行緒安全問題,因為Servlet引擎會建立多個Servlet例項物件,而真正意義上解決多執行緒安全問題是指一個Servlet例項物件被多個執行緒同時呼叫的問題。事實上,在Servlet API 2.4中,已經將SingleThreadModel標記為Deprecated(過時的)。

  • 4 # 三觀不正定上斜下歪

    servlet檔案是什麼檔案?Java檔案是什麼檔案?你連這個都沒搞清楚都敢提這種問題?servlet是Java web服務的標準介面,並不是什麼檔案,所有允許在jdk下面執行的都是.Java檔案編譯後的.class檔案。實現了servlet介面的Java class才能執行在實現了servlet標準的容器中起作用。servlet檔案應該表述為實現了servlet介面的Java class。有什麼區別呢?普通Java class不會被servlet容器識別,實現了servlet介面的才能被識別(如Tomcat還需要配置檔案配置才能找到),為什麼呢?因為j2ee以servlet介面作為Java web開發規範,對外開放了相關介面,所以才有人根據規範開發了對應能執行servlet相關介面的容器,所以才有了Tomcat,jetty等承載Java web應用的容器。servlet只是Java web開發中標準規範,不能稱作為什麼servlet檔案。

  • 5 # 小齊說程式設計

    這個問題本身存在問題,servlet在JAVA語言中不是檔案他是用Java編寫的Server端程式,而JAVA檔案是JAVA程式的原始碼檔案。這就是他們的區別

  • 中秋節和大豐收的關聯?
  • 你怎麼看待你身邊的工作狂?