我在 Spring MVC 世界中是个新闻,我有一个答案给你。
我已经通过 STS\Eclipse 中的相关模板项目创建了一个新的 Spring MVC 项目。
好的,它为我创建了一个简单的预配置 Spring MVC 项目。
该项目通过在servlet-context.xml文件中使用以下标记配置为注释驱动:
<annotation-driven />
这个标签是一个帮助标签,它提供了额外的服务,比如消息转换、JSR 303 验证等,这并不是绝对必要的,所以一个简单的控制器工作(我可以将类注释为 @Controller 并指定要由组件扫描的包-扫描标签)
好的...这对我来说很清楚...但是在 STS\Eclipse 创建的示例中,我注意到如果我从我的 servlet-context.xml 文件中删除注释驱动的标签,我还必须删除以下内容才能正常工作来自同一配置文件的标记:
<resources mapping="/resources/**" location="/resources/" />
如果我删除了注释驱动标签但我没有删除以前的资源映射标签,当我启动我的应用程序时,这不运行,这不运行并进入错误说我:HTTP 状态 404 - 并在堆栈中跟踪我有:
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1104 ms
dic 03, 2012 12:57:16 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/andrea/SpringSource/vfabric-tc-server-developer-2.7.2.RELEASE/base-instance/webapps/ROOT
dic 03, 2012 12:57:16 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/andrea/SpringSource/vfabric-tc-server-developer-2.7.2.RELEASE/base-instance/webapps/manager
dic 03, 2012 12:57:16 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
dic 03, 2012 12:57:16 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3144 ms
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/maventestwebapp/] in DispatcherServlet with name 'appServlet'
但是,如果我还删除了以前的资源映射标签,项目运行良好......所以这意味着这一定是问题......似乎没有注释驱动的支持启用资源映射无法工作......
为什么?问题是什么?previus 资源映射标签的确切行为是什么?
太感谢了
安德烈亚
这是我的servlet-context.xml配置文件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Enables the Spring MVC @Controller programming model -->
<!-- <annotation-driven /> -->
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<context:component-scan base-package="com.mycompany.maventestwebapp" />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>