【问题标题】:Not able to load my resource files using spring mvc web app无法使用 spring mvc web app 加载我的资源文件
【发布时间】:2013-09-10 10:50:30
【问题描述】:

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

我的 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>

我的dispathcer 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" />

还是不知道为什么spring资源不起作用。

【问题讨论】:

  • 你的url值错误...应该是&lt;spring:url /&gt;中的/resource,表示应该从应用的根目录加载。
  • 我也试过了。'/resources/css/MaRK.css' 但没有运气。
  • 您请求的 JSP 直接提供或由 DispatcherServlet 提供。需要注意的一件事是,您还复制了您正在加载“spring-mvc-servlet.xml”两次的 bean。不要那样做,它应该只被DispatcherServlet加载
  • 为什么还要使用&lt;mvc:resources /&gt;?资源目录是直接可用的,所以不要添加 &lt;mvc:resources /&gt; 标签,而是添加 '' 元素。
  • 我是 MVC 新手。我正在尝试加载 WEB-INF 之外的 jsp 文件。遇到了这个资源标签并添加了它来获取 JSP 值。如果我没有 dispather xml 文件,我如何加载 bean 详细信息。如果您分享任何示例工作项目,那就太好了。

标签: spring-mvc


【解决方案1】:

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

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

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

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    试试这个

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

    为我工作。

    【讨论】:

      【解决方案3】:

      我的 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 文件夹中——具体来说,在/css/jsp/WEB-INF 子目录中.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        • 2013-08-15
        • 2013-08-27
        • 2014-03-26
        相关资源
        最近更新 更多