java - 404 运行简单 Spring MVC HelloWeb 时请求的资源不可用

标签 java spring spring-mvc

为此,我还阅读了 stackoverflow 上的一些旧帖子,但我没有得到我需要的解决方案。

我正在创建一个简单的 Spring MVC HelloWeb 应用程序。

为此,我使用以下文件

1) web.xml用于配置DispatcherServlet

<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Web Application</display-name>
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

2)然后我写简单HelloController如下:

package com.tutorialspoint;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.ui.ModelMap;
@Controller
public class HelloController{
@RequestMapping(value="hello" ,method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}

3) 之后我配置了HelloWeb-servlet.xml如下

<beans xmlns="http://www.springframework.org/schema/beans"
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-3.0.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.tutorialspoint"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
<property name="order" value = "1" ></property>
</bean>
</beans>

4) hello.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h2>${message}</h2>
</body>
</html>

5) package-nfo.java

package com.tutorialspoint;

我将war导出到tomcat 7 webapps文件夹并重新启动tomcat服务。

我在 Tomcat 控制台中检查了 HelloWeb 应用程序正在运行。

我点击了网址http://<URL>:8080/HelloWeb/hello.

我收到以下错误

javax.servlet.ServletException: Servlet.init() for servlet HelloWeb threw exception org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source) root cause org.springframework.beans.factory.BeanCreationException: Error creating bean with
name'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError:
org.springframework.context.ApplicationContext.findAnnotationOnBean(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/annotation/Annotation; org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) java.security.AccessController.doPrivileged(Native Method) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:255) org.springframework.web.servlet.DispatcherServlet.createDefaultStrategy(DispatcherServlet.java:672) org.springframework.web.servlet.DispatcherServlet.getDefaultStrategies(DispatcherServlet.java:640) org.springframework.web.servlet.DispatcherServlet.initHandlerMappings(DispatcherServlet.java:435) org.springframework.web.servlet.DispatcherServlet.initStrategies(DispatcherServlet.java:334) org.springframework.web.servlet.DispatcherServlet.onRefresh(DispatcherServlet.java:323) org.springframework.web.servlet.FrameworkServlet.onApplicationEvent(FrameworkServlet.java:498) org.springframework.web.servlet.FrameworkServlet.onApplicationEvent(FrameworkServlet.java:1) org.springframework.context.event.SourceFilteringListener.onApplicationEventInternal(SourceFilteringListener.java:81) org.springframework.context.event.SourceFilteringListener.onApplicationEvent(SourceFilteringListener.java:66) org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78) org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49) org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76) org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274) org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:427) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:341) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source) root cause

java.lang.NoSuchMethodError: org.springframework.context.ApplicationContext.findAnnotationOnBean(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/annotation/Annotation; org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping.determineUrlsForHandler(DefaultAnnotationHandlerMapping.java:108) org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.detectHandlers(AbstractDetectingUrlHandlerMapping.java:80) org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.initApplicationContext(AbstractDetectingUrlHandlerMapping.java:58) org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119) org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:69) org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73) org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1331) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) java.security.AccessController.doPrivileged(Native Method) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:255) org.springframework.web.servlet.DispatcherServlet.createDefaultStrategy(DispatcherServlet.java:672) org.springframework.web.servlet.DispatcherServlet.getDefaultStrategies(DispatcherServlet.java:640) org.springframework.web.servlet.DispatcherServlet.initHandlerMappings(DispatcherServlet.java:435) org.springframework.web.servlet.DispatcherServlet.initStrategies(DispatcherServlet.java:334) org.springframework.web.servlet.DispatcherServlet.onRefresh(DispatcherServlet.java:323) org.springframework.web.servlet.FrameworkServlet.onApplicationEvent(FrameworkServlet.java:498) org.springframework.web.servlet.FrameworkServlet.onApplicationEvent(FrameworkServlet.java:1) org.springframework.context.event.SourceFilteringListener.onApplicationEventInternal(SourceFilteringListener.java:81) org.springframework.context.event.SourceFilteringListener.onApplicationEvent(SourceFilteringListener.java:66) org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78) org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49) org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76) org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274) org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:427) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:341) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

最佳答案

这是由于 Spring jar 版本不匹配造成的。我将我的应用程序从 Spring 2 升级到 Spring 3 。我们需要删除 spring-2.5.6.jar,因为 Spring 3 不需要它。它解决了我的问题。

关于java - 404 运行简单 Spring MVC HelloWeb 时请求的资源不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622674/

相关文章:

java - Log4J SocketAppender 吞下来自远程客户端的调试信息

java - jar 工作 : through JNLP not working

java - 继承 :hidden variable of superclass in subclass

java - 如何在整个 Spring Boot 项目中将所有字符串变量设置为 upperCase()

java - 使用 Spring 3.1 保护两个网页的密码

java - 如何知道 .jar 文件中的哪些类被引用了?

java - 如何在不使用包装对象的情况下反序列化前面带有前导标签的数组?

java - 如何获取当前 bean 名称/id 以在 bean 初始化中使用它来构建占位符名称

java - 如何制作一个在系统的某个时间启动的方法?

java - 将条件 spring mvc 参数传递给 javascript url 函数