JSFファイル(xhtml)をWEB-INF配下に隠す
JavaEE7でWebアプリケーションを作っているのですが、
JSFファイルをどこに配置するのがベストなのか悩んでます。
Javaフレームワークとして本格的に触ったのがSeasar2だったので、
SAStrutsみたいにViewはWEB-INF配下に隠して直アクセスさせないようにしたいなぁ、と。
テンプレートファイルとか、直アクセスされるとイヤじゃないですかぁ。
ブラウザからのアクセス先はそれぞれJSP = JSP(またはservlet)、JSF = xhtmlって
理解しているので、xhtmlを公開フォルダに置かないのも
間違ってるのかもしれないですが。。。
それはさておき、『UrlRewriteFIlter』使ってRewriteすれば、イメージしてたことができそうです。
環境
手順
- UrlRewriteFilterをプロジェクトに追加する
- 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。
- cssやJavascriptはresourcesフォルダを使ったほうがいいんじゃね?
- bootstrapとかfont awesomeとか使おうとすると、resourcesフォルダがうまく使えなかったの。外部Javascriptライブラリで画像ファイルを使ってる場合とかも。
- rewriteルールがもっときれいに書けるんじゃね?
- きっと書けるはずです。勉強します。はい。
- JSFでActionの指定(POSTバック?)がWEB-INF/配下のxhtmlになっちゃうじゃん?
- h:formの「p:action」でAction先を書いちゃいます。
やっぱり、もっといい方法があるのかも。。。
新品価格 |