- PR -

WebページをWEB-INFの下に配置

1
投稿者投稿内容
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 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でアクセスしたい
のですが、これを実現する場合、どのような
設定が必要になるでしょうか。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-11-07 20:18
WEB-INF配下のJSPは直接表示する事はできません。
ですので、JSPに対してフォワードのみを行うサーブレットを作成するなど、
間接的にアクセスするしかありません。

.jspの拡張子に対して上記サーブレットをマッピングする必要がありますが、
通常のJSPに対するリクエストも上記サーブレットで処理されてしまいますので、
WEB-INFの直下・外に関係なく処理できるようにしなければいけません。
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-08 16:42
ご教授ありがとうございます。

なんだか面倒臭そうですね...
WEB-INF下へフォワードするサーブレットはFilterで
よろしかったでしょうか?

WEB-INF外にjspを置くつもりはないので単純になる
と思いますが、画像など(というか全てのリソース)
を対象とする場合、*とか*.*を対象として問題ない
でしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-08 16:46
Filterでも出来ると思いますがサーブレットと Filter は別物ですよ。
まず、動かしてみて試してはいかがでしょうか。

以下のページも参考になるかもしれません。
http://www.javaworld.com/javaworld/jw-09-2004/jw-0913-struts.html
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-11-08 19:12
引用:

WEB-INF下へフォワードするサーブレットはFilterで
よろしかったでしょうか?


サーブレットフィルタを利用する場合は、
サーブレット同様にフィルタのマッピングを行えば可能です。

引用:

WEB-INF外にjspを置くつもりはないので単純になる
と思いますが、画像など(というか全てのリソース)
を対象とする場合、*とか*.*を対象として問題ない
でしょうか?


静的リソースに対して直接アクセスできるわけではありません。
可能なのはリクエストの転送のみです。

JSPの場合はフォワードを行えば問題ないのですが、
静的リソースに対しては、
・ファイルを取得
・ファイルからストリームを取得
・サーブレットのレスポンスに書き出す
という処理が必要になります。

通常のWEBサーバが返すレスポンスヘッダも設定しなければならず、
非常に面倒だと思いますよ。
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 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ではないやり方ですと
どんな感じになりますでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-11-08 21:45
引用:

ちなみに、Filterではないやり方ですと
どんな感じになりますでしょうか?


FilterであってもServletであっても、
RequestDispatcher#forwardを実行します。
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-09 17:18
引用:

引用:

ちなみに、Filterではないやり方ですと
どんな感じになりますでしょうか?


FilterであってもServletであっても、
RequestDispatcher#forwardを実行します。



同じなのですね。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)