无法在Spring中加载静态资源

时间:2017-01-22 14:43:05

标签: java spring spring-mvc

我的问题很简单。我根本无法在Spring中加载静态资源 以下是我的配置文件。

调度-servlet.xml中

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


 <!-- Turns on support for mapping requests to Spring MVC @Controller methods
     Also registers default Formatters and Validators for use across all @Controllers -->
<mvc:annotation-driven/>


<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources -->
<mvc:resources location="/resources/" mapping="/resources/**"/>

<!-- Allows for mapping the DispatcherServlet to "/" by forwarding static resource 
requests to the container's default Servlet -->
<mvc:default-servlet-handler/>

<!-- The controllers are autodetected POJOs labeled with the @Controller annotation. -->
<context:component-scan base-package="com.redefine.entertainment"></context:component-scan>

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

的web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>test</display-name>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-   value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>RedefineEntertainment</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>RedefineEntertainment</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

我已将我的js和css文件放在/ webapp / resources / css和/ webapp / resources / js中。

我知道这个问题已多次解决,但我根本无法加载静态资源。我在浏览器上得到405没有方法错误。

Error on browser

在网上尝试了所有其他解决方案。请告诉我哪里出错了。对这些弹簧配置文件感到非常沮丧。

1 个答案:

答案 0 :(得分:0)

您提供applicationContext*.xml,而您的上下文文件名称为dispatcher-servlet.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-   value>
</context-param>

此外,您必须阅读文档中<mvc:default-servlet-handler/><mvc:resources>的使用情况,因为两者都有不同的方式来提供静态内容,如下所示:

使用 <mvc:default-servlet-handler/> 弹出调度程序 使用默认servlet在Web根目录(/ webapp) 下提供静态资源。

使用 <mvc:resources> ,spring会使用一种方便的方法来 从Web应用程序根目录以外的位置提供静态资源,包括类路径上的位置。

谈论您的配置,因为您在Web根目录下没有静态资源,如您所述:

  

我已将我的js和css文件放在/ webapp / resources / css和   / web应用/资源/ JS。

您必须编辑配置以使用其中任何一个来提供静态文件,并且必须以特定方式访问,如下所示:

考虑到您使用方便的方式来提供静态文件,如下所示:

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources -->
<mvc:resources location="/resources/" mapping="/resources/**"/>

然后您必须访问CSSJS,提供 /resourcesmvc:resources 标签:

<link href="<c:url value="/resources/css/my.css" />" rel="stylesheet">
<script src="<c:url value="/resources/js/my.js" />"></script>

上面的代码段假设您在相应的文件夹中有my.cssmy.js