struts.configが空っぽなことに衝撃をうけたSAStrutsの、リクエストの処理回りを読んでみた。
Eclipseで.classファイルダブルクリックで開いたらなぜか文字化けした(プロジェクトの文字コードはUTF-8なのに)ので、秀丸を併用しつつ読むようにした。JAVAの1.5以降のソースに慣れてないのと、そもそもイチからJAVAプロジェクト構築したことないので、正直苦手ながら読んでみた。(ActionWrapper/ActionUtil/RoutingFilterくらい。)
URLとアクションたちの例
- http://example.com/ の場合。
- rootpackage.action.IndexAction.class が実行される。
- WEB-INF/view/index.jsp が実行される。
- http://example.com/hoge の場合。
- rootpackage.action.HogeAction.class が実行される。
- WEB-INF/view/hoge/index.jsp が実行される。
- http://example.com/fuga/hoge/ の場合。
- rootpackage.action.fuga.HogeAction.class が実行される。
- WEB-INF/view/fuga/hoge/index.jsp が実行される。
- http://example.com/hoge に対して、Submitボタンのname属性がunkoでPOSTされると
- rootpackage.action.fuga.HogeAction#unko() が実行される。
- WEB-INF/view/hoge/index.jsp が実行される。
index.jspのファイル名を変えたければ、それぞれのアクション内で
return "unko.jsp"
のようにすればよい。
多分できないこと
はてダとかブログのように
http://example.com/blog/2008/05/
みたいなかんじにして、「2008」と「05」をarg1/2として受取るのは多分むりで、できた。コメント欄参照。
その辺は素直にmod_rewriteするほうがよさそうな感じ。