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的輸出
3.部署你的servlet
4.啟動Tomcat,訪問你的servlet,在瀏覽器的地址欄中輸入:http://127.0.0.1:8080/myWebSite/hello回車就可以看到servlet的輸出
servlet的生命周期
servlet部署在容器里(我們使用的是Tomcat,也可是別的,比如jboss,weblogic。。。),它的生命周期由容器來管理。
servlet的生命周期分為以下幾個階段:
servlet的生命周期分為以下幾個階段:
2.創建一個servlet實例
3.調用servlet的init()方法,該方法只會在第一次訪問servlet時被調用一次
4.服務:調用servlet的service()方法,一般業務邏輯在這里處理,該方法在訪問該servlet時,會被調用
5.銷毀:調用servlet的destroy()方法,銷毀該servlet實例,該方法在以下情況被調用:
a)tomcat關閉
b)reload該webapps
c)重新啟動電腦
開發servlet的方法
三種方法:
1.實現servlet接口
1.實現servlet接口
該接口定義了5個方法
2.繼承GenericServlet
2.繼承GenericServlet
通過GenericServlet去開發servlet,只需要重寫service方法,相對來說要簡單一些。
3.繼承HttpServlet
3.繼承HttpServlet
通過HttpServlet去開發servlet,需要重寫doGet、doPost方法,這是目前用的最多的一種方法。
首先明確,Servlet並不是專門用於處理Http請求的。然后再說三種方式的聯系和區別。
1)原生Servlet接口
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。
為什么會出現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。
由於大多數網絡應用中,都是瀏覽器通過HTTP協議去訪問服務器資源,而我們編寫的Servlet也主要是應用於HTTP協議的請求和響應,為了快速開發應用於HTTP協議的Servlet,Sun公司在javax.servlet.http包中給我們提供了一個抽象的類HttpServlet,他繼承自GenericServlet類,用於創建適合Web站點的HTTP Servlet。