0

バックエンドとして JPA を使用する Spring MVC アプリケーションがあるとします。ここで、単純な UI をユーザーに提供して、いくつかのプロパティ ファイルに対して単純な構成を実行したいと考えています。一部の構成はSpring MVCに関連しているため、Spring MVCを介してメインUIでメインアプリケーションを起動すると失敗するため、メインのSpringアプリケーションとは別にすることは理にかなっています。

しかし、同じ Web アプリケーションに両方のサーブレット (Spring とプレーン JSP) を登録する方法は?

<!-- Handles Spring requests -->
<servlet>
    <servlet-name>SpringApplication</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>


<servlet-mapping>
    <servlet-name>SpringApplication</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>PlainJSPApplication</servlet-name> <!--Is it ok to separate request to different servlet like this?-->
    <servlet-class>com.app.plainJSP</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>PlainJSPApplication</servlet-name>
    <url-pattern>/config</url-pattern> <!--How to handle mapping so not conflict to Spring main application-->
</servlet-mapping>

SAMEweb.xmlに別のサーブレットクラスを登録するのが一般的だと思いますが、よろしいでしょうか?「/」がSpringサーブレットに割り当てられているため、そのリクエストURLパターンをどのように処理するのですか?

アドバイスをいただければ幸いです。

4

1 に答える 1

1

異なる URL パターンで両方をマッピングすることにより、Spring マネージド コントローラーと独自のサーブレットを分離できます。

Spring コントローラーへのリクエストは、DispatcherServletによって管理されます。基本的に、URLをマップすると、Springによって自動的に表示されるサーブレットであり、適切なコントローラー、ビューなどにマップされます.

web.xml

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>PlainJSPApplication</servlet-name> <!--Is it ok to separate request to different servlet like this?-->
        <servlet-class>com.app.plainJSP</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>PlainJSPApplication</servlet-name>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.bmk</url-pattern>
        <!-- other url pattern ... -->
        <!-- other url pattern ... -->
        <!-- other url pattern ... -->
    </servlet-mapping>

ここでは、.do で終わるすべてのリクエストが Spring によって認識されます。他のものは、サーブレットによって認識されます。

したがって、このマッピングを損なわない限り、Spring MVC と通常のサーブレットは正常に統合されます。

于 2013-07-23T07:11:24.940 に答える