JSFファイル(xhtml)をWEB-INF配下に隠す

JavaEE7でWebアプリケーションを作っているのですが、
JSFファイルをどこに配置するのがベストなのか悩んでます。

Javaフレームワークとして本格的に触ったのがSeasar2だったので、
SAStrutsみたいにViewはWEB-INF配下に隠して直アクセスさせないようにしたいなぁ、と。
テンプレートファイルとか、直アクセスされるとイヤじゃないですかぁ。
ブラウザからのアクセス先はそれぞれJSP = JSP(またはservlet)、JSF = xhtmlって
理解しているので、xhtmlを公開フォルダに置かないのも
間違ってるのかもしれないですが。。。

それはさておき、『UrlRewriteFIlter』使ってRewriteすれば、イメージしてたことができそうです。

環境

手順

  • UrlRewriteFilterをプロジェクトに追加する
    • pom.xmlに書くなり
    • WEB-INF/libに配備するなり
  • WEB-INF/urlrewrite.xmlにrewriteルールを書く
    • URL設計をきちんとやっておいたほうが良いですよね。。。
  • src/main/webapp/配下をrewriteルールの構成に従って整理する
    • WEB-INF/配下に移動ってことで。

設定内容

  • urlrewrite.xml
    <rule>
        <name>hoge機能</name>
        <from>^/hoge/index(.*)$</from>
        <to>/WEB-INF/hoge/index.xhtml$1</to>
    </rule>
    <rule>
        <name>hoge機能:一覧</name>
        <from>^/hoge/list(.*)$</from>
        <to>/WEB-INF/hoge/list.xhtml$1</to>
    </rule>

    .... 以下ルール追加

フォルダ構造

  • Before
src/main/webapp/
  + WEB-INF/
  + templetes/
    - common.xhtml
    - error.xhtml
  + hoge/
    - index.xhtml
    - list.xhtml
    - detail.xhtml
  + fuga/
    - index.xhtml
    - list.xhtml
    - detail.xhtml
  + css/
  + js/
  + img/
  • After
src/main/webapp/
  + WEB-INF/
    + templetes/
      - common.xhtml
      - error.xhtml
    + hoge/
      - index.xhtml
      - list.xhtml
      - detail.xhtml
    + fuga/
      - index.xhtml
      - list.xhtml
      - detail.xhtml
  + css/
  + js/
  + img/

css, jsとかはresourcesフォルダ使ったほうがいいんじゃね?とか、
welcomeページどうするんだよ、とか異論あるかと思います。
が、個人的には満足。
でもベストって感じではないんだよね。

  • welcomeページはどうするの?
    • これもrewriteで / をWEB-INF/配下にforward。
  • cssJavascriptはresourcesフォルダを使ったほうがいいんじゃね?
    • bootstrapとかfont awesomeとか使おうとすると、resourcesフォルダがうまく使えなかったの。外部Javascriptライブラリで画像ファイルを使ってる場合とかも。
  • rewriteルールがもっときれいに書けるんじゃね?
    • きっと書けるはずです。勉強します。はい。
  • JSFでActionの指定(POSTバック?)がWEB-INF/配下のxhtmlになっちゃうじゃん?
    • h:formの「p:action」でAction先を書いちゃいます。

やっぱり、もっといい方法があるのかも。。。


現場で使えるJavaライブラリ

新品価格
¥3,888から
(2015/7/16 11:45時点)