【问题标题】:Spring MVC 4 with mvc:resources not working带有 mvc:resources 的 Spring MVC 4 不起作用
【发布时间】:2017-10-10 19:45:45
【问题描述】:

我试图使用 Spring MVC 制作一个简单的 JAVA Web 应用程序。我尝试在分别位于/Webcontents/resources/ and webcontents/JS 的资源文件夹中添加 CSS 和 JS 文件。因此,我需要在我的servlet.xml 中进行一些配置,并在此文件中包含 spring-webmvc。我的servlet.xml 如下图:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	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-4.3.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">
 
	<context:component-scan base-package="com.webrtc.controller" />

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
		<mvc:resources mapping="/resources/**" location="/resources/" />
		<mvc:resources mapping="/js/**" location="/js/" />
        <mvc:annotation-driven />
	</bean>
 
</beans>

我的 POM.xml 如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>WebRTCProject</groupId>
  <artifactId>WebRTCProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
        <jdk.version>1.8</jdk.version>
        <spring.version>4.3.7.RELEASE</spring.version>
  </properties>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencyManagement>
  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
    </dependencies>
  </dependencyManagement>
</project>

一旦我使用 Maven 构建项目并尝试使用 Eclipse IDE 中添加的 Tomcat 在服务器上运行它,我会收到以下错误:

    SEVERE: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:

配置问题:找不到 BeanDefinitionDecorator for 元素 [资源] 违规资源:ServletContext 资源 [/WEB-INF/webrtc-servlet.xml] 在 org.springframework.beans.factory.parsing.FailFastProblemReporter.fatal(FailFastProblemReporter.java:60) 在 org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:68) 在 org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:55) 在 org.springframework.beans.factory.xml.NamespaceHandlerSupport.findDecoratorForNode(NamespaceHandlerSupport.java:121) 在 org.springframework.beans.factory.xml.NamespaceHandlerSupport.decorate(NamespaceHandlerSupport.java:99) 在 org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateIfRequired(BeanDefinitionParserDelegate.java:1448) 在 org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateBeanDefinitionIfRequired(BeanDefinitionParserDelegate.java:1435) 在 org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateBeanDefinitionIfRequired(BeanDefinitionParserDelegate.java:1415) 在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.processBeanDefinition(DefaultBeanDefinitionDocumentReader.java:301) 在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:190) 在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:169) 在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:142) 在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 在 org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 在 org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 在 org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 在 org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:613) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514) 在 org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) 在 org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) 在 org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) 在 org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 在 javax.servlet.GenericServlet.init(GenericServlet.java:158) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

我的其他配置如下:

Windows 10

Eclipse IDE

春季 4.3.7

JAVA SDK 1.8

Tomcat 8.5

我尝试了不同的解决方案来解决问题,例如版本控制问题、更改 servlet.xml 文件等,但无法解决问题。

有人知道我该如何解决这个问题吗?

任何帮助或建议将不胜感激!如果您需要有关项目的更多详细信息,我将能够为您提供更多详细信息。

【问题讨论】:

    标签: java spring-mvc servlets pom.xml tomcat8


    【解决方案1】:

    我的 servlet.xml 如下所示

    配置/WEB-INF/webrtc-servlet.xml 有错误。要么删除 这个文件或在那里修复错误。

    而且这些元素应该在bean定义之外

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

    【讨论】:

    • 嗨!你的意思是我发布的文件中有一些语法错误吗?还是一些配置错误?
    • 只是改变 的位置,把它放在 定义之外就解决了这个问题!非常感谢
    • 您应该接受并支持答案。如果您不知道该怎么做,请参阅stackoverflow.com/tour
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2017-08-08
    • 2012-11-29
    • 2015-04-15
    • 1970-01-01
    • 2017-02-27
    • 2012-06-16
    相关资源
    最近更新 更多