前段时间刚刚学完Spring 以及一些框架。这几天看了一下SpringBoot的相关知识,一起看看Spring Boot 的 Hello World!
在这里我是用的是Idea :file->new project -> Spring Initializr ;->next 然后填写 Group Artifact -->next-->勾选web -->finish.项目创建完成后,会有如下结构:
其中的 src/main/java/com/...存放的是我们的Java代码
而resource下面的 static 存放的是我们的静态资源 :js css img 等
template是 存放者我们的 页面视图资源 比如 Html 等
XXXApplication.java 是我们Spring Boot项目的启动入口。
application.properties是做一些端口配置等。
OK ,我们进行下一步:创建一个package 在下面创建一个IndexController.java
package com.example;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/hello")
public String hello(){
System.out.println("进入了ConTroller");
return "index";
}
}
然后在 resource template下面 创建一个index.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
需要注意的是 idea 生成的html 文件 <meta 标签少一个 结束符 />
最后我们运行XXXApplication 就OK了;
由于我们是在main 方法中启动的 ,所以我们的访问路径 不需要带项目名。
访问路径:http://localhost:8080/hello
没有意外应该就可以正常显示了。
遇到的错误:
1)项目的 xxx.pom文件中配置缺失如下代码
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<scope></scope>
</dependency>
我们在pom文件中可以找到:<dependency>标签会发现 它的 <artifactId>是
<artifactId>spring-boot-starter-test</artifactId>而我们所需要的是上面的代码。关于这个部分,我也是新手,只了解这么多了。
2)第二个容易犯的错误 就是 你的 xxxApplication文件 与 你的Controller 包的层次出现了问题。xxxApplication这个类它会扫描它的同一层包,或者 它的子包。比如:你的controller在包com.boot下,而你的 xxxApplication 在 包 com.controller.mxy下,则 xxxApplication 并不会扫描的你的Controller ,从而导致 404 错误 。
3)第三个错误 是注解的使用。我在刚开始的时候 使用:@RestController 运行项目时发现在屏幕上的是一个 字符串 比如 “index”,在这儿只需要把它修改为@Controller即可。关于注解我们在细说。
@Controller @RestController @ResponseBody
1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
等同于
@Controller
@RespondBody
....
2)如果想访问指定页面 则需要使用 @Controller
3)如果你想返回一个JOSN 或其他 你应该 使用 @Controller + @ResponseBody 所以 @RestController = @Controller + @ResponseBody
第一次会遇到的坑 差不多都在这儿了,每次学一个技术都会写一个HelloWorld 每次都是 404 在这里 只需要理解以上三点 几乎所有的404 错误都可排除。补充一点,我们上面说了,由于项目是在 Main 方法中启动的,所以我们访问时不需要 项目名。