skillup

技術ブログ

Java

JavaEEでのURLマッピング

投稿日:2015年6月5日 更新日:

URLマッピング

現状、JavaEE(JSF+JavaBean+EJB+JPA)を使って開発していますが、フレームワークを使って開発していますとURLの整合性をしっかりと考える必要が出てきます。

URLとページのマッピングがそのまま対応していればいいのですがパラメーターをいれたり、きれいに整形したい場合は書き換えをする必要があります。

一番多いのはhttp://hogehoge.com/product/view/7

などといった形で7を商品IDとして取得し、この商品データを表示したいといったようなケースでしょう。

自分が関わっているものはさらに特殊でして
上記のurlでhttp://hogehoge.com/uId/1/product/list
とアクセスしたときに
src/main/webapp/product/list.xhtml
に飛ばしたいというような実装でした。

要はuId/1/といったディレクトリは全くありません。しかもuID/1/の1をパラメータとして内部で処理したい場合ですね。

これをJavaEEで実装する方法が何とか見つかりましたのでかかせていただきます。

prettyfaces

上記のようなページの設定の場合、ディフォルトでできる方法が見つからずあきらめていましたが、ボス(社長)がprettyfacesというライブラリを発見してもらいました。

http://www.ocpsoft.org/prettyfaces/

このライブラリを使うことでurlのリライトができます。

導入方法

pom.xmlの設定

mavenのpom.xmlに以下の記述を書きます。

pretty-config.xmlの設定

次にpretty-config.xmlという設定ファイルをWEB-INF直下に置きます。

内容は下記のように設定します。

このように書くと<pattern>はマッチするURLのパターンで、
<view-id>は該当のページまたは処理です。

<pattern>には正規表現などもいけるようですが、ワイルドカードはだめでした。

マッチングパターンの具体例などは下記URLが参考になります。

http://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.dynaview

view-idには静的なページを記述することもできますが、今回のように動的な処理を行いたい場合はMangedBeanのメソッドを呼び出します。

ManagedBeanでのパラメーターの取得方法

RootingBeanには下記のような記述を行います。(※実際にはuIdをとる処理がありますが該当ページに飛ばしたいのが趣旨なので省略します。)

これで該当ページに飛ばすことができました。

まだまだ不完全なのですが、このリライト機能はいろいろと応用範囲はありそうです。

-Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

スコープアノテーションとCDIについて

JavaEEで個人的に鬼門がCDIとスコープだと思っています。 ここが少しずつ分かりかけてきたんでメモします。 まずJavaEEでは変数の生存期間をアノテーションで定義します。 これがなかなか分かりに …

no image

netbeansのJPQL補助機能

JPAでは基本的に生のSQLではなく、JPQLを使って書きます。 SQLでもタイプミスにイライラさせられることは多いのですが、JPQLはもっとですね・・・爆 そこで使えるのがNetbeansの入力補助 …

no image

JSFのプルダウンに関して(イベントをトリガーにする&非ajax)

いろいろと社内アプリを作っていたせいでかなりプルダウンは慣れたとおもったのですが、未知の部分がさらにあったのでまとめます。 Contents1 初期値に値がないとき2 プルダウン変更時に遷移 初期値に …

no image

イテレーターに関して

Javaの繰り返しでイテレーターという概念がありますね。 今はあまり使われなくなっているようですが、資格の勉強をしていたら出てきたのと、たしなみとして知っておく必要があるため、記述します。 ソース [ …

no image

JPAでの多対多のリレーション

以前、このエントリーでJPAのリレーションについて説明しました。 今回は多対多について説明します。 Contents1 テーブル構成2 ソース2.1 CDのエンティティ2.2 Artistのエンティテ …