spring DispatcherServlet可以配置多個嗎

  
使用Spring MVC,配置DispatcherServlet是第一步。
DispatcherServlet是一個Servlet,所以可以配置多個DispatcherServlet。
DispatcherServlet是前置控制器,配置在web.xml文件中的。攔截匹配的請求,Servlet攔截匹配規則要自已定義,把攔截下來的請求,依據某某規則分發到目標Controller(我們寫的Action)來處理。
“某某規則”:是根據你使用了哪個HandlerMapping接口的實現類的不同而不同。
先來看第一個例子:
Xml代碼

<load-on-startup>1</load-on-startup>是啓動順序,讓這個Servlet隨Servletp容器一起啓動。
<url-pattern>*.form</url-pattern>會攔截*.form結尾的請求。
<servlet-name>example</servlet-name>這個Servlet的名字是example,可以有多個DispatcherServlet,是通過名字來區分的。每一個DispatcherServlet有自己的WebApplicationContext上下文對象。同時保存的ServletContext中和Request對象中,關於key,以後說明。
在DispatcherServlet的初始化過程中,框架會在web應用的WEB-INF文件夾下尋找名爲[servlet-name]-servlet.xml的配置文件,生成文件中定義的bean。
第二個例子:
Xml代碼

指明瞭配置文件的文件名,不使用默認配置文件名,而使用springMVC.xml配置文件。
其中<param-value>**.xml</param-value>這裏可以使用多種寫法
1、不寫,使用默認值:/WEB-INF/<servlet-name>-servlet.xml
2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>
3、<param-value>classpath*:springMVC-mvc.xml</param-value>
4、多個值用逗號分隔
Servlet攔截匹配規則可以自已定義,Servlet攔截哪種URL合適?
當映射爲@RequestMapping("/user/add")時:
1、攔截*.do,例如:/user/add.do,弊端:所有的url都要以.do結尾。不會影響訪問靜態文件。
2、攔截/app/*,例如:/app/user/add,弊端:請求的url都要包含/app,@RequestMapping("/user/add")中不須要包含/app。
3、攔截/,例如:/user/add,弊端:對jpg,js,css靜態文件的訪問也被攔截不能正常顯示。後面有解決辦法。
4、攔截/*,可以走到Action中,但轉發到jsp時再次被攔截,不能訪問到jsp。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章