web.xml servlet、servlet-mapping配置


Servlet 常稱為服務器端小程序,即運行在服務器端的程序,用於處理及響應客戶的請求

Servlet類 是個特殊的java類,繼承於HttpServlet

---------------------------------------------------------------

 

方法

客戶端通常只有GET和POST兩種請求方式,Servlet為了響應則兩種請求,必須重寫doGet()和doPost()方法。大部分時候,Servlet對於所有的請求響應都是完全一樣的,此時只需要重寫service()方法即可響應客戶端的所有請求。

另外,HttpServlet還有兩個方法:

(1). init(ServletConfig config):創建Servlet實例時,調用該方法的初始化Servlet資源。

(2). destroy():銷毀Servlet實例時,自動調用該方法的回收資源。

通常無需重寫init()和destroy()兩個方法,除非需要在初始化Servlet時,完成某些資源初始化的方法,才考慮重寫init()方法,如果重寫了init()方法,應在重寫該方法的第一行調用super.init(config),該方法將調用HttpServlet的init()方法。

如果需要在銷毀Servlet之前,先完成某些資源的回收,比如關閉數據庫連接,才需要重寫destory方法()。

 

---------------------------------------------------------------

 

Servlet創建時機

(1). 客戶端第一次請求某個Servlet時,系統創建該Servlet的實例,大部分Servlet都是這種Servlet。

(2). Web應用啟動時立即創建Servlet實例,即load-on-start Servlet

 

---------------------------------------------------------------

 

Servlet的生命周期

(1). 創建Servlet實例。

(2). Web容器調用Servlet的init()方法,對Servlet進行初始化。

(3). Servlet初始化后,將一直存在於容器中,用於響應客戶端請求,如果客戶端發送GET請求,容器調用Servlet的doGet()方法處理並響應請求;如果客戶端發送POST請求,容器調用Servlet的doPost()方法處理並響應請求。或者統一使用service()方法處理來響應用戶請求。

(4). Web容器決定銷毀Servlet時,先調用Servlet的destory()方法,通常在關閉Web應用時銷毀Servlet實例

 

---------------------------------------------------------------

 

Servlet配置

配置Servlet有兩種方式:

(1). 在Servlet類中使用@WebServlet Annotation進行配置。

(2). 在web.xml文件中進行配置。

我們用web.xml文件來配置Servlet為例

<servlet>

聲明一個Servlet

<icon>、<display-name>和<description>元素的用法和<filter>的用法相同。

<init-param>元素與<context-param>元素具有相同的元素描述符,可以使用<init-param>子元素將初始化參數名和參數值傳遞給Servlet,

<description>:為Servlet指定一個文本描述。

<display-name>:為Servlet提供一個簡短的名字被某些工具顯示。

<icon>:為Servlet指定一個圖標,在圖形管理工具中表示該Servlet。

 

<servlet>必須含有<servlet-name>和<servlet-class>,或者<servlet-name>和<jsp-file>。 描述如下:

1). <servlet-name>用來定義servlet的名稱,該名稱在整個應用中必須是惟一的。

2). <servlet-class>用來指定servlet的完全限定的名稱

3). <jsp-file>用來指定應用中JSP文件的完整路徑。這個完整路徑必須由/開始。

備注:JSP文件可以被編譯成Servlet

<load-on-startup>

如果load-on-startup元素存在,而且也指定了jsp-file元素,則JSP文件會被重新編譯成Servlet,同時產生的Servlet也被載入內存。

<load-on-startup>的內容可以為空,或者是一個整數。這個值表示由此servlet被Web容器載入內存的順序,小的會被先加載

例如:有兩個Servlet元素都含有<load-on-startup>子元素,則<load-on-startup>子元素值較小的Servlet將先被加載。

如果<load-on-startup>子元素值為空或負值,則由Web容器決定什么時候加載Servlet。如果兩個Servlet的<load-on-startup>子元素值相同,則由Web容器決定先加載哪一個Servlet。<load-on-startup>1</load-on-startup>表示啟動容器時,初始化Servlet。

 

---------------------------------------------------------------

 

Servlet-mapping配置 

<servlet-mapping>

1). <servlet-name>:Servlet的名字,與<servlet>元素中聲明的名字一致。

2). <url-pattern>:指定相對於Servlet的URL的路徑。該路徑相對於web應用程序上下文的根路徑。<servlet-mapping>將URL模式映射到某個Servlet,即該Servlet處理的URL。

 

---------------------------------------------------------------

 

加載Servlet的過程 

容器的Context對象對請求路徑(URL)做出處理,去掉請求URL的上下文路徑后,按路徑映射規則和Servlet映射路徑(<url- pattern>)做匹配,如果匹配成功,則調用這個Servlet處理請求。 
 

---------------------------------------------------------------

 

ServletConfig

訪問Servlet配置參數通過ServletConfig對象來完成,ServletConfig提供如下方法:

java.lang.String.getInitParameter(java.lang.String name):用於獲取初始化參數

ServletConfig獲取配置參數的方法和ServletContext獲取配置參數的方法完全一樣,只是ServletConfig是取得當前Servlet的配置參數,而ServletContext是獲取整個Web應用的配置參數。
 

---------------------------------------------------------------

 

引入springmvc.xml

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

 

 
例子:
<servlet>  
    <servlet-name>business</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <init-param>  
      <param-name>publishContext</param-name>  
      <param-value>false</param-value>  
    </init-param>  
    <load-on-startup>1</load-on-startup>  
</servlet>  
<!-- </span><span style="font-family:SimSun;">用戶登出</span><span style="font-family:Times New Roman;"> -->  
<servlet>  
    <servlet-name>LogOutServlet</servlet-name>  
    <servlet-class>com.yonyou.mcloud.cas.web.servlet.LogOutServlet</servlet-class>  
    <init-param>  
      <param-name>serverLogoutUrl</param-name>  
      <param-value>https://dev.yonyou.com:443/sso-server/logout</param-value>  
    </init-param>  
    <init-param>  
      <param-name>serverName</param-name>  
      <param-value>http://10.1.215.40:80/business/</param-value>  
    </init-param>  
</servlet>  
<!--****************************servlet</span><span style="font-family:SimSun;">映射關系配置</span><span style="font-family:Times New Roman;">*************************-->  
<servlet-mapping>  
    <servlet-name>LogOutServlet</servlet-name>  
    <url-pattern>/logout</url-pattern>  
</servlet-mapping>  
<servlet-mapping>  
    <servlet-name>business</servlet-name>  
    <url-pattern>/</url-pattern>  
</servlet-mapping>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM