0

Struts 2 と Spring MVC の両方が構成されています。私web.xmlは以下のように見えます。ファイルをアップロードするために REST URL にアクセスすると、Spring ではなく struts ディスパッチャが呼び出されます。

URL/rest/uploadfile/iec9.pdfが Struts Dispatcher に送られるのはなぜですか?

web.xml:

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

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

<servlet-mapping>
<servlet-name>springmvc-dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-dispatcher-servlet.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
<filter-name>jsonpCallbackFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
 
<filter-mapping>
<filter-name>jsonpCallbackFilter</filter-name>
<url-pattern>*.json</url-pattern>
</filter-mapping>

 
4

2 に答える 2

1

Roman の回答に加えて、同じプロジェクトで Struts と Spring MVC を構成する場合、struts 除外フィルターを使用するのが一般的です。リクエストが行われると、Struts はリクエストを処理しようとし、除外されると、Spring MVC が引き継ぎ、リクエストを処理します。Struts 除外フィルタは、struts.properties などのプロパティ ファイルに入れることができることに注意してください。多くの場合、ここで正規表現を使用して共通のフレーズを除外できます (クラス内のすべてのアクションまたはコントローラーが共通部分を共有している場合、正規表現を使用してすべてを除外できます)。

于 2019-01-07T16:25:58.810 に答える