クラス ServletForwardingController

実装されているすべてのインターフェース:
Aware, BeanNameAware, ApplicationContextAware, ServletContextAware, Controller

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
関連事項:
  • コンストラクターの詳細

    • ServletForwardingController

      public ServletForwardingController()
  • メソッドの詳細

    • setServletName

      public void setServletName(StringSE servletName)
      転送するサーブレットの名前、つまり web.xml 内のターゲットサーブレットの "servlet-name" を設定します。

      デフォルトは、このコントローラーの Bean 名です。

    • setBeanName

      public void setBeanName(StringSE name)
      インターフェースからコピーされた説明: BeanNameAware
      この Bean を作成した Bean ファクトリで Bean の名前を設定します。

      通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。

      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      name - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
    • handleRequestInternal

      protected @Nullable ModelAndView handleRequestInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE
      クラスからコピーされた説明: AbstractController
      テンプレートメソッド。サブクラスはこれを実装する必要があります。契約は handleRequest と同じです。
      次で指定:
      クラス AbstractControllerhandleRequestInternal 
      例外:
      ExceptionSE
      関連事項:
    • useInclude

      protected boolean useInclude(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      RequestDispatcher の include または forward メソッドのどちらを使用するかを決定します。

      インクルードリクエストを示すインクルード URI 属性がリクエストに含まれているかどうか、およびレスポンスがすでにコミットされているかどうかのチェックを実行します。どちらの場合も、転送が不可能になるため、インクルードが実行されます。

      パラメーター:
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      戻り値:
      インクルードには true、フォワードには false 
      関連事項: