Home > Archives > 2008-08

2008-08

SAStrutsのURL設計で課題

  • 2008-08-12 (火)
  • Java

SAStrutsにおけるURLは、Actionのパッケージとクラス名によって基本的に決まる。
綺麗なURL(パラメータをURLのpathに含めたり・・・など)を作りたいときはurlPatternを利用することになる。

で、今回悩んでいるのはこんなこと。
お尻にくっつくパラメーターではなく、大分類みたいなものでURLを分けたいときはどうすればよいか?
大分類を、URLの頭のほうに持っていけるのか?

例えばショッピングサイトを作るとする。
そのサイトでは、本と文房具を売っているとする。

例えばこんな感じのURLにしたいとする。

  • / -> サイトのトップページ
  • /book/ -> 本カテゴリーのトップ
  • /book/feature/ -> 特集ページ
  • /book/search/ -> 検索
  • /book/search/result/ -> 検索結果
  • /book/item/{id}/ -> 商品ページ
  • /stationery/ -> 文具カテゴリーのトップ
  • /stationery/feature/ -> 特集ページ
  • /stationery/search/ -> 検索
  • /stationery/search/result/ -> 検索結果
  • /stationery/item/{id}/ -> 商品ページ
  • /cart/ -> カートの中身

Actionは、FeatureActionとかSearchActionとか作るんだろうけど、URLの第一階層のカテゴリーをうまく扱えない。

「/feature/book/」「/search/book/」でいいじゃないかとも思うけど、パンくずとURLがずれるよね。
気にするなという人もいるだろうけどさ。

もしこのURLを実現するとなるとぱっと思いつく案は4つ。
(そもそもできるのかとか、どうやってやるとかは考えずぱっと思いついた案を出しただけ)

  1. コンテキストごと分けてしまう
  2. mod_rewrite、もしくはそれに準じるようなものでごにょごにょがんばる
  3. RoutingFilterかRequestProcessorあたりを拡張してがんばる
  4. フォワード専用のActionを作ってがんばる

1番目はいくらなんでもメモリの無駄遣い過ぎるし、カテゴリに変更が入るたびにインフラに近い部分で設定が変わるのはいけてない。
2番目はメンテできなくなりそうだし、3番目はSAStruts本体の動きを変更することになるから微妙・・・。
4番目は、これはこれでメンテできなったり、カオスになりそう。

素直にあきらめたほうがいいのかも?

こうやって考えると、DjangoのURLの仕組みは単純で秀逸だなーと思う。

Home > Archives > 2008-08

Search
Feeds
Meta

Return to page top