- PR -

strutsを使用してのjsp上のcss,jsの外部ファイル参照

投稿者投稿内容
ガミ
会議室デビュー日: 2007/02/24
投稿数: 6
投稿日時: 2007-02-24 18:01
はじめまして

質問があります。
strutsを使用したうえで、jsp上に以下の記述をしました。

<html:html>
<head>
<LINK rel="stylesheet" type="text/css" href="/css/style.css">
</head>
<body>
(省略)
</body>
<html:html>

そのようにしたところ、
コンソールに以下のエラーが出力されました。
-------
2007/02/24 17:56:55 org.apache.struts.action.RequestProcessor processMapping
致命的: パス {0} に対するリクエストは無効です /css/style
-------

自分なりに調査したのですが、
http://kamakura.cool.ne.jp/oppama/ssja/struts-shoot.html
こちらを参照したのですが、cssを使用するのにstruts.configを
どのように編集したらよいでしょうか?

また、どのような原因で上記エラーが発生するか、
あるいはどのような対策をとればよいか教えてください。

struts 1.2.9
tomcat 5.0
です。

よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-02-24 18:09
.css が ActionServlet にマッピングされているからではないでしょうか?
ActionServlet にマッピングするのを *.do だけとかに限定すれば直りそうな気がします。
ガミ
会議室デビュー日: 2007/02/24
投稿数: 6
投稿日時: 2007-02-24 18:54
インギさん

servletマッピングとはweb.xmlの以下の記載のことでしょうか?

<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

そうであれば、上記のように設定しています。
ただ、これが本当に読まれているか、どこかで確認できるものなのでしょうか
(他の設定項目も含めて)

ガミ
会議室デビュー日: 2007/02/24
投稿数: 6
投稿日時: 2007-02-24 22:03
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

こちらの件、WEB-INF直下にあるweb.xmlではなく、
tomcatインストールディレクトリ配下にあるweb.xml
に同様の記述をしたら
-------
2007/02/24 17:56:55 org.apache.struts.action.RequestProcessor processMapping
致命的: パス {0} に対するリクエストは無効です /css/style
-------
のエラーはでなくなりました。

しかし、相変わらずcssは適用してくれません。
ディレクトリ構成は
xxx--+--WEB-INF
    |
    +--css style.css
    |
    +--jsp aa.jsp
となっています。
その状態で、
http://localhost:8080/xxx/jsp/aaa.jsp
にアクセス。
jsp内のcss参照は前述の通り
<LINK rel="stylesheet" type="text/css" href="/css/style.css">
となっています。
(「/css/style.css」の部分を、「/xxx/css/style.css」
に変更しても同じく適用されませんでした。)


cssが適用されない理由としてどのような原因が考えられるでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-02-25 13:15
まず Struts を抜きにして css がブラウザから見える状態にしましょう。
現在 WEB-INF 直下に置いていて、アクセスログでは style.css は 404 エラーになっている状態でしょうか?
WEB-INF 直下は直接アクセスしても見えませんので、別のディレクトリに置く必要があります。
一つ上のディレクトリに置いてみてはいかがでしょうか。

Struts のエラーは原因がよくわかりませんが、ActionServlet のマッピング自体は間違っていなさそうですね。
ただ、「tomcatインストールディレクトリ配下にあるweb.xml 」はグローバルに適用される web.xml なのでそちらに書く必要はないです。
書いたからといって挙動が変わるのもなんだかおかしい気がします・・・。
ガミ
会議室デビュー日: 2007/02/24
投稿数: 6
投稿日時: 2007-02-25 13:32
インギさん

cssとjspをおいているのは、WEB-INFの中ではなく、
WEB-INFと同列です。

なお、xxx\jsp\bb.html とつくって、
http://localhost:8080/xxx/jsp/bb.html
とすると、

404エラー発生の上、
The requested resource (/xxx/jsp/bb.html) is not available.

となります。


[ メッセージ編集済み 編集者: ガミ 編集日時 2007-02-25 13:33 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-02-25 15:47
タイトルでは「strutsを使用して」とありますが、Struts を使用しない場合はうまくいっていますか?
まず、Webアプリケーション自体が正常にデプロイできてるかどうか確認してはいかがでしょうか。
ログを確認するとか・・。

[ メッセージ編集済み 編集者: インギ 編集日時 2007-02-25 15:48 ]
ガミ
会議室デビュー日: 2007/02/24
投稿数: 6
投稿日時: 2007-02-25 15:59
インギさん

引用:

ガミさんの書き込み (2007-02-25 13:32) より:
インギさん

cssとjspをおいているのは、WEB-INFの中ではなく、
WEB-INFと同列です。

なお、xxxjspbb.html とつくって、
http://localhost:8080/xxx/jsp/bb.html
とすると、

404エラー発生の上、
The requested resource (/xxx/jsp/bb.html) is not available.

となります。


[ メッセージ編集済み 編集者: ガミ 編集日時 2007-02-25 13:33 ]



すみません。
上記から、どうやらWebアプリ自体のデプロイもできていないようです。

同じディレクトリに入れているjspとhtmlで、
同じようにアクセスしてhtmlだけみれない、というのは
どのようなところに原因があるのでしょうか。。

スレッドの意図と反することとなってしまい申し訳ないです。

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