4

SpringとMavenで構築しているJavaEEアプリケーションがあります。通常のプロジェクト構造になっています。これが階層の一部です。

MyApplication
    src
        main
            webapp
                WEB-INF
                    layout
                        header.jsp
                styles
                    main.css

そのCSSファイルをJSPに含めたいです。次のタグを付けています。

<c:url var="styleSheetUrl" value="/styles/main.css" />
<link rel="stylesheet" href="${styleSheetUrl}">

アプリケーションをデプロイすると、CSSページが見つかりません。ページソースを表示すると、hrefは/MyApplication/styles/main.cssです。WARの内部を見ると、があり/styles/main.cssます。ただし、ブラウザでCSSファイルに直接アクセスしようとすると404が表示されます。

この問題の原因は、ディスパッチャサーブレットのマッピングであることがわかりました。マッピングは次のようになります。

<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

DispatcherサーブレットはCSSリクエストの処理方法を知らないと思います。この問題を処理するための最良の方法は何ですか?すべてのリクエストマッピングを変更する必要はありません。

4

2 に答える 2

7

アプリへのサーブレット リクエストとは別に、静的リソース(CSS、JS、画像)を処理するように Spring を構成する必要があります。これを行うには、別の最上位ディレクトリ (「静的」など) を介してリクエストを静的ファイルにマップするように Spring 構成を構成します。

<!-- Where to load static resources (css, js, images) -->
<mvc:resources mapping="/static/**" location="/" />

次に、パスを使用するように JSP を変更します/static/styles/main.css

規則により、「styles」ディレクトリに「css」という名前を付けるように指示されていることに注意してください。

于 2012-09-10T03:33:25.643 に答える
4

以下を web.xml に追加します。

<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>*.js</url-pattern>
</servlet-mapping>

以下を使用してcssを含めます

<link rel="stylesheet" href="styles/main.css">
于 2014-04-25T19:36:02.580 に答える