Strutsとservletが共存できない問題解決方法

2960 ワード

一つのプロジェクトの中で、Struts 2を使ってServletを使ったら、プロジェクトの運行時にServletに正常にアクセスできないかもしれません。Strutsのフィルタを配置する時に、すべての要求をブロックしました。

<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
以下はservletの構成です。

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>com.itmyhome.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
私達がページで要求を出す時、struts 2はすべての要求を阻止します。servlet要求に対して正常に対応できなくなります。
エラーメッセージは、HTTP Stuts 404-The re isのアクションmapped for namespace/and action name MyServletです。
これはstruts 2がservletをactionにしたからです。servletとactionは全部拡張子がないからです。
解決方法:
三つの方法を紹介します。
方法1:
servletの後に.servletの最後を加えて、web.xmlプロファイルとページ上でservletを使うところを含みます。

<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/MyServlet.servlet</url-pattern> <!-- MyServlet.hello       -->
</servlet-mapping>
ページアクセスhttp://localhost:8080/project/MyServlet.servlet
方法2:
struts.xmlにおけるノードの下にstruts 2処理の要求のサフィックス定数を追加する:

<constant name="struts.action.extension" value="action" />
この属性は、Struts 2処理が必要な要求の後綴りを指定し、この属性のデフォルト値はactionであり、すなわち全ての整合*.actionの要求はStruts 2によって処理される。
ユーザーが複数の要求の拡張子を指定する必要がある場合、複数の拡張子の間は英語のコンマ(,)で区切られます。
方法3:
web.xmlでstruts 2ブロックページ要求の設定を変更します。
もとの

<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>
に変更する

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/admin/*</url-pattern>
</filter-mapping>
servletの要求経路は変更されません。
締め括りをつける
以上はStrutsとservletが共存できない問題解決方法についての全部です。みんなを歓迎します。Struts 2アップロードファイルのサイズ制限方法の解析を修正します。を参照してください。 、 struts 2開発プロセスと詳細配置などです。問題があったらいつでもメッセージを残してください。