搜尋
首頁Javajava教程Java中servlet基礎知識的詳解

Java中servlet基礎知識的詳解

Jul 26, 2017 pm 03:11 PM
javaservlet基礎知識

這篇文章主要為大家詳細介紹了servlet基礎的相關資料,具有一定的參考價值,有興趣的朋友們可以參考一下

Servlet是一門專門用於開發動態web資源的技術,Sun公司在其API中提供了一個Servlet接口(當然,我們不會去直接實現這個接口,而是去繼承其實現類會更好),因此,狹義的Servlet是指這個接口,廣義的Servlet是指任何實作了這個Servlet介面的類別。 使用Servlet開發一個動態web資源,其實就是開發一個Java程式向瀏覽器輸出資料。

Servlet其實就是一個運行在伺服器上得Java程序,Servlet是J2EE十三門技術中的一種,因此我們不能去看J2SE的API文檔,如果是初學者,最好能看專門Servlet的API文件。我們來看Servlet的文檔介紹:

從這個對Servlet接口的介紹就可以看出,如果要實現Servlet接口,就要實現其所有的方法,Servlet程式是運行在web伺服器上得,用來接收和回應從客戶端發來的請求。當然就像我之前說的,如果自己寫一個類別來實作Servlet接口,那麼就要複寫Servlet所有的方法,但是我們可以繼承其實作類,例如GenericServlet類或HttpServlet類,這樣只需要複寫我們想複寫的方法即可。

Servlet中的方法包括了其生命週期方法和非生命週期的方法。在Servlet中,生命週期方法包括:init(ServletConfig config)、destroy()、service(ServletRequest req , ServletResponse res),也就是Servlet初始化、對請求進行回應服務,和Servlet的銷毀。

除了Servlet的生命週期方法,還有非生命週期方法,如getServletConfig()和getServletInfo()方法,這兩個方法可以獲得有關該Servlet的一些資訊。

  Servlet生命週期是指Servlet實例從建立到回應客戶端請求,最後銷毀的過程。具體過程如下:

  1、 Server建立一個Servlet的實例,也就是呼叫了init()方法;

  2、一個客戶端的請求(物件)到達Server;

#  3、 Server將請求傳送給Servlet;

  4、Servlet產生對請求的回應(物件);

  5、Server啟動Servlet的service()方法,傳遞請求物件和回應對像作為參數;

  6、 Service()方法獲得請求對象的信息,處理請求,訪問資源,獲得所需的信息;

  7、Service()方法使用響應對象的方法,將回應傳回Server,最終到達客戶端。 Service方法也可能啟動其他方法處理請求,例如doGet()或doPost()方法;

  8、對於更多的客戶端請求,Server建立新的請求和回應對象,仍然啟動此Servlet的service方法,將這兩個物件作為參數傳遞給它,無需再呼叫init()方法。一般Servlet只初始化一次。當Server不在需要Servlet時(通常是Server關閉),Server呼叫Servlet的destroy()方法銷毀Servlet。

  從以上可以看出,Servlet生命週期上得三個方法是由伺服器調用,可以說是在Servlet存在開始到銷毀這個過程中的某個時刻(如果有事件觸發)則必定會被執行的方法稱為生命週期方法。

  因此,在Servlet中最重要的就是service()方法,要想從伺服器端將資源傳回客戶端或向客戶端發送數據,都會在service()方法中進行。

  從service(ServletTequest req , ServletResponse res)方法來看,不僅service()方法是由伺服器呼叫執行,連ServletTequest請求物件和ServletResponse回應物件也是由伺服器提供,如果我們要寫一個簡單的資料給客戶端,就可以在service()方法中操作ServletResponse回應物件:

  作為入門,那麼我們先不用開發工具IDE來寫Servlet,而是先手動寫,這樣有助於理解Servlet的底層原理。在Tomcat的【webapps】目錄下建立我的web應用,web應用程式所在目錄為【myservlet】,我們先在【myservlet】目錄下建立【WEB-INF】,並且再在【WEB-INF】中建立【classes 】目錄,【lib目錄】和web.xml文件,在【classes】目錄中,建立我的Java程式:FirstServlet.java

因為自己寫的Servlet是由伺服器調用,因此我們所創建的Servlet實作類別一定要是公共的,開始說了,我們沒必要實作Servlet的全部方法,因此我們向客戶端傳資料只需要複寫service()方法即可,那麼我們只需要繼承Servlet的實作類,接著取得對應物件ServletResponse的輸出流ServletOutputStream就可以輸出資料到客戶端了,同時因為輸出是位元組流,所以需要將字元轉換成位元組數組,然後手動寫入自訂包名和要導入的Java包:


