Spring MVC应用程序不能与Tomcat和Eclipse一起工作
我在尝试使用Spring Framework时遇到了很多麻烦,并且不知道错误在哪里。我正在使用Tomcat 7.0.68部署应用程序。Spring MVC应用程序不能与Tomcat和Eclipse一起工作
当我尝试使用URL(http://localhost:8080/fj21-spring/olaMundo)我得到一个404错误,但它应该被映射到打电话给我的行动方法上我的控制器类,如下:
package com.caelum.tarefas.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TarefasController {
@RequestMapping("/olaMundo")
public String execute(){
return "ok";
}
}
我的聚甲醛。 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>com.caelum.tarefas</groupId>
<artifactId>fj21-spring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>fj21-spring</name>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
\t <dependencies>
\t \t <dependency>
\t \t \t <groupId>org.springframework</groupId>
\t \t \t <artifactId>spring-context</artifactId>
\t \t \t <version>4.2.5.RELEASE</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>org.springframework</groupId>
\t \t \t <artifactId>spring-aop</artifactId>
\t \t \t <version>4.2.5.RELEASE</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>org.springframework</groupId>
\t \t \t <artifactId>spring-webmvc</artifactId>
\t \t \t <version>4.2.5.RELEASE</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>org.springframework</groupId>
\t \t \t <artifactId>spring-web</artifactId>
\t \t \t <version>4.2.5.RELEASE</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>javax.servlet</groupId>
\t \t \t <artifactId>jstl</artifactId>
\t \t \t <version>1.2</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>commons-logging</groupId>
\t \t \t <artifactId>commons-logging</artifactId>
\t \t \t <version>1.1.3</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>org.springframework</groupId>
\t \t \t <artifactId>spring-jdbc</artifactId>
\t \t \t <version>4.2.5.RELEASE</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>org.springframework</groupId>
\t \t \t <artifactId>spring-aspects</artifactId>
\t \t \t <version>4.2.5.RELEASE</version>
\t \t </dependency>
\t \t <dependency>
\t \t \t <groupId>org.slf4j</groupId>
\t \t \t <artifactId>slf4j-api</artifactId>
\t \t \t <version>1.7.19</version>
\t \t </dependency> \t \t \t
\t \t <dependency>
\t \t \t <groupId>org.slf4j</groupId>
\t \t \t <artifactId>slf4j-log4j12</artifactId>
\t \t \t <version>1.7.19</version>
\t \t </dependency> \t
\t </dependencies>
</project>
而且我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>fj21-spring</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我的Spring XML配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
\t xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
\t xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\t xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
\t <context:component-scan base-package="com.caelum.tarefas" />
\t <mvc:annotation-driven></mvc:annotation-driven>
\t
\t <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
\t \t <property name="prefix" value="/WEB-INF/views/" />
\t \t <property name="suffix" value=".jsp" />
\t </bean>
</beans>
我希望有人可以帮助我。我曾尝试在Eclipse中重新创建服务器,删除了该项目并创建了另一个,但直到现在还没有任何工作。
谢谢!
编辑
我对Controller类注释改为@RequestMapping后(值=“/ olaMundo”),Tomcat的写在控制台上一个堆栈跟踪,它遵循(也许我太之前错过了这个堆栈跟踪):
GRAVE: Servlet [spring] in web application [/fj21-spring] threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:504)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:486)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1146)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5318)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5610)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
您尝试显示的jsp是否叫做“ok.jsp”? 如果不是这样,那么当您的控制器返回“ok”时,它将在您的视图文件夹中查找。
尝试更换您的@RequestMapping("/olaMundo")
与@RequestMapping(value="/olaMundo")
是的,我的视图文件夹中有一个“ok.jsp”文件。 –
不工作,但谢谢你的人! –
我不低估你。如果你看到,有人也低估了我的问题。我甚至试图“提高”你,但我是*的新手,没有足够的声望让我的选票改变,其他人可以看到。 –
请不要发布错误链接,而是直接将错误内容添加到您的问题。 – pczeus
也许你应该包含关于你如何尝试访问控制器方法的信息。什么是你打的完整URL?你如何部署你的应用程序?它看起来在Tomcat上。这是一场战争吗?爆炸战争?你的战名是什么? – pczeus
编辑您的问题并复制Tomcat在Eclipse的选项卡“控制台”中生成的堆栈跟踪。 404错误没有解释任何东西,你可以删除图像。只需复制URL并记下它生成的404。 – RubioRic