以前一直用的eclipse 现在试用一下idea,毕竟这是一个最近比较火的开发工具。
IDEA的安装与配置就不说了。我已经共享了非常详细的文档,当然了这里要感谢某个培训机构共享出来的资源,这里我就不说了。
文档链接:IntelliJ IDEA的安装、配置与使用(全套教程)
如果没有用过IDEA的话,强烈建议先看完上面的idea安装配置教程,如果没有积分可以留言或者@我一下留个邮箱什么的都可以,我看到给发一个邮件。
下面我们进入正题,新建第一个spring boot小项目
首先新建一个project,当然你也可以新建一个module。这个在我分享的教程里已经说的很详细了。
第二步
第三步
第四步,这一步很重要,要选择一个web模板!!!
第五步,这里起个名字,我直接用默认的了,点击完成(finish)
然后目录结构大致是这样的。
然后新建一个HelloController,代码及目录结构如下:
代码
package cn.btmianhua.springboot;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/**
* @author BABY
* @create 2018/8/31 - 11:12
*/
@Controller
public class HelloController {
@RequestMapping(value = "/hello")
@ResponseBody
public String hello() {
return "hello spring boot!";
}
@RequestMapping(value = "/tes")
public String testtest() {
System.out.println("tes");
return "testtest";
}
}
目录结构:
之后在resources下的templates中新建一个testtessst.html(名字我随便起的)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试一下</title>
</head>
<body>
<h1>测试一下</h1>
</body>
</html>
之后目录结构如下(那个btadmin不用管他):
这个时候其实已经可以运行了,双击打开SpringbootApplication,然后点击绿色的小三角项目就可以跑起来了。
出现下图的这个started就证明我们项目跑起来了,由于springboot中集成了,所以我们并不需要额外的配置tomcat。
浏览器访问http://localhost:8080/hello就会出现如下的信息。
但是当我们访问http://localhost:8080/tes的时候却出现了如下的404异常
检查控制台也并没有错误
经过我一阵好查,其实这个spring boot的一个坑!!搜索资料如下:
以下内容来源于网络
访问不了resources/templates下的页面,命名控制器代码也没有写错。然后自己加了@EnableWebMvc注解以及自己配置了视图解析器,到最后还是不能解决问题(可以发现配置了@EnableWebMvc后可以在控制台打印出页面的路径)。最后发现原来SpringBoot只支持模板引擎的原因。所以我认为可能是要加上一个模板引擎在依赖中负责渲染(springboot默认不支持jsp),这里我就选择使用thymeleaf,加上spring-boot-starter-thymeleaf在依赖中就解决了。
spring boot在springmvc的视图解析器方面就默认集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在视图引擎上就已经集成自动配置的模版引擎,如下:
-
FreeMarker
-
Groovy
-
Thymeleaf
-
Velocity (deprecated in 1.4)
-
Mustache
JSP技术spring boot 官方是不推荐的,原因有三:
-
在tomcat上,jsp不能在嵌套的tomcat容器解析即不能在打包成可执行的jar的情况下解析
-
Jetty 嵌套的容器不支持jsp
-
Undertow
而其他的模版引擎spring boot 都支持,并默认会到classpath的templates里面查找模版引擎。
当然还有第二种可能性,那就是你的@SpringBootApplication注解所在类的扫描不到控制器的位置(可以用MockMvc查出这个原因),要保证所有包的位置都保持在与@SpringBootApplication注解所在类的包同级或者下级,@SpringBootApplication自带的@ComponentScan只会扫描@SpringBootApplication注解所在类的包同级或者下级
好了既然知道原因了,那么就好解决了直接引入依赖就完成了。
打开pom.xml文件,添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
重启项目,刷新页面,问题解决。好了接下来就可以愉快的开发了。