14

次のディレクトリ構造を持つ、Eclipse で作成した BookShopWeb という動的 Web プロジェクトがあります。

/BookShopWeb/|
  |--src
  |---WebContent
                | 
                |---META-INF
                |----WEB-INF---web.xml
                            |
                            |--css--styles.css
                            |--jsp---index.jsp 

web.xml で、開始ページを次のように設定しました

<welcome-file-list>

<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>

index.jsp には、css を次のように含めています。

<head>
<link rel="stylesheet" type="text/css" href="../css/styles.css" />
</head>

ただし、読み込まれたときのインデックス ページには css 情報が表示されません。要素を firebug でチェックしたところ、エラー レポートが表示されました。

Apache Tomcat/6.0.29 - Error report..
The requested resource (/css/styles.css) is not available.

これが発生する理由は何ですか?どうすれば修正できますか? 感謝マーク

4

2 に答える 2

22

フォルダ内のファイル/WEB-INFはパブリック アクセスできません。CSS ファイルをWebContentフォルダー内の 1 レベル上に配置し、ブラウザーのアドレス バーに直接 URL を入力してアクセスできるようにします。また、 で指定する URL<link href>は、サーバー ディスク ファイル システム上の場所ではなく、要求 URL (JSP を開いたときにブラウザのアドレス バーに表示される URL) に対して相対的である必要があります。最善の方法は、スラッシュで始まるドメイン相対にすること/です。

<link rel="stylesheet" href="/BookShopWeb/css/styles.css" />

または、コンテキストパスを変更するたびに毎回 JSP を変更する必要がないように、もう少し動的に

<link rel="stylesheet" href="${pageContext.request.contextPath}/css/styles.css" />

JSP ファイルは に保持できますが/WEB-INF、この方法では、ディスパッチ サーブレットを介してのみアクセスできます。このサーブレットは、拡張によって自家製であるか、HttpServletまたは<welcome-file>.

以下も参照してください。

于 2011-04-22T04:21:32.743 に答える
6

ディレクトリ構造は

/BookShopWeb/|
  |--src
  |---WebContent
                | 
                |---META-INF
                |----WEB-INF---web.xml
  |
  |--css--styles.css
  |--jsp---index.jsp 

また、CSSファイルを宣言する適切な方法ではないstyles.jspとしてCSSに名前を付けました。

web.xml で:

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

あなたのjspファイルで:

<head>
<link rel="stylesheet" type="text/css" href="./css/styles.css" />
</head>
于 2011-04-22T04:21:37.460 に答える