- - PR -
WebページをWEB-INFの下に配置
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-07 16:27
こんにちは。
Tomcat上で動くWebアプリがあります。 http://localhost:8080/someapplication/ で、アクセスできます。 ディレクトリ構成は、 <TOMCAT_HOME> | +someapplication | +index.jsp です。 ディレクトリ構成を <TOMCAT_HOME> | +someapplication | +WEB-INF | +pages | +index.jsp に変更し、上記と同じURLでアクセスしたい のですが、これを実現する場合、どのような 設定が必要になるでしょうか。 | ||||||||
|
投稿日時: 2005-11-07 20:18
WEB-INF配下のJSPは直接表示する事はできません。
ですので、JSPに対してフォワードのみを行うサーブレットを作成するなど、 間接的にアクセスするしかありません。 .jspの拡張子に対して上記サーブレットをマッピングする必要がありますが、 通常のJSPに対するリクエストも上記サーブレットで処理されてしまいますので、 WEB-INFの直下・外に関係なく処理できるようにしなければいけません。 | ||||||||
|
投稿日時: 2005-11-08 16:42
ご教授ありがとうございます。
なんだか面倒臭そうですね... WEB-INF下へフォワードするサーブレットはFilterで よろしかったでしょうか? WEB-INF外にjspを置くつもりはないので単純になる と思いますが、画像など(というか全てのリソース) を対象とする場合、*とか*.*を対象として問題ない でしょうか? | ||||||||
|
投稿日時: 2005-11-08 16:46
Filterでも出来ると思いますがサーブレットと Filter は別物ですよ。
まず、動かしてみて試してはいかがでしょうか。 以下のページも参考になるかもしれません。 http://www.javaworld.com/javaworld/jw-09-2004/jw-0913-struts.html | ||||||||
|
投稿日時: 2005-11-08 19:12
サーブレットフィルタを利用する場合は、 サーブレット同様にフィルタのマッピングを行えば可能です。
静的リソースに対して直接アクセスできるわけではありません。 可能なのはリクエストの転送のみです。 JSPの場合はフォワードを行えば問題ないのですが、 静的リソースに対しては、 ・ファイルを取得 ・ファイルからストリームを取得 ・サーブレットのレスポンスに書き出す という処理が必要になります。 通常のWEBサーバが返すレスポンスヘッダも設定しなければならず、 非常に面倒だと思いますよ。 | ||||||||
|
投稿日時: 2005-11-08 19:26
お2人様、対応ありがとうございます。
やはり、一筋縄ではいかなさそうですね。 参考として挙げてくださったサイトにも > you cannot take the JavaScript/CSS (Cascading Style Sheets) files behind WEB-INF, and if using Struts modules, you may encounter some context-related problems. と書いてありました。 コスト対効果が薄いので、やめておきます。 <security-constraint> <web-resource-collection> <web-resource-name>no_access</web-resource-name> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint/> </security-constraint> これだけやっておこうかなと思います。 しかし、かなり勉強になりました。 ちなみに、Filterではないやり方ですと どんな感じになりますでしょうか? | ||||||||
|
投稿日時: 2005-11-08 21:45
FilterであってもServletであっても、 RequestDispatcher#forwardを実行します。 | ||||||||
|
投稿日時: 2005-11-09 17:18
同じなのですね。 ありがとうございました。 |
1