Servlet的一些細節
阿新 • • 發佈:2019-05-13
很多 都是 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的一些細節