无法使用spring mvc web app加载我的资源文件

时间:2013-09-10 10:50:31

标签: spring-mvc

我正在使用spring MVC来运行我的动态Web应用程序。我能够写一个并成功运行该应用程序。但问题是加载像image,JS和CSS这样的资源文件。我收到文件加载资源失败。关键点是我将JSP文件放在WEB-INF和Web逻辑服务器之外。

My App Structure

我的web.xml文件

<display-name>Support</display-name>
  <welcome-file-list>
    <welcome-file>resources/jsp/home.jsp</welcome-file>
  </welcome-file-list>

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

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-mvc-servlet.xml,/WEB-INF/spring-jpa.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

我的调度程序servlet

<mvc:annotation-driven/>    
   <mvc:resources mapping="/resources/**" location="/resources/"/>  
   <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/resources/jsp/" />
    <property name="suffix" value=".jsp" />
   </bean>

我已将此添加到我的JSp文件中

<link media="screen" rel="stylesheet" href="<spring:url value='resources/css/Map.css' />" type="text/css" />
<spring:url value="resources/css/Mass.css" var="resourceUrl2"/>
<LINK media="screen" rel="stylesheet" TYPE="text/css" href="${resourceUrl2}" />

获取加载资源失败:服务器响应状态为404。

任何帮助???

更新

我在weblogic服务器上发现的内容无法获取此应用的上下文值。所以在jsp文件中获取了conext路径并在资源之前附加了。它对我有用

<link media="screen" rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/MaRK.css" type="text/css" />

仍然不知道为什么春季资源不起作用。

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,这就是我解决问题的方法: 在spring配置文件中 替换

<mvc:resources mapping="/resources/**" location="/resources/"/>
With
<mvc:default-servlet-handler/>

在JSP中提供以下路径以加载静态内容

<link rel="stylesheet" href="resources/css/Mass.css" type="text/css"/>

希望这会有所帮助!

答案 1 :(得分:0)

试试这个

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

适合我。

答案 2 :(得分:0)

我在JSP中遇到以下问题,并遇到了相同的问题:

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

/中删除前导/css/styles.css后,它加载了。

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

我无法解释原因。上面写的答案对我没有帮助。实际上,我什至没有一个resources文件夹,我所有的静态内容都直接放置在/webapp文件夹中,尤其是{{1} }}和/css子目录。