接收 404 运行弹簧靴
Posted
技术标签:
【中文标题】接收 404 运行弹簧靴【英文标题】:Receiving a 404 running spring boot 【发布时间】:2016-02-16 15:47:02 【问题描述】:您好,我是 Spring 新手,尝试使用 Spring Boot 时收到 404 错误。尝试在浏览器中查看 url 时,我不断收到 404 错误。请有人协助并指出我出了什么问题。我在控制器中放置了一个调试器来打印 HH,但我观察到它永远不会进入控制器,因为它无法在控制台上打印“HH”。 我也从控制台注意到了这一点:
:50.894 INFO 11249 --- [lication.main()] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "[/error]" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-11-15 07:11:50.894 INFO 11249 --- [lication.main()] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "[/error],produces=[text/html]" onto public org.springframework.web.servlet.ModelAndView org.springframework.
下面是我的控制器:
@RestController
public class TestController
@RequestMapping(value="/person")
public String intro()
System.out.println("HH");
return "index";
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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>org.springExample.www</groupId>
<artifactId>Hotel-Management</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
MainApplication.java:
@SpringBootApplication
public class MainApplication
public static void main(String[] args)
SpringApplication.run(MainApplication.class, args);
index.html 定义在 src/main/resources/templates:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initialscale=1">
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" integrity="sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" crossorigin="anonymous">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5
elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the
page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/
3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/
1.4.2/respond.min.js"></script>
<![endif]-->
<style>
.box
background-color:#d3d3d3
</style>
</head>
<body>
<h1>Hello, world!</h1>
<div class="container">
<div class="row">
<div class="col-md-6 box">Content</div>
<div class="col-md-6 box">Content</div>
</div>
</div>
<!-- jQuery (necessary for Bootstrap's javascript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/
jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js" integrity="sha512-K1qjQ+NcF2TYO/eI3M6v8EiNYZfA95pQumfvcVrTHtwQVDG+aHRqLi/ETn2uB+1JqwYqVG3LIvdm9lj6imS/pQ==" crossorigin="anonymous"></script>
</body>
</html>
【问题讨论】:
我不认为你想要@RestController
,因为那是为了返回数据(例如,JSON)而不是 HTML。也许试试普通的@Controller
?
@kuporific 不,没有用
@kuporific 是对的,只需将@RestController
更改为@Controller
。 @RestController = @Controller + @ResponseBody
。使用带有原始数据的 @ResponseBody
方法进行注释,即 JSon/XML/Text。
@kuporific 将您的 RequestMapping 从 @RequestMapping(value="person")
更改为 @RequestMapping(value="/person")
。所以,改成@Controller
,把requestmapping改成@RequestMapping(value="/person")
。
@RodrigoGarcia 我都做了。两者都无济于事。它甚至无法打印出“HH”
【参考方案1】:
有几点需要注意:
-
使用
@Controller
而不是@RestController
。第一个旨在处理视图,第二个旨在返回原始数据。
将视图移至src/main/java/webapp/WEB-INF/
。这是视图的常规位置,而不是 /src/main/resources
。
将intro()
方法的返回值从index
更改为templates/index
。通往视图的整个路径都很重要。
添加一个用@Configuration
注释的类,该类定义一个查找.html
视图的ViewResolver
bean(请参阅this answer)。
【讨论】:
但我没有使用jsp。我正在使用百里香,根据文档,我想在模板中创建 html 文件。位于/src/main/resources。以上是关于接收 404 运行弹簧靴的主要内容,如果未能解决你的问题,请参考以下文章
弹簧靴 |替代在资源文件夹中使用 Intellij 静态和模板运行