クラス ServletWrappingController

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

public class ServletWrappingController extends AbstractController implements BeanNameAware, InitializingBean, DisposableBean
内部で管理するサーブレットインスタンスをラップする Spring コントローラーの実装。このようなラップされたサーブレットは、このコントローラーの外では認識されません。そのライフサイクル全体がここでカバーされています ( ServletForwardingController とは対照的です)。

Spring のディスパッチインフラストラクチャを介して既存のサーブレットを呼び出す場合、たとえば、Spring HandlerInterceptors をそのリクエストに適用する場合に便利です。

Struts には、サーブレットマッピングを見つけるために web.xml を解析するという特別な要件があることに注意してください。このコントローラーで DispatcherServlet のサーブレット名を "servletName" として指定する必要があります。そうすることで、Struts は DispatcherServlet のマッピング (ActionServlet を参照するものとみなして) を見つけます。

: DispatcherServlet XML コンテキストは、"*.do" を ServletWrappingController でラップされた Struts ActionServlet に転送します。このようなリクエストはすべて、構成された HandlerInterceptor チェーン (たとえば、OpenSessionInViewInterceptor) を通過します。Struts の観点からは、すべてが通常どおりに機能します。

<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="*.do">strutsWrappingController</prop>
    </props>
  </property>
</bean>

<bean id="strutsWrappingController" class="org.springframework.web.servlet.mvc.ServletWrappingController">
  <property name="servletClass">
    <value>org.apache.struts.action.ActionServlet</value>
  </property>
  <property name="servletName">
    <value>action</value>
  </property>
  <property name="initParameters">
    <props>
      <prop key="config">/WEB-INF/struts-config.xml</prop>
    </props>
  </property>
</bean>
導入:
1.1.1
作成者:
Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • ServletWrappingController

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

    • setServletClass

      public void setServletClass(ClassSE<? extends jakarta.servlet.Servlet> servletClass)
      ラップするサーブレットのクラスを設定します。jakarta.servlet.Servlet を実装する必要があります。
      関連事項:
      • Servlet
    • setServletName

      public void setServletName(StringSE servletName)
      ラップするサーブレットの名前を設定します。デフォルトは、このコントローラーの Bean 名です。
    • setInitParameters

      public void setInitParameters(PropertiesSE initParameters)
      サーブレットがラップする init パラメーターを名前と値のペアとして指定します。
    • 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 名(サフィックスなし)を抽出します。
    • afterPropertiesSet

      public void afterPropertiesSet() throws ExceptionSE
      ラップされたサーブレットインスタンスを初期化します。
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      例外:
      ExceptionSE - 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
      関連事項:
      • Servlet.init(jakarta.servlet.ServletConfig)
    • handleRequestInternal

      protected @Nullable ModelAndView handleRequestInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE
      ラップされたサーブレットインスタンスを呼び出します。
      次で指定:
      クラス AbstractControllerhandleRequestInternal 
      例外:
      ExceptionSE
      関連事項:
      • Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)
    • destroy

      public void destroy()
      ラップされたサーブレットインスタンスを破棄します。
      次で指定:
      インターフェース DisposableBeandestroy 
      関連事項:
      • Servlet.destroy()