我在web.xml(共存)中定義了常規servlet和Spring MVC dispatcherServlet。在web.xml中映射到Spring MVC的DispatcherServlet是「/ admin/*」。我有一個正常的servlet,在一個文件夾結構「/ admin/...」下將一個request.getDispatcher()轉發給一個jsp。由於這是內部前鋒,我預計春季的調度員Servlet不會被注意到。事實證明,Spring的DispatcherServlet的確注意到了這一點,並且爲我找不到映射到這個JSP的一個提示。Spring MVC的奇怪行爲
有人知道這裏真的發生了什麼嗎?
更新:對不起,我沒有讓問題更加清晰:
我們有沒有使用Spring MVC現有的應用程序。我們決定保留原有功能,並添加Spring MVC以獲取其他新功能。
因此,這裏的web.xml中映射:
<servlet>
<servlet-name>springRouted</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/mvc-config.xml</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springRouted</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>existingServlet</servlet-name>
<url-pattern>existing.do</url-pattern>
</servlet-mapping>
如果ExistingServelt調用的request.getRequestDispatcher()向前( 「/管理/ ... JSP」),那麼Spring會報告錯誤無法找到「/admin/...jsp」的映射。它似乎調用request.getRequestDispatcher()。forward(「/ admin/... jsp」)將使servlet容器重新檢查web.xml並通過Spring的DispatchServlet重新路由。