●struts2でxmlにできるだけ頼らずハローワールドするには
struts.xmlに沢山書きたくない!でもよくわからなくてハローできない…人向け
バージョンは2.2.1.1.で試した。
とりあえず参照jarを集めたりするのは面倒くさいので、
maven2で構築できるプロジェクト構成を用意した。
ただし、pom.xmlはそのままでは使えない。
I:\ECLIP\jre1.6\lib\tools.jarを自分の環境のtools.jarのパスに書き換えないとダメです。
maven2が使うコンパイラーを指定しないとダメなのです。
環境構築手順
前提としてm2eclipseがeclipseに導入されていること。(eclipseプラグインです。ぐぐって導入しよう)
AllInOneEclipseの3.6使用。(とりあえず同じにしておけば問題ないはず)
0.projectフォルダのpom.xmlのI:\ECLIP\jre1.6\lib\tools.jarを
自分のeclipseのtools.jarに書き換える。
1.パッケージエクスプローラーとかから、右クリックインポート
2.Maven→Existing Maven Projectsを選択。(検索テキストにmavenっていれればいい。)
3.参照→projectフォルダを指定。pom.xmlをチェックして完了。
コンソールにログが出る。Missing artifactとかの表示がなければOK。
4.プロジェクトを右クリック→プロパティ→ビルドパス→ライブラリー→JREを1.6に変更
5.同じくプロパティ→tomcat→Tomcatプロジェクトチェック。
コンテキスト名は/hoge
Webうんたらかんたらサブディレクトリーは/target/hogehoge
maven2ではpackageしたらtargetフォルダに成果ができるのです。
6.プロジェクト右クリック→実行→Maven package
ログがたくさんでてBUILD SUCCESSならOK。warファイルと実行可能なwarファイル構成を作ってくれる。
7.プロジェクト右クリック→Tomcatプロジェクト→コンテキスト定義を更新
8.tomcat起動。
9.ブラウザ起動。ここにアクセス。
10.i am index!ってページが開く。(index.jsp)
11./testリンクをクリックするとTestActionが実行され、test.jspが開く。
test.jspにはTestActionのhelloメソッドの結果がテキストボックスに表示されている。
終わり。
よくわかってない人がする解説。
struts2ではstruts.xmlにできるだけ設定を書かないようコーディングするものらしい?
↑で作った環境はstruts2-convention-pluginを使用した画面遷移制御方法を使っている。
conventionは画面遷移の制御にアノテーションとActionの命名、配置規則を使ったもの。
CodeBehindっていうのがあったが、今は非推奨になっていて、2.2.1.1.ではconventionが上位互換みたい。
これの他にもrestっていうのがあるみたい。restは多分、アノテーションすら使わず配置規則で全て制御する…?のかなぁ。
とりあえずconventionの規則はActionクラスはactionまたはstruts2パッケージの中にないとダメ。action.hoge.HogeActionとかはあり。
そしてActionクラス名は末尾にActionがつかないとダメ。
Actionクラスはその上、@Resultアノテーションを付ける必要がある。↑の環境だと
@Result(location="/content/test.jsp")とだけ指定している。
これはsuccessが返ったらそこに返すよ、という意味。name="success"はデフォルト値なのです。
複数の遷移先がある場合は@Resultsを使うみたい。
あとはweb.xmlにフィルタークラスの設定をする必要がある。
FilterDispatcherっていうクラスを指定。非推奨だけどこっち使うみたい。
Filter-mappingとかとりあえず全部OK?
ウェルカムファイルはルートURL指定したときに出すファイルのこと。
とりあえずこんだけ設定すればハローワールドできるみたいです。
色々新旧情報がごちゃごちゃあって、こんな簡単なことをするのに恐ろしく時間がかかった…
strtus2ではActionFormが消えうせて、かわりにActionにゲッターメソッドを定義して、それをjsp上でプロパティとして呼び出すようです。
終わり。