上一篇分享的是《提高工作效率的IDEA插件》,这篇给大家分享《SpringBoot简明教程》。
SpringBoot简明教程
一、SpringBoot简介
1、什么是SpringBoot
SpringBoot用来简化spring应用开发,约定大于配置,去繁从简,是J2EE一站式解决方案
2、SpringBoot的优点
- 快速创建独立运行的Spring项目以及主流框架的集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starts自动依赖与版本控制
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 准生成环境的运行时应用监控
- 与云计算天然集成
3、Spring Boot Flow体系结构
4、SpringBoot项目
1.SpringBoot项目常见目录结构
2.SpringBoot项目分层
(1)Controller层:控制层
Controller层负责具体的业务模块流程的控制。Controller层负责前后端交互,接受前端请求,调用Service层,接收Service层返回的数据,最后返回具体的页面和数据到客户端。
(2)Service层:业务层
Service层负责业务模块的逻辑应用设计。先设计放接口的类,再创建实现的类,然后在配置文件中进行配置其实现的关联。Service层调用Dao层接口,接收Dao层返回的数据,完成项目的基本功能设计。封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。
(3)Dao层:数据访问层
Dao层负责与数据库进行交互。Dao层封装对于数据库的增删改查,不涉及业务逻辑,只是达到按某个条件对数据库中的数据进行某一具体操作的要求。(有的项目中也将Dao层写为Mapper层)
(4)Domain层:数据表对象层
Domain层定义数据库中存储的实体类。(有的项目也将Domain层写为Entity层或Model层)
(5)Config层:配置类层
Config层定义一些与配置有关的类。
3.工作流程
二、Controller层(demo1_controller项目)
1、新建项目
安装IDEA:JAVA语言开发的集成环境
安装JDK:JAVA开发工具包
安装Maven:项目包管理工具,在pom.xml中需要使用的库,maven可自动下载
1.项目建立过程
1.点开File-New-Project,在左侧栏中找到Spring Initializr,在Project SDK栏中选择JDK版本(8),然后点击Next
2.填完信息后,点击Next
此处的组织名和项目名由自己命名,仅是一个项目标识符,没有特别的规则
3.此界面可以选择需要的依赖于选择SpringBoot的版本。此时我们只需要用到spring Web依赖,点击Next。如果后续需求有所变化,可以在pom.xml文件进行修改
4.检查当前页面,点击Finish,此时已经成功新建一个SpringBoot项目
2.新建项目的目录结构
- /src/main/java/com/example/demo1_controller/Demo1ControllerApplication:启动类
- /src/main/resources目录下目录结构static:保存所有的静态资源 js css imagestemplates:保存所有的模板页面(SpringBoot默认jar包使用嵌入式的Tomcat,默认不支持jsp页面,可以使用模板引擎freemarker、thyleaf),由于现在倾向前后端开发的模式(后台springboot,前端采用vue,react等),因此模板引擎逐渐在被主流技术淘汰。application.properties:SpringBoot应用配置文件,可以修改一些默认设置。(springboot支持properties和yaml两种格式的配置文件,只要文件名是application,springboot均可识别。)
- /src/test/java/com/example/demo1_controller/Demo1ControllerApplicationTests:测试类
项目使用的JDK版本可以在File->Project Structure文件夹下的内容进行修改
项目使用的Maven版本可以在File->Settings->Build,Execution,Deployment->Build Toos->Maven下修改
3.部分文件内容
- pom.xml文件
查看目前pom.xml的依赖模块
1 <!-- web模块 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-web</artifactId>
5 </dependency>
6 <!-- test模块 -->
7 <dependency>
8 <groupId>org.springframework.boot</groupId>
9 <artifactId>spring-boot-starter-test</artifactId>
10 <scope>test</scope>
11 </dependency>
新增maven-compiler-plugin插件指定jdk版本(根据实际情况(就是有没有报错)看是否要加,有的人不加也没有问题)。
1 <build>
2 <plugins>
3 <plugin>
4 <groupId>org.springframework.boot</groupId>
5 <artifactId>spring-boot-maven-plugin</artifactId>
6 </plugin>
7
8 <!-- maven-compiler-plugin插件 指定项目源码及编译后的Jdk版本 -->
9 <plugin>
10 <groupId>org.apache.maven.plugins</groupId>
11 <artifactId>maven-compiler-plugin</artifactId>
12 <version>3.8.1</version>
13 <configuration>
14 <source>1.8</source>
15 <target>1.8</target>
16 </configuration>
17 </plugin>
18 </plugins>
19 </build>
- application.properties文件内容为空
2、Controller类
1.新建Controller类
- 在/src/main/java/com/example/demo1_controller目录下新建文件夹controller(右键demo1_controller文件夹->New->Package:controller)
- 在controller文件夹下新建类StudentController(右键controller文件夹->New->Java Class:StudentController)
- 在StudentController类上添上注解@Controller,表明这是一个controller类(可以在里面定义一些路由函数)此时StudentController.java文件全部内容为
package com.example.demo1_controller.Controller;
import org.springframework.stereotype.Controller;
@Controller
public class StudentController {
}
2.尝试后端给前端返回一个Hello World内容
在StudentController方法类写HelloWorld()方法
1 @ResponseBody
2 @RequestMapping(value = "/helloworld")
3 public String HelloWorld() {
4 return "Hello World";
5 }
(1)@RequestMapping("url")是处理请求地址映射,url是请求路径的一部分。(@RequestMapping表明这是一个路由函数)
此时前端请求路径为:如下图,项目运行结果
@RequestMapping("url")也可以用在controller类上,此时controller类中的方法的请求路径后部分内容为类的url拼接上方法的url
如在controller类上添加@RequestMapping("/student")
1 @Controller
2 @RequestMapping(value = "/student")
3 public class StudentController {
4
5 @ResponseBody
6 @RequestMapping(value = "/helloworld")
7 public String HelloWorld() {
8 return "Hello World";
9 }
10 }
此时前端请求路径为:如下图,项目运行结果
(2)@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
controller类的方法可以通过返回值进行页面跳转,如果采用@ResponseBody则使该方法直接返回数据给前端
@ResponseBody注解可以直接放在controller类上,则表示该类所有方法返回值都是给前端的数据
1 @Controller
2 @ResponseBody
3 @RequestMapping(value = "/student")
4 public class StudentController {
5
6 @RequestMapping(value = "/helloworld")
7 public String HelloWorld() {
8 return "Hello World";
9 }
10 }
此时项目运行结果与(1)相同
(3)@RestController相当于@ResponseBody + @Controller合在一起的作用,是一种简洁写法。
1 @RestController
2 @RequestMapping(value = "/student")
3 public class StudentController {
4
5 @RequestMapping(value = "/helloworld")
6 public String HelloWorld() {
7 return "Hello World";
8 }
9 }
此时项目运行结果与(1)相同
3.初始页面
SpringBoot默认的页面映射路径(即模板文件存放的位置)为“classpath:/templates/*.html”。静态文件路径为“classpath:/static/”,其中可以存放JS、CSS等模板共用的静态文件
SpringBoot整合了springmvc的拦截功能,拦截了所有的请求。默认放行的资源是:resources/static/ 目录下所有静态资源。(不走controller控制器就能直接访问到资源)html页面如果放在resources/templates目录下,则需要走controller控制器,controller放行,允许该资源访问,该资源才能被访问到。否则就会报404错误
此时resources/static与 resources/templates 目录下都为空
我们在resources/static目录下新建HTML文件index.html,此时目录结构
index.html文件内容
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>初始页面</title>
6 </head>
7 <body>
8 欢迎来到SpringBoot
9 </body>
10 </html>
项目运行访问初始页面