2011-10-19 9 views
3

私はStruts1で自分のアプリケーションを使用しています。私はすべてのアクションでDispatchアクションを使用しています。どのように私がストラット2にシフトするのか、私のすべてのアクションとフォームビーンを変更するために何をすべきかを教えてください。Struts1からStruts2への移行

+4

としてアクションフィルタを作成します** [移行ガイドを読みます1〜Struts 2](http://struts.apache.org/2.2.3.1/docs/migration-guide.html#MigrationGuide-Struts1toStruts2)** – lschin

答えて

6

私は、この文書シリーズお勧めします:

最初のリンクは、トピックを説明し、第2のリンクの例があります。私はそこから取られた以下の説明はこう書いています

枠組み

最初の、そして最も重要な設定の設定、サーブレットコンテナのweb.xmlファイル内のWebアプリケーションフレームワークを可能にするものです。誰もがStrutsのために精通している必要があり

設定は次のとおりです。Struts2のために

<servlet> 
<servlet-name>action</servlet-name> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
<init-param> 
    <param-name>config</param-name> 
    <param-value>/WEB-INF/struts-config.xml</param-value> 
</init-param> 
<load-on-startup>2</load-on-startup> 
</servlet> 

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

非常にいくつかの変更があります。最も重要な点は、ディスパッチャがサーブレットフィルタからサーブレットフィルタに変更されたことです。構成は、サーブレットのと同じくらい簡単で、ここに示す:

<filter> 
<filter-name>webwork</filter-name> 
<filter-class> 
    org.apache.struts.action2.dispatcher.FilterDispatcher 
</filter-class> 
</filter> 

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

が要求ウォークスルー私たちはからStrutsとStruts2の間の相違点のいくつかについて話してアクション

を解体します上級。それをさらに深めて、各フレームワークのアクションの構造の違いを見てみましょう。

まずStrutsアクションの一般的な構造を見てみましょう。 Strutsアクションの一般的な形式は次のようになります。

パブリッククラスMyActionアクションは{ 公共のActionForwardは(ActionMappingのマッピング、 ActionFormのフォーム、 HttpServletRequestのリクエストを、 HttpServletResponseの応答) スロー例外{ //行う実行拡張します仕事 リターン(mapping.findForward( "success")); }}

Strutsアクションを実装するには、次の項目に注意する必要があります。

  • すべてのアクションは、アクションの基本クラスを拡張する必要があります。
  • すべてのアクションは、単一のアクションインスタンスのみが作成されるため、スレッドセーフでなければなりません。
  • アクションはスレッドセーフでなければならないため、アクションの処理に必要なすべてのオブジェクトがメソッドシグネチャで渡されます。
  • アクションの処理のために呼び出されるメソッドの名前は "execute"です(Strutsで使用可能なDispatchActionクラスがあります。これは、実行するメソッドを別のメソッドに同じアクションで再ルーティングできますが、フレームワークからアクションへの最初のエントリポイントはまだ "実行"メソッドです)。
  • ActionForwardの結果は、ActionMappingクラスのメソッドを使用して返されます。最も一般的なのは、 "findForward"メソッド呼び出しです。

これに対し、Struts2アクションは、実装がはるかに簡単です。あなたは気づいているかもしれません

public class MyAction { 
    public String execute() throws Exception { 
     // do the work 
     return "success"; 
    } 
} 

まず最初に、アクションが任意のクラスまたはインタフェースを拡張していないということです。ここでは次のようになります。実際、それはこれ以上に進んでいます。規約上、アクションの処理で呼び出されるメソッドは「実行」メソッドですが、必ずしもそうである必要はありません。メソッドのシグネチャpublic String methodName()に続くメソッドはすべて、コンフィグレーションを通じて呼び出すことができます。

最後に、元のStruts実装との最も革新的な違いは、アクションの処理で呼び出されるメソッド( "execute"メソッド)にパラメータがないことです。では、どうやって作業する必要があるオブジェクトにアクセスできますか?答えは、 "制御の反転"または "依存性注入"パターンです(詳細はMartin Fowlerの有益な記事はhttp://www.martinfowler.com/articles/injection.htmlです)。 Spring Frameworkではこのパターンが一般化していますが、Struts2(WebWork)の前身は同じ時間にパターンを使用し始めました。

0

あなた古いDispatchActionスタイルは、機能(またはあなたがずっと同じことを行うために、パラメータを使用しインターセプタを書くことができ)「メソッド名を渡す」漠然と-模倣するdynamic method invocationを使用することができます。

あなたはModelDrivensome docs)を実装することができますがない「フォームBean」自体は、Strutsの2ではありませんし、それフォームBeanのように動作します-of ソート

すべてのJSPは、Struts 1タグを使用している場合にのみ、書き直す必要があります。 JSTLタグのみを使用した場合、である必要はありません。

イーシンのリンクは、より詳細な情報を得るのに適しています。 Strutsの2.xの

0
  • :ストラット1.xのため*.action
  • としてディスパッチャアクションフィルタを作成します。Strutsの:*.do .
関連する問題