13

0 で、公開ファイルを配置する場所に問題があります 試しました spring-mvc アプリの画像/CSS を配置する場所 この解決策ですが、私にはうまくいきません

WEB-INFパブリックフォルダーをディレクトリの外側のどこにでも配置しようとしましたが、まだ何もありません

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <display-name>s-mvc</display-name>
  <servlet>
    <servlet-name>frontController</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <mvc:resources mapping="/css/**" location="/css/"/>

</web-app>

frontcontroller-servlet.xml

<mvc:annotation-driven/>

    <context:component-scan base-package="pl.skowronline.controller" />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

そして、cssファイルを呼び出す方法 <link type="text/css" href="/css/bootstrap.css" rel="stylesheet" />

4

6 に答える 6

10

web.xmlと を混同していると思いますapplication-context.xml

には、このような xsd 宣言と Dispatcher Servlet のマッピングweb.xmlが含まれている必要があります。webapp

 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>s-mvc</display-name>
  <servlet>
    <servlet-name>frontController</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 </web-app>

以下のような xsd 宣言application-context.xmlが含まれている場合spring-framework

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xmlns:context="http://www.springframework.org/schema/context"
     xsi:schemaLocation="http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <mvc:resources mapping="/css/**" location="/css/"/>
 <mvc:annotation-driven />
 <context:component-scan base-package="pl.skowronline.controller" />

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
 </bean>

</beans>
于 2013-01-14T20:50:32.930 に答える
9

JB Nizet からの回答は正しいです。ただし、アプリケーションの問題は css/js ファイルを配置する場所だけではないようです。Spring MVC の場合、すべての構成を適切に行う必要があります。そうしないと、機能しません。

簡単にするために、css フォルダーを WEB-INF フォルダー (/WEB-INF/css) に配置して、ページで次のようにアクセスできるようにします。

<a href="<c:url value='/css/bootstrap.css'/>"

そのリンクは、css ファイルに直接移動する必要があります。動作する場合は<a><link>タグを CSS スタイルのタグに変更できます。

うまくいかない場合は、次の点を確認してください。

1)ファイルへのアクセスを禁止するSpring Securityの制約

2) ファイルへのアクセスを妨げる可能性のあるさまざまなフィルター/インターセプターの影響

3) web.xml でのサーブレット構成。ディスパッチャが CSS ファイルへのアクセスを傍受しないようにしてください。

多くの場合、<mvc:resources>上記のすべてのことを行います。ただし、失敗した場合に備えて、確認することをお勧めします。

<mvc:resources>エラーの場合:

一致するワイルドカードは厳密ですが、要素 'mvc:resources' の宣言が見つかりません。

適切なスキーマをまだ宣言していないようです。たとえば、ファイルの先頭に次の行を追加する必要があります。

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http:/ /www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0 .xsd ">

アップデート:

あなたの応答として、問題はここにあるようです:

<servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

次のように変更する必要があります。

<servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/*.html</url-pattern>
  </servlet-mapping>

これにより、css/images ファイルの URL がコントローラー (サーブレット) の URL マッピングと競合することがなくなり、mvc:resources が魔法のように機能します。もちろん、"html" 部分には任意の拡張子を使用できます。美しい URL の場合は、Turkey URL rewriteのようなライブラリを使用して問題を解決できます。

于 2013-01-14T10:27:57.407 に答える
4

コンテキスト パスを使用して、リソース ファイルを見つけることができます。

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

詳細については、これをお読みください。

于 2013-01-08T11:22:34.113 に答える
4

これについては、ドキュメントの次のセクションで説明されています。そこに示されている指示に従い、 : の意味を変更しますhref:サーバーのルートのすぐ下に/css/bootstrap.cssあるフォルダー内。したがって、アプリケーションがルート アプリケーションとしてデプロイされない限り、アプリのコンテキスト パスを先頭に追加する必要があるため、機能しません。css

href="<c:url value='/css/bootstrap.css'/>"

したがって、これは次のことを意味します: webappのルートのすぐ下にある css フォルダー内。Web アプリケーションのコンテキスト パスが の場合/myFirstWebApp、生成される href は次のようになります。

href="/myFirstWebApp/css/bootstrap.css"
于 2013-01-05T12:47:01.573 に答える
1

私も同じ問題を抱えていました.以下の手順を実行して、私とチームメイトにとってもうまく機能するようにしてください.

Step1 :- Web-INF に「resources」という名前のフォルダーを作成します。

ステップ 2 :- ブートストラップ、css、および js をアップロードする場合は、このフォルダー内に書き込みます。

Step3 :- ディスパッチャ サーブレット xml を以下のように更新します。

  1. ビーンズタグ内に以下のコードを追加

    <mvc:resources mapping="/resources/**" location="/resources/" />
            <mvc:annotation-driven />
    
    1. 以下のコードを、この xml の先頭にある xsi:schemaLocation に追加します。

      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd ">

ステップ 4:- 以下のように、コードで css、bootstrap リソースを使用できるようになりました

<header class="custem_header_bg"><img src="resources/img/product_banner.png" class="img-responsive"> </header>
于 2016-03-18T08:16:31.390 に答える
0

次の手順に従って、JSP に基づいてのみ設定できます。その後、web.xml で mvc:resources を設定する必要はありません。次のようにベースを設定するだけです。また、ヘッダー ファイルを使用してこの値を設定することもできます。次に、アプリケーションで使用している任意のページにその header.jsp を含めることができます。次に、すべての JSP でこの値を設定する必要はありません。

次のように設定する必要があり<base/>ます...

<c:set var="req" value="${pageContext.request}" />

<c:set var="url"> ${req.requestURL} </c:set>
<c:set var="uri" value="${req.requestURI}" />

<head>
    <title></title>
    <base href="${fn:substring(url, 0, fn:length(url) - fn:length(uri))}${req.contextPath}/" />

次に、以下のように任意の JS または CSS をインポートできます。

<script src="assets/js/angular/angular.js"></script>
于 2016-03-01T09:32:26.340 に答える