クラス ServletForwardingController

実装されたすべてのインターフェース:
AwareBeanNameAwareApplicationContextAwareServletContextAwareController

public class ServletForwardingController extends AbstractController implements BeanNameAware
名前付きサーブレット、つまり URL パスマッピングではなく、web.xml の "servlet-name" に転送する Spring コントローラーの実装。ターゲットサーブレットは、そもそも web.xml に「サーブレットマッピング」を必要としません。「サーブレット」宣言で十分です。

Spring のディスパッチインフラストラクチャを介して既存のサーブレットを呼び出す場合に便利です。たとえば、Spring HandlerInterceptors をそのリクエストに適用する場合などです。これは、サーブレットフィルターをサポートしない最小限のサーブレットコンテナーでも機能します。

:web.xml、すべての "/myservlet" リクエストを Spring ディスパッチャーにマッピングします。カスタムの "myServlet" も定義しますが、サーブレットマッピングはありません。

 <servlet>
   <servlet-name>myServlet</servlet-name>
   <servlet-class>mypackage.TestServlet</servlet-class>
 </servlet>

 <servlet>
   <servlet-name>myDispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 </servlet>

 <servlet-mapping>
   <servlet-name>myDispatcher</servlet-name>
   <url-pattern>/myservlet</url-pattern>
 </servlet-mapping>
: myDispatcher-servlet.xml は、"/myservlet" をサーブレット(サーブレット名で識別)に転送します。このようなリクエストはすべて、構成済みの HandlerInterceptor チェーン(OpenSessionInViewInterceptor など)を経由します。サーブレットの観点からは、すべてが通常どおり機能します。
 <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="interceptors">
     <list>
       <ref bean="openSessionInViewInterceptor"/>
     </list>
   </property>
   <property name="mappings">
     <props>
       <prop key="/myservlet">myServletForwardingController</prop>
     </props>
   </property>
 </bean>

 <bean id="myServletForwardingController" class="org.springframework.web.servlet.mvc.ServletForwardingController">
   <property name="servletName"><value>myServlet</value></property>
 </bean>
導入:
1.1.1
作成者:
Juergen Hoeller
関連事項: