超詳細的Servlet教程,10分鐘帶你認識servlet
Servlet是什麼?
servlet是Server Applet的簡稱,翻譯過來就是服務程式。
好吧,這麼說你可能還是不太懂,簡單地講,這個servlet是執行在伺服器上的一個小程式,用來處理伺服器請求的.進一步講,我們知道,一般的網頁程式,是由我們通過瀏覽器訪問來實現的,在這個過程中,我們的瀏覽器傳送訪問請求,伺服器接收請求,並對瀏覽器的請求作出相應的處理.這就是我們熟悉的B/S模型(瀏覽器-伺服器模型).而servlet就是對請求作出處理的元件,執行於支援Java的應用伺服器中.
Java Servlet 可以使用所有的 Java API,Java 能做的事情,Servlet 都能做。
動力節點的 Servlet 教程對 Servlet 技術的整體框架進行了講解,並附帶了例項演示,需要具備 Java 基礎,servlet學習資料點下邊連結:
見評論區!!!
Servlet只是古老的CGI技術的替代品,直接使用Servle開發還是很麻煩,所以Java後來又對Servlet 進行了升級,推出了 JSP 技術。JSP 只是對 Servlet 加了一層殼,JSP 經過編譯後還是 Servlet。
Servlet的開發流程
狹義上講,servlet是servlet是java語言實現的一個類,所以我們就要根據這個類進行相應的擴充套件開發.
開發流程如下:
- 編寫一個java類,繼承HttpServlet類
- 重寫HttpServlet類的doGet方法和doPost方法
- 配置web.xml檔案,或者使用註解對servlet進行配置
開發流程就是這個樣子,我們先來看一下最後一個步驟.
#對servlet進行配置
你一定在想,如果我寫了好幾個servlet,但是前端傳送請求的時候,究竟會把請求傳送給哪個servlet呢?我在輸入某個地址的時候,究竟是由哪個servlet進行響應的呢?
這時候servlet的配置就顯得尤為重要.對servlet的配置指定了對前端請求處理究竟是通過哪個servlet.
配置servlet一共有兩種方式,一種是使用web.xml檔案配置,另外一種就是使用註解配置,下面我們來詳解介紹這兩種配置方式
使用web.xml檔案配置
注意,servlet的配置內容要寫在webapp內部
<webapp><!-- 配置一個servlet --> <!-- servlet的配置 --> <servlet> <!-- servlet的內部名稱,自定義。儘量有意義 --> <servlet-name>MyServlet</servlet-name> <!-- servlet的類全名: 包名+簡單類名 --> <servlet-class>cn.roobtyan.servlet.FirstServlet</servlet-class> </servlet> <!-- servlet的對映配置 --> <servlet-mapping> <!-- servlet的內部名稱,一定要和上面的內部名稱保持一致!! --> <servlet-name>MyServlet</servlet-name> <!-- servlet的對映路徑(訪問servlet的名稱) --> <url-pattern>/first</url-pattern> </servlet-mapping></webapp>
當你訪問/first的時候,伺服器自然就會把請求交給MyServlet進行處理了.
使用@註解配置
新版本的servlet支援使用註解進行配置,這樣極大的簡便了開發.
註解配置如下:
@WebServlet(name = "LoginServlet",urlPatterns = {"/login"})public class LoginServlet extends HttpServlet { }
然後,你在訪問/login的時候,伺服器同樣就會將處理交由LoginServlet進行處理了.
這樣是不是非常爽?(-)
實際上,註解的作用和web.xml的作用是相同的,一般都是推薦使用註解的方式進行開發,這樣十分簡便,可讀性也變的更加強大.
你一定會好奇,如下:
<url-pattern>/first<url-pattern> 和@WebServlet(name = "LoginServlet",urlPatterns = {"/login"})
這裡面的url可不可以不這麼精確的配置,用一種模糊匹配的方式,就是我訪問某種規則的路徑的時候,統一呼叫一個servlet,這當然是可以的了.
這就涉及到對映路徑的問題了
Servlet命名
Servlet 的命名可以看出 sun 命名的特點,如 Applet 表示小應用程式;Scriptlet = Script + Applet,表示小指令碼程式;同樣 Servlet = Service + Applet,表示小服務程式。
- 生命週期編輯
- 客戶端請求該 Servlet;
- 載入 Servlet 類到記憶體;
- 例項化並呼叫init()方法初始化該 Servlet;
- service()(根據請求方法不同呼叫doGet() 或者 doPost(),此外還有doHead()、doPut()、doTrace()、doDelete()、doOptions());
- destroy()。
- 載入和例項化 Servlet。這項操作一般是動態執行的。然而,Server 通常會提供一個管理的選項,用於在 Server 啟動時強制裝載和初始化特定的 Servlet。
對比
與 Applet 的比較
相似之處:
• 它們不是獨立的應用程式,沒有 main() 方法。
• 它們不是由使用者或程式設計師呼叫,而是由另外一個應用程式(容器)呼叫。
• 它們都有一個生存週期,包含 init() 和 destroy() 方法。
不同之處:
• Applet具有很好的圖形介面(AWT),與瀏覽器一起,在客戶端執行。
• Servlet 則沒有圖形介面,執行在伺服器端。
與 CGI 比較
與傳統的 CGI 和許多其他類似 CGI 的技術相比,Java Servlet 具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。在未來的技術發展過程中,Servlet 有可能徹底取代 CGI。
在傳統的 CGI中,每個請求都要啟動一個新的程式,如果 CGI 程式本身的執行時間較短,啟動程式所需要的開銷很可能反而超過實際執行時間。而在 Servlet 中,每個請求由一個輕量級的 Java 執行緒處理(而不是重量級的作業系統程式)。
在傳統 CGI 中,如果有 N 個併發的對同一 CGI程式的請求,則該CGI程式的程式碼在記憶體中重複裝載了 N 次;而對於 Servlet,處理請求的是 N 個執行緒,只需要一份 Servlet 類程式碼。在效能優化方面,Servlet 也比 CGI 有著更多的選擇。
• 方便
Servlet 提供了大量的實用工具例程,例如自動地解析和解碼 HTML 表單資料、讀取和設定 HTTP頭、處理Cookie、跟蹤會話狀態等。
• 功能強大
在Servlet中,許多使用傳統 CGI 程式很難完成的任務都可以輕鬆地完成。例如,Servlet 能夠直接和 Web伺服器互動,而普通的 CGI 程式不能。Servlet 還能夠在各個程式之間共享資料,使得資料庫連線池之類的功能很容易實現。
• 可移植性好
Servlet 用 Java 編寫,Servlet API具有完善的標準。因此,為 IPlanet Enterprise Server 寫的 Servlet 無需任何實質上的改動即可移植到 Apache、MicrosoftIIS 或者 WebStar。幾乎所有的主流伺服器都直接或通過外掛支援 Servlet。
• 節省投資
不僅有許多廉價甚至免費的 Web 伺服器可供個人或小規模網站使用,而且對於現有的伺服器,如果它不支援 Servlet 的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。
與 JSP 比較
JSP 和 Servlet 的區別到底在應用上有哪些體現,很多人搞不清楚。簡單的說,SUN首先發展出 Servlet,其功能比較強勁,體系設計也很先進,只是,它輸出 HTML 語句還是採用了老的 CGI 方式,是一句一句輸出,所以,編寫和修改 HTML 非常不方便。
Java Server Pages(JSP)是一種實現普通靜態HTML 和動態 HTML 混合編碼的技術,JSP 並沒有增加任何本質上不能用 Servlet 實現的功能。但是,在 JSP 中編寫靜態HTML 更加方便,不必再用 println語 句來輸出每一行 HTML 程式碼。更重要的是,藉助內容和外觀的分離,頁面製作中不同性質的任務可以方便地分開:比如,由頁面設計者進行 HTML設計,同時留出供 Servlet 程式設計師插入動態內容的空間。
後來 SUN 推出了類似於 ASP 的鑲嵌型的 JSP,把 JSP TAG 鑲嵌到 HTML 語句中,這樣,就大大簡化和方便了網頁的設計和修改。新型的網路語言如 ASP,PHP,JSP 都是鑲嵌型的語言。 這是 JSP 和 Servlet 區別的運作原理層面。
從網路三層結構的角度看 JSP 和 Servlet 的區別,一個網路專案最少分三層:data layer(資料層),business layer(業務層),presentation layer(表現層)。當然也可以更復雜。Servlet 用來寫 business layer 是很強大的,但是對於寫 presentation layer 就很不方便。JSP 則主要是為了方便寫 presentation layer 而設計的。當然也可以寫 business layer。習慣了 ASP,PHP,CGI的朋友,經常會不自覺的把 presentation layer 和 business layer 混在一起。
據 SUN 自己的推薦,JSP中應該僅僅存放與 presentation layer 有關的東西,也就是說,只放輸出 HTML 網頁的部分。而所有的資料計算,資料分析,資料庫聯結處理,統統是屬於 business layer,應該放在 Java BEANS 中。通過 JSP 呼叫 Java BEANS,實現兩層的整合。
微軟前不久推出的 DNA 技術,是 ASP+COM/DCOM 技術。與J SP+BEANS 完全類似,所有的 presentation layer 由 ASP 完成,所有的 business layer 由 COM/DCOM 完成。通過呼叫,實現整合。
採用這些元件技術單純的因為 ASP/JSP 語言是非常低效率執行的,如果出現大量使用者點選,純 SCRIPT 語言很快就到達了他的功能上限,而元件技術就能大幅度提高功能上限,加快執行速度。
另外一方面,純 SCRIPT 語言將 presentation layer 和 business layer 混在一起,造成修改不方便,並且程式碼不能重複利用。如果想修改一個地方,經常會牽涉到十幾頁 code,採用元件技術就只改元件就可以了。
綜上所述,Servlet 是一個早期的不完善的產品,寫 business layer 很好,寫 presentation layer 就很臭,並且兩層混雜。
所以,推出JSP+BEAN,用 JSP 寫 presentation layer,用 BEAN 寫 business layer。SUN 自己的意思也是將來用 JSP 替代 Servlet。這是技術更新方面 JSP 和 Servlet 的區別。
可是,這不是說,學了 Servlet 沒用,實際上,你還是應該從 Servlet 入門,再上 JSP,再上 JSP+BEAN。
強調的是:學了JSP,不會用 Java BEAN 並進行整合,等於沒學。大家多花點力氣在 JSP+BEAN 上。
我們可以看到,當 ASP+COM 和 JSP+BEAN 都採用元件技術後,所有的元件都是先進行編譯,並駐留記憶體,然後快速執行。所以,大家經常吹的 Servlet/JSP 先編譯駐記憶體後執行的速度優勢就沒有了。
反之,ASP+COM+IIS+NT 緊密整合,應該會有較大的速度優勢呈現。而且,ASP+COM+IIS+NT 開發效率非常高,雖然bug 很多。
那麼,為什麼還用 JSP+BEAN?因為 Java 實在前途遠大。作業系統群雄並起,應用軟體的開發商必定要找一個通用開發語言進行開發,Java 一統天下的時機就到了。
簡單分析了一下 JSP 和 Servlet 的區別和 Java Web 開發方面的發展。隨著機器速度越來越快,Java 的速度劣勢很快就可以被克服。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007020/viewspace-2850341/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Servlet、HTTP詳細解釋!ServletHTTP
- Servlet第二篇【Servlet呼叫圖、Servlet細節、ServletConfig、ServletContext】ServletContext
- Servlet 新手教程Servlet
- 站在巨人的肩膀上看Servlet——原來如此(更適合初學者認識Servlet)Servlet
- servlet的url-pattern匹配規則詳細描述Servlet
- 一遍部落格帶你上手ServletServlet
- servlet知識總結Servlet
- JavaWeb中的Tomcat,Servlet詳解JavaWebTomcatServlet
- Servlet 教程——檢視閱讀Servlet
- jsp進階教程和ServletJSServlet
- 基於servlet+原生dbc的登入案例(含servlet知識點梳理)Servlet
- Servlet 規範和 Servlet 容器Servlet
- Servlet系列:(一)servlet原理剖析Servlet
- 96.Servlet Servlet生命週期Servlet
- Servlet基礎教程之呼叫流程Servlet
- Java-Servlet知識總結JavaServlet
- Servlet基礎知識點整理Servlet
- 初識Javaweb之Servlet以及TomcatJavaWebServletTomcat
- Java Web(5)-Servlet詳解(下)JavaWebServlet
- Java Web(5)-Servlet詳解(上)JavaWebServlet
- 三分鐘帶你解析Hive中的json字串(詳細!)HiveJSON字串
- 超詳細mac新手教程,讓你離熟練操作mac只需十分鐘!Mac
- JavaWEB - ServletJavaWebServlet
- JavaWeb——ServletJavaWebServlet
- Servlet概述Servlet
- Servlet基礎教程之生命週期Servlet
- Servlet的實現Servlet
- Spring WebFlux效能真的超過Spring Servlet ? - GavinSpringWebUXServlet
- TIM開啟你可能認識的人的詳細操作步驟
- 帶你真正認識ViewView
- 5分鐘部署一個Hello World Servlet到CloudFoundryServletCloud
- Servlet入門Servlet
- 初學ServletServlet
- Servlet 規範Servlet
- Java之ServletJavaServlet
- Servlet-HelloWorldServlet
- Servlet筆記Servlet筆記
- Servlet_6Servlet