Servlet 關鍵物件和設定介紹

我們上次提到Servlet其實是一個API,因此讓有實作這個API的Class能夠和Container結合,由Container來manage成為一個網站。那麼,我們就會需要對Servlet的物件有些瞭解才能夠開始開發網站。

我們知道Http有不同的訪問方式,通常來說最常見的兩個是Get和Post。Get通常用來取得資料,而Post用來傳資料。Servlet對於這些訪問方式有定義對應的method,讓我們接到不同的訪問方式有不同的處理方法。因此,他們使用do{xxx}的方式表示對應的訪問方式。例如,要處理Get的地方,就在method doGet裡面去處理,同理,如果要處理Post,就在method doPost來處理。

前言

在上一篇介紹了Servlet之後,我們就要來看看如何實際開始使用它。

使用Servlet物件

我們上次提到Servlet其實是一個API,因此讓有實作這個API的Class能夠和Container結合,由Container來manage成為一個網站。那麼,我們就會需要對Servlet的物件有些瞭解才能夠開始開發網站。

我們知道Http有不同的訪問方式,通常來說最常見的兩個是Get和Post。Get通常用來取得資料,而Post用來傳資料。Servlet對於這些訪問方式有定義對應的method,讓我們接到不同的訪問方式有不同的處理方法。因此,他們使用do{xxx}的方式表示對應的訪問方式。例如,要處理Get的地方,就在method doGet裡面去處理,同理,如果要處理Post,就在method doPost來處理。

題外話:在java裡面和javascript一樣,method通常都是小寫開頭。

那我們知道了每一個訪問方式的入口以後,我們也需要能夠取得http裡面對應的內容。因此,上面那幾個method(do{xxx}),都會代入兩個參數供我們使用,一個是HttpServletRequestHttpServletResponse

從上面的名字可以看出兩個所有的作用,一個代表進來的Request,一個代表返回的Response。Request就可以取得進來的資料例如Query String,而Response就是我們想要返回的。

設定Servlet連接

那到目前為止,我們有足夠的訊息能夠處理進來的Request並且返回對應的內容,但是我們還沒有看到如何進入我們這個頁面。一個網站裡面一定有很多頁面,那麼如何把一個Servlet從另一個Servlet區分呢?就需要靠設定檔。

基本上會有一個Web.xml檔案(或者可以用annotation的方式設定),告訴我們的Container(例如Tomcat)當某一個路徑進來的時候,請呼叫哪一個Servlet來處理。

設定來說基本分兩段:

  1. servlet
  2. servlet-mapping

servlet

這裡面的設定比較像servlet的對應。

這個裡面一定會有包含兩個element:

  1. servlet-name:表示代表這個servlet的名字,方便其他部份reference。在整個web.xml是不可以重複的。
  2. servlet-class:代表著這個servlet的Class名稱。這邊需要Fully Qualified Name(.net說法,不知道java是不是也這樣叫), 也就是包含package(.net 裡面的Namespace)名稱

那servlet下面還可以代入預設參數。這個意思是,我們可以再處理request的時候,透過getInitParameter()的方式讀取一些預設在這邊的參數。

格式是init-para表示一個參數,而其下面則是param-nameparam-value代表著key, Value。

servlet設定範例

  
    TestServlet
    com.sample.servlet.TestServlet
    
      default
      this is a default value
    
  

上面代表有一個servlet名稱為TestServlet,它的clas是com.sample.servlet.TestServlet,同時它的預設有一個稱為default,數值為this is a default value。

servlet-mapping

這個部份是要設定什麼路徑使用什麼Servlet。

他有兩個基本element:

  1. servlet-name:那一個servlet要對應到(上面設定servlet-name的對應)
  2. url-pattern:相對路徑下面所要對應。裡面可以使用*等於wildcard。

servlet-mapping設定範例

  
    TestServlet
    /TestServlet
  

表示只要url進來對應為/TestServlet,就使用在servlet定義的那個servlet-class作為處理的object。

結語

上一篇講的是比較抽象的Servlet,這一篇介紹了一些Servlet的物件讓我們能夠處理進來的request,和如何設定Servlet。下一篇就真的寫code了。

(本來這一篇想要開始寫範例程式,不過發現時間有些不夠,因此只能放到下一篇。)


Google+

創用 CC 授權條款
Alan Tsai 的隨手筆記Alan Tsai製作,以創用CC 姓名標示 4.0 國際 授權條款釋出。