ku-sukeのブログ

Just another hatena blog

SAStrutsのURLについて調べてみた

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するほうがよさそうな感じ。