我的问题很简单。我根本无法在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没有方法错误。
在网上尝试了所有其他解决方案。请告诉我哪里出错了。对这些弹簧配置文件感到非常沮丧。
答案 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/**"/>
然后您必须访问CSS
和JS
,提供 /resources
是mvc:resources
标签:
<link href="<c:url value="/resources/css/my.css" />" rel="stylesheet">
<script src="<c:url value="/resources/js/my.js" />"></script>
上面的代码段假设您在相应的文件夹中有my.css
和my.js
。