Servlet總結
1.Servlet負責用來在服務器端處理用戶的請求,當客戶端發送一個請求給服務器,服務器通過web.xml配置文件找到相應的Servlet,從而處理這個請求。一個servlet要和URL綁定在一起,用戶通過訪問URL訪問servlet。
2.實現servlet的三種方式
Java.servlet.Sertvlet類
Java.servlet.GenericServlet類
Java.servlet.HttpServlet類
3.servlet接口中的方法
//初始化
void init (ServletConfig config)
void service(ServletRequest request,ServletResponse response)
//銷燬
void destroy()
String getServletInfo()
ServletConfig getServletConfig()
客戶端發出一個請求,服務器會通過URL找到相應的Servlet,如果這個Servlet對象不存在,服務器會創建Servlet對象
創建對象之後,服務器立刻調用init(ServletConfig config)完成初始化工作,之後服務器調用
Servlet的service(ServletRequest req, ServletResponse res)方法,這時需要給它傳遞參數request和response。
當客戶端再次訪問這個Servlet時,因爲Servlet對象已經存在,就不會在創建它了。Servlet是單例的。
(備註:單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱爲單例類的特殊類。通過單例模式可以保證系統中一個類只有一個實例而且該實例易於外界訪問,從而方便對實例個數的控制並節約系統資源。如果希望在系統中某個類的對象只能存在一個,單例模式是最好的解決方案。)
當服務器需要銷燬Servlet對象時,會首先調用destroy()完成一些資源的釋放工作,然後銷燬對象
4.在web.xml中配置servlet
<servlet>
<servlet-name>
HelloWorldServlet
</servlet-name>
<servlet-class>
cn.edu.aynu.rjxy.servlet.HelloWorldServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
HelloWorldServlet
</servlet-name>
<url-pattern>
/helloWorld
</url-pattern>
</servlet-mapping>
配置就是讓URL和Serlvet綁定在一起,當用戶訪問時就會找到相應的Servlet完成請求處理。
5.ServletConfig: init()方法的參數,它表示Servlet配置對象,它對應的Servlet的配置信息,
其實配置信息就是web.xml文件中的<servlet>元素。
<servlet>
<servlet-name>
HelloServlet
</servlet-name>
<servlet-class> cn.edu.aynu.rjxy.servlet.HelloServlet
</servlet-class>
</servlet>
ServletConfig對象是由服務器創建的,當服務器調用init()方法時當做實參傳遞給方法init(),
我們就可以在init()方法中使用它。
(1)String getInitParameter(String name):用來獲取在web.xml中配置的初始化參數,通過參數名獲取參數值。
(2)Enumeration getInitParameterNames():用來獲取在web.xml中配置的所有初始化參數名。
(3)ServletContext getServletContext():用來返回ServletContext對象
(4)String getServletName():用來返回Servlet在web.xml中配置名稱,即<servlet-name>元素指定的名稱
<init-param>
<param-name>school</param-name>
<param-value>aysfxy</param-value>
</init-param>
<init-param>
<param-name>major</param-name>
<param-value>java</param-value>
</init-param>
<init-param>
<param-name>class1</param-name>
<param-value>2</param-value>
</init-param>
運行結果:
對象已經創建,立刻完成初始化
school=aysfxy
major=java
class1=2
school=aysfxy
class1=2
major=java
school=aysfxy
major=java
class1=2
school=aysfxy
class1=2
major=java
6. GenericServlet:它是一個實現了javax.servlet.Servlet接口的抽象類,繼承這個類也可以實現Servlet.
類中的getServletContext()、getInitParameter()等方法可以直接使用,如果想做一些初始化參數的工作,
不要去重寫方法init(ServletConfig config),而是要去重寫方法 init()
HttpServlet:它是一個專門用於處理Http協議請求的Servlet類,我們可以通過繼承HttpServlet實現Servlet
這是一種最簡單的方式,我們今後都這樣做,因爲客戶端發送來的請求只有get和post兩種方式.因此我們只需要重寫這兩個方式即可。
7.HttpServlet:它是一個專門用於處理Http協議請求的Servlet類,我們可以通過繼承HttpServlet實現Servlet
這是一種最簡單的方式,我們今後都這樣做,因爲客戶端發送來的請求只有get和post兩種方式
因此我們只需要重寫這兩個方式即可。