1. 程式人生 > >Servlet的一些細節

Servlet的一些細節

很多 都是 deb let ngs 存在 所有 通配符 att

1

同一個Servlet可以被映射到多個URL上,即多個<servlet-mapping>元素的<servlet-name>子元素的設置值可以是同一個Servlet的註冊名

 1     <servlet>
 2         <servlet-name>HelloServlet</servlet-name>
 3         <servlet-class>HelloServlet</servlet-class>>
 4     </servlet>
 5     <servlet-mapping
> 6 <servlet-name>HelloServlet</servlet-name> 7 <url-pattern>/HelloServlet</url-pattern> 8 </servlet-mapping> 9 <servlet-mapping> 10 <servlet-name>HelloServlet</servlet-name> 11 <url-pattern>/HelloServlet2</
url-pattern> 12 </servlet-mapping> 13 <servlet-mapping> 14 <servlet-name>HelloServlet</servlet-name> 15 <url-pattern>/HelloServlet3</url-pattern> 16 </servlet-mapping>

意思就是可以用HelloServlet,HelloServlet2,HelloServlet3。都可以訪問HelloServlet這個Servlet類

2

在Servlet映射到的URL中也可以使用 * 通配符,但是只能有兩種固定的格式,一種是“ * . 擴展名”,另外一種格式是以正斜杠(/)開頭並以“ /* 結尾”。

3

缺省Servlet

  • 如果某個Servlet的映射路徑僅僅為一個正斜杠(/),那麽這個Servlet就成為當前Web應用程序的缺省Servlet
  • 凡是在web.xml文件種找不到匹配的<servlet-mapping>元素的URL,它們的訪問請求就交給缺省Servlet處理,也就是,缺省Servlet用於處理所有Servlet都不處理的訪問請求
  • 當訪問TomCat服務器中某個靜態HTML文件和圖片時,實際上是在訪問這個缺省Servlet

總結一下就是:瀏覽器訪問服務器的時候,不管URL裏面是什麽,其實都是訪問Servlet!當我們訪問的是存在的Servlet的時候就是做存在Servlet中的事,如果我們訪問的是不存在的Servlet或者其他如html,jsp等文件時,我們訪問的是缺省Servlet

 1     <servlet>
 2         <servlet-name>default</servlet-name>
 3         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
 4         <init-param>
 5             <param-name>debug</param-name>
 6             <param-value>0</param-value>
 7         </init-param>
 8         <init-param>
 9             <param-name>listings</param-name>
10             <param-value>false</param-value>
11         </init-param>
12         <load-on-startup>1</load-on-startup>
13     </servlet>
1     <servlet-mapping>
2         <servlet-name>default</servlet-name>
3         <url-pattern>/</url-pattern>
4     </servlet-mapping>

這裏就是TomCat中web.xml中對缺省Servlet的映射設置,所以當我們訪問不存在的Servlet,或者一些不是Servlet的文件時,我們訪問的都是缺省Servlet,通過這個缺省Servlet來幫助我們完成很多功能。

所以在開發中,我們千萬不要隨便配置缺省Servlet!!!

Servlet的一些細節