iT邦幫忙

DAY 5
2

C# Web 開發 跳到 Java Web開發系列 第 5

Servlet 關鍵物件和設定介紹

  • 分享至 

  • xImage
  •  

在上一篇介紹了Servlet之後,我們就要來看看如何實際開始使用它。
(和我部落格同時發佈:http://www.dotblogs.com.tw/alantsai/archive/2013/09/27/120927.aspx
使用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}),都會代入兩個參數供我們使用,一個是HttpServletRequest和HttpServletResponse。

從上面的名字可以看出兩個所有的作用,一個代表進來的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-name和param-value代表著key, Value。

servlet設定範例

<SERVLET>   
<SERVLET-NAME>TestServlet</SERVLET-NAME>   
<SERVLET-CLASS>com.sample.servlet.TestServlet</SERVLET-CLASS>   
<INIT-PARAM>     
  <PARAM-NAME>default</PARAM-NAME>    
  <PARAM-VALUE>this is a default value</PARAM-VALUE>  
 </INIT-PARAM> 
</SERVLET> 

上面代表有一個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設定範例

<SERVLET-MAPPING>   
<SERVLET-NAME>TestServlet</SERVLET-NAME>   <URL-PATTERN>/TestServlet</URL-PATTERN> 
</SERVLET-MAPPING> 

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

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

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


上一篇
Java web 開發的核心 - Servelet
下一篇
Servlet - 使用預設參數
系列文
C# Web 開發 跳到 Java Web開發27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言