Strutsのトラブルシューティングメモ

Posted by & filed under STRUTS.

uebu: Strutsのトラブルシューティングメモ:
ここに書いてある原因と解決策はあくまで私がやったミスとその解決策であり、 その現象に対する原因や解決策がすべて書いてあるというわけではありませんのでご注意下さい!

  • フォワード先が空白になる
    ・mapping.findForward()で指定したフォワード名がstruts-config.xmlのActionの定義に書かれていない。
    ・Actionがexecuteメソッドをオーバーライドしていない。 またはメソッド名が間違っているため、正しくオーバーライドできていない。
    ・Actionのexecuteメソッドのシグネチャが異なるため、正しくオーバーライドできていない。
  • JSP文書にアクセスするとJavaScriptエラー
    ・html:formタグのfocus属性に書かれた名前の入力欄(プロパティ)が存在しない。
  • サーブレット action が利用できません
    ・struts-config.xmlの構文エラー、 またはcontrollerタグやpluginタグに記述したクラスがロードできないなどの理由で、 ActionServletの初期化に失敗している。 →サーブレットコンテナのログを見て、エラー原因を解消します。
  • パス /****** に対するリクエストは無効です
    ・html:formのaction属性(など)として指定したパスが、struts-config.xmlに定義されていない。
  • javax.servlet.ServletException: Exception creating bean of class …: {1}
    ・struts-config.xmlのform-beanに書いたクラスが存在しない。
    ・struts-config.xmlのform-beanに書いたクラスがActionFormを継承していない。
    ・struts-config.xmlのform-beanに書いたクラスがインスタンス化できない (例:抽象クラス、引数のないpublicのコンストラクタがない)
    ・struts-config.xmlのform-beanに記述するDynaActionFormなどのクラス階層が間違っている。 org.apache.struts.action.とorg.apache.struts.validator.に特に注意。
    ・DynaActionFormのつもりで間違ってActionFormと書いている。 ActionFormは抽象クラスなのでインスタンス化できません。
  • html:formの入力内容が自作Form

struct and MVC

Posted by & filed under STRUTS.

MVC–Struct:
モデル(Model:ビジネスロジック–JavaBeans–Javaのクラスで実装しても、EJBを用いて実装してもよい)
ビュー(View:プレゼンテーション–JSP)
コントローラ(Controller:モデルとビューを制御–サーブレット)
model2����

STRUCTSの基本動作
まず、ブラウザからHTTPリクエストが送られます。すると、コントローラであるSTRUTSのアクションサーブレット(STRUTS提供)は、指定のモジュールのリクエストプロセッサ(STRUTS提供するリクエスト処理を制御するクラス)へHTTPリクエストを転送します。リクエストプロセッサは、HTTPリクエスト中にフォーム情報がある場合、その情報を保持するためのアクションフォームBean(利用者が作成)にセットします。
リクエストとアクションフォームBeanの対応は、モジュール設定ファイル(structs-config.xml)に記述されています。すなわち、HTTPリクエスト内の入力フォームの情報を、Structsが自動的にBeanにセットします。
次に、HTTPリクエストのURLに対応したアクション(ビジネスロジックを呼び出すためのクラスで、利用者が作成する)を呼び出します。呼び出されたアクションでは、ビジネスロジックを実行します。次に、ビジネスロジックの結果などを表示するための情報をJavaBeansやActionFormBeanクラスにセットし、JSPからアクセス可能なコンテキスト保持させます。続いて、次にHTTPリクエストの処理を行うリソース(JSPページやアクションなど)の情報をActionForwardクラス(Strutsが提供)としてリクエストプロセッサに返却します。その後、アクションから返却されたActionForwardクラスが示すリソース(JSPページなど)を呼び出します。呼び出されたJSP内では、表示のために必要な情報をStrutsが提供するカスタムタグライブラリなどでコンテキストから取り出し、ページを作成します。
最後に、JSPによって作成されたページをHTTPレスポンスとして返却します。…