通常のサーブレットとSpring MVCのdispatcherServletをweb.xmlで定義しています(共存)。web.xml での Spring MVC の DispatcherServlet へのマッピングは「/admin/*」です。フォルダー構造「/ admin/...」の下のjspにrequest.getDispatcher()を転送する通常のサーブレットがあります。これは内部転送なので、Spring の DispatcherServlet は気付かれないと思います。Spring の DispatcherServlet はこれに気づき、この JSP へのマッピングが見つからないという例外を与えてくれました。
ここで実際に何が起こっているか知っている人はいますか?
更新: 申し訳ありませんが、質問を明確にしませんでした:
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().forward("/admin/...jsp") を呼び出すと、Spring は "/admin/...jsp" のマッピングが見つからないというエラーを報告します。request.getRequestDispatcher().forward("/admin/...jsp") を呼び出すと、サーブレット コンテナーが web.xml を再チェックし、Spring の DispatchServlet を介して再ルーティングするようになります。