【发布时间】:2017-12-28 15:33:50
【问题描述】:
嘿,我正在尝试使用 maven 构建简单的 hello world spring web 应用程序。
当我转到 url http://localhost:8080/mvc/greeting 它给我 404。
这是我的pom
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
<groupId>com.ilyas.learning.mvcspring</groupId>
<artifactId>mvc</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>mvc</name>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>1.5.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.9.RELEASE</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
这是问候课
@控制器 公共类 GreetingController {
@RequestMapping(value = "/greeting", method=RequestMethod.GET)
public String greeting(@RequestParam(value = "name", defaultValue = "World") String name){
return "Hello " + name;
}
}
这里是主类。
公共类 Main 扩展 SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Main.class);
}
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
【问题讨论】:
-
你试过没有
/mvc吗?您的代码中没有任何内容指定 Spring 将部署到/mvc上下文。 -
是的,我试过了,localhost:8080/mvc 工作正常并打印 index.html 上下文。
-
我猜你希望消息
Hello World!"被返回,但它没有。当然不会,因为它是@Controller,然后当返回String时,它假定它是要渲染的视图的名称。它将解析为某些模板或静态文件(因此无法找到 404)。将@ResponseBody添加到您的方法中,表明您希望将String作为响应正文返回,或者将@Controller替换为@RestController。
标签: java spring-mvc