1. 程式人生 > >servlet的開發部署流程

servlet的開發部署流程

1.在%TOMCAT_HOME%/webapps下WEB-INF的資料夾,寫一個檔案web.xml(該網站的配置資訊),建立一個classes的子資料夾,也可以從別的目錄ROOT下拷貝。下面是web.xml配置檔案:

<servlet>
<!—給servlet取名,可以隨意取名-->
<servlet-name>hello</servlet-name>
<!—指明servlet的路徑,就是servlet的包+類名-->
<servlet-class>com.test.Hello</servlet-class>
</servlet>
<servlet-mapping>
<!—給servlet取名,可以隨意取名-->
<servlet-name>hello</servlet-name>
<!—瀏覽器中輸入的url,可以隨意取名-->
<url-pattern>/hello<url-pattern>
</servlet-mapping>

2.開發servlet(引入Tomcat資料夾下lib資料夾裡的servlet-api.jar)
3.部署你的servlet
4.啟動Tomcat,訪問你的servlet,在瀏覽器的位址列中輸入:http://127.0.0.1:8080/myWebSite/hello回車就可以看到servlet的輸出
servlet的生命週期
servlet部署在容器裡(我們使用的是Tomcat,也可是別的,比如jboss,weblogic。。。),它的生命週期由容器來管理。
servlet的生命週期分為以下幾個階段:
1.裝載servlet,由相應的容器來完成
2.建立一個servlet例項
3.呼叫servlet的init()方法,該方法只會在第一次訪問servlet時被呼叫一次
4.服務:呼叫servlet的service()方法,一般業務邏輯在這裡處理,該方法在訪問該servlet時,會被呼叫
5.銷燬:呼叫servlet的destroy()方法,銷燬該servlet例項,該方法在以下情況被呼叫:
a)tomcat關閉
b)reload該webapps
c)重新啟動電腦

開發servlet的方法
三種方法:
1.實現servlet介面
該介面定義了5個方法
2.繼承GenericServlet
通過GenericServlet去開發servlet,只需要重寫service方法,相對來說要簡單一些。
3.繼承HttpServlet
通過HttpServlet去開發servlet,需要重寫doGet、doPost方法,這是目前用的最多的一種方法。

首先明確,Servlet並不是專門用於處理Http請求的。然後再說三種方式的聯絡和區別。
1)原生Servlet介面

複製程式碼
package javax.servlet;  
import java.io.IOException;  
  
public interface Servlet {  
  
    public void init(ServletConfig config) throws ServletException;  
      
    public ServletConfig getServletConfig();  
      
    public void service(ServletRequest req, ServletResponse res)  
    throws ServletException, IOException;  
      
    public String getServletInfo();  
  
    public void destroy();  
}
複製程式碼

可以看到Servlet介面是定義在javax.servlet包中,該介面定義了5個方法。
init() :在Servlet例項化之後,Servlet容器會呼叫init()方法,來初始化該物件,主要是為了讓Servlet物件在處理客戶請求之前可以完成一些初始化工作,比如:建立資料庫的連線,獲取配置資訊。
service():容器呼叫service()方法來處理客戶端的請求。
destroy():當容器檢測到一個Servlet物件應該從伺服器中被移除的時候,容器會呼叫該物件的destroy方法,以便讓Servlet物件可以釋放它所使用的資源,儲存資料到持久化儲存裝置中,例如:將記憶體中的資料儲存到資料庫中,關閉資料庫的連線。

2)GenericServlet
為什麼會出現GenericServlet?如果我們直接通過實現Servlet介面來編寫一個Servlet類,就需要實現Servlet介面中定義的5種方法,為了簡化Servlet的編寫,在javax.servlet包中,給我們提供了一個抽象的類GenericServlet,它提供了除service()方法外的其他4種方法的簡單實現。GenericServlet類定義了一個通用的,不依賴具體協議的Servlet。

3)HttpServlet
由於大多數網路應用中,都是瀏覽器通過HTTP協議去訪問伺服器資源,而我們編寫的Servlet也主要是應用於HTTP協議的請求和響應,為了快速開發應用於HTTP協議的Servlet,Sun公司在javax.servlet.http包中給我們提供了一個抽象的類HttpServlet,他繼承自GenericServlet類,用於建立適合Web站點的HTTP Servlet。