package fjdingsd.web;
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet{
  public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
  {
   OutputStream out = res.getOutputStream();
   out.write("Hello Servlet".getBytes());
  }
}

使用cmd對這個Java程序進行編譯,但要注意,「javac」這個只是預設導入了J2SE的包,而沒有J2EE的包。那我們要去哪裡找J2EE的Servlet包呢?其實,因為Tomcat支援Servlet所以Tomcat的【lib】目錄包含了Servlet的JAR套件:

所以我們在cmd中應該先進行這一步驟設定環境變數:set classpath = %classpath% ; 路徑/servlet-api.jar

#接著就可以對剛才的Java程式進行編譯了:javac –d .程式名稱.java

(「-d」代表後面一個指令為.class檔案存放目錄,「.」代表目前目錄)

#編譯成功後可以再看web應用程式所在目錄中已經有了字節碼檔案和套件名稱了:

當然,現在已經有了Servlet的程序,但是瀏覽器還不能來訪問,因為這個Servlet程式還沒設定對外訪問路徑。那麼從哪裡將我們剛剛建立好的Servlet字節碼檔案配置成瀏覽器能存取到的路徑呢?

答案就是在這個web應用程式中的web.xml檔案中,現在我們只取最簡潔的格式,如《Tomcat詳細學習方法(三)》所說,將Tomcat的web.xml這個「模板」中的頭和尾複製進自己的web.xml文件中,還要複製一些,見下圖:

這裡就有比較重要的知識點了,中的必須保持一致,中的必須有完整包名和類名,而中的就是我們可以設定的對外存取路徑了,可以自訂路徑。這個路徑的設定可以不寫,則為預設值,那麼瀏覽器中的輸入位址只要有web應用名稱即可,但是即使設為預設值,在中,內容也一定要有斜線:“/”。

這時候,將Tomcat伺服器開啟,就能在瀏覽器中存取剛才寫好的Servlet程式了,輸入的格式為:主機名稱:連接埠(80不需要)/web應用名稱/對外訪問路徑

如果是對於Servlet的訪問,那麼只需要寫到對外訪問路徑即可,如果寫了Servlet的名稱也是無法訪問的,如下圖:

還有一個問題,如果對於多個Servlet在xml文件中的對外訪問路徑都配置一樣的話,同樣不能訪問,如下圖:

因此,不同的Servlet請在自訂web.xml中設定不同的對外存取路徑。

以上是Java中servlet基礎知識的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Java平台獨立性:與不同的操作系統的兼容性Java平台獨立性:與不同的操作系統的兼容性May 13, 2025 am 12:11 AM

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

什麼功能使Java仍然強大什麼功能使Java仍然強大May 13, 2025 am 12:05 AM

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

頂級Java功能:開發人員的綜合指南頂級Java功能:開發人員的綜合指南May 13, 2025 am 12:04 AM

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。

Java真的平台獨立嗎? '寫一次,在任何地方運行”如何起作用Java真的平台獨立嗎? '寫一次,在任何地方運行”如何起作用May 13, 2025 am 12:03 AM

javaisnotirelyplatemententedduetojvmvariationsandnativecodinteinteration,butitlargelyupholdsitsitsworapromise.1)javacompilestobytecoderunbythejvm

揭示JVM:您了解Java執行的關鍵揭示JVM:您了解Java執行的關鍵May 13, 2025 am 12:02 AM

thejavavirtualmachine(JVM)IsanabtractComputingmachinecrucialforjavaexecutionasitrunsjavabytecode,使“ writeononce,runanywhere”能力

Java仍然是基於新功能的好語言嗎?Java仍然是基於新功能的好語言嗎?May 12, 2025 am 12:12 AM

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

是什麼使Java很棒?關鍵特徵和好處是什麼使Java很棒?關鍵特徵和好處May 12, 2025 am 12:11 AM

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

前5個Java功能:示例和解釋前5個Java功能:示例和解釋May 12, 2025 am 12:09 AM

Java的五大特色是多態性、Lambda表達式、StreamsAPI、泛型和異常處理。 1.多態性讓不同類的對象可以作為共同基類的對象使用。 2.Lambda表達式使代碼更簡潔,特別適合處理集合和流。 3.StreamsAPI高效處理大數據集,支持聲明式操作。 4.泛型提供類型安全和重用性,編譯時捕獲類型錯誤。 5.異常處理幫助優雅處理錯誤,編寫可靠軟件。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器