[英]Why am I getting a 404 error when accessing my Spring MVC app URL?
我正在 Udemy 上学习我的第一个 Spring-MVC web 应用程序的教程。 我已经使用 XML 为 servlet 规范配置了它,完全按照 Controller class 的控制来返回一个字符串。 导航到 URL http://localhost:8080/spring-mvc/login 我得到一个 404。我的代码:
web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>Spring To do List</display-name>
<!--
<welcome-file-list>
<welcome-file>login.do</welcome-file>
</welcome-file-list>
-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/todo-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/spring-mvc/*</url-pattern>
</servlet-mapping>
</web-app>
todo-servlet.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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.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">
<context:component-scan base-package="com.wds" />
<mvc:annotation-driven/>
</beans>
''' LoginController.java ''' package com.wds.springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class LoginController {
@RequestMapping(value = "/login")
@ResponseBody
public String sayHello() {
System.out.println("performing hello");
return "hello world";
}
}
pom.xml:
4.0.0 com.in28minutes in28Minutes-first-webapp 0.0.1-SNAPSHOT war
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.2.RELEASE</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<verbose>true</verbose>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
我的理解是,如果 controller 方法执行,Dispatcher Servlet 应该返回 servlet 配置中指定的视图。 由于那里没有指定,它应该只从 controller 方法返回字符串,即“hello world”。 相反,我得到了 404。我感到困惑的是在控制台中,我可以看到 servlet 配置已经注册并且“say Hello”controller 方法映射到“/login”。 我已经在 controller 方法中放置了一个系统,但它不是 output。
知道为什么我得到 404 吗?
非常感谢
我建议在 controller 之上使用请求映射
@Controller
@RequestMapping("/spring-mvc")
public class TestController {
@RequestMapping("/login")
@ResponseBody
public String test(){
System.out.println("test is running");
return "test is working";
}
}
在 web.xml
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
优点:易于阅读代码以及易于扩展应用程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.