上次课我们讲了springboot的入门案例,今天先讲一下springboot2.x的简单几种用法,后续我会重点分析springboot2.x的配置文件和启动原 理。(说明:本教程内容详细,主要是照顾基础薄弱的朋友)
回顾: 入门案例中我们讲启动的部分和业务代码放在一起,现在我们将他们分开,如下图所示。
1.
2.
这样也是可以启动访问的(注意启动类Application和controller包同级,后续我解释原因)
3.
一 . 在将今天的课之前简单介绍一些springboot的注解
1. 简介:SpringBoot2.xHTTP请求注解讲解和简化注解配置技巧
1)@RestController and @RequestMapping是springMVC的注解,不是springboot特有的
2)@RestController = @Controller+@ResponseBody
3)一个顶俩
@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@PutMapping = @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)
注意等号:使用的时候会进一步说明。
二.springboot2.x的基础使用
2.测试restful协议,从路径中获取字段
1) 1)
2)我们启动项目访问试一试
3)
现在我们试一试使用Postman访问一下,不会Postman的可以去学习一下,很简单很实用的谷歌插件,工作中经常使用到。
3.功能描述:测试GetMapping
1)
2)
4.功能描述:默认值,是否必须的参数
1)
2)
3)
扩展:
5.功能描述:bean对象传参
1)
2)
3)
6. 功能描述:测试获取http头信息
在实际项目开发中,比如微服务,有时候资源访问是需要权限效验的,这个token就是这样的一种方式,它相当于一把钥匙决定你是否能获得资源。当然在实际项目中token是动态的。
1)
2)
当然我这里并没有做token的效验,网上也是有资料的大家可以去看看。
7.用javaWeb的请求方式:HttpServletRequest request自动注入获取参数
1)
2)
8.测试PostMapping
1)
2)
9. @PutMapping 一般是更新用的
1)
2)
10.@DeleteMapping删除
1)
2)
简介:介绍常用json框架和注解的使用,自定义返回json结构和格式
1、常用框架 阿里 fastjson,谷歌gson等
JavaBean序列化为Json,性能:Jackson > FastJson > Gson > Json-lib 同个结构
Jackson、FastJson、Gson类库各有优点,各有自己的专长
空间换时间,时间换空间
2 jackson处理相关自动(json数据反馈到前端时需要注意的)
1)
2)
3)
4)
5)再启动访问
四.SpringBoot2.x目录文件结构讲解
简介:讲解SpringBoot目录文件结构和官方推荐的目录规范
1、目录讲解
src/main/java:存放代码
src/main/resources
static: 存放静态文件,比如 css、js、image, (访问方式 http://localhost:8080/js/main.js)
templates:存放静态页面jsp,html,tpl
config:存放配置文件,application.properties
resources:
2.同个文件的加载顺序,静态资源文件
Spring Boot 默认会挨个从
META/resources > resources > static > public 里面找是否存在相应的资源,如果有则直接返回。
简单测一下同一个文件在不同的文件下的加载顺序
1)resources 里面的test.js优先打印
2)将resources 里面的test.js文件删除,则打印static文件里面的test.js的内容
3)同理可以继续测下去
3.如何访问一个静态的资源(js和html等)?
1)
2)
3)
4)
5)我们访问templates文件试一试
要访问这个文件里面的html文件必须要引入依赖
Thymeleaf
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
6)
7)
扩展:如果FileController返回的是index2,或是index3会怎么样呢
报错如下
很明显我们加的这个依赖是为访问templates文件下面的。
4.如何访问一个.css和图片呢
1)
2)
写了反而报错
同理访问图片也是一样的
这是官网静态文件访问的规则
官网地址:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-static-content
5.如何访问一个自定义的文件下面的内容呢?
1)在resources文件下创建application.properties文件
2)application.properties文件里面填写
spring.resources.static-locations=classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ ,classpath:/zidingyi/,file:${web.upload-path}
3)
4)
结论:application.properties中配置之后自定义的文件变成了默认的文件。
面试知识点:一般在实际开发中静待资源文件放在CDN上,大大加快资源访问速度,在后续的教程将会讲如何搭建图片服务器以及静态资源服务器等
注意 :如果想要直接访问html页面,则需要把html放在springboot默认加载的文件夹下面(static,public,resources)
五.简单的文件上传
springboot文件上传使用 MultipartFile file,源自SpringMVC,这个用的比较多,就介绍这个。
MultipartFile 对象的transferTo方法,用于文件保存(效率和操作比原先用FileOutStream方便和高效)
1)在static文件下加入upload.html文件
2) 启动项目
3)在controller下的FileController类书写文件上传的java代码
4)注意:文件名不唯一的话图片会覆盖
5)domain包下创建JsonData类
6)重启应用
7)
8)
6.文件上传的优化
这里我们应该限制一下文件上传的大小
也就是加一个拦截器
我们尝试上传一个5.3M的图片
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:
The field head_img exceeds its maximum permitted size of 1048576 bytes.
MultipartFile 文件上传默认大小就是1M左右,ok,如果我要上传更大的文件怎么办呢?
1、文件大小配置,启动类里面配置(注意:后面我会把这个拦截配置放到配置文件中)
上传成功
7.将项目打jar包,需要增加maven依赖
打包方式:项目右键,Run As >> maven install
1)
如果没加相关依赖,执行maven打包,运行后会报错:
GUI:反编译工具,作用就是用于把class文件转换成java文件
在target文件下打开命令运行这个jar包(shift+鼠标右键)
运行如下: java -jar +jar包名称
其实就是找不到程序入口
2)加入依赖重复以上操作
成功启动
8.文件上传和访问需要指定磁盘路径
我们项目打包后是无法将图片放进去的,所以应该
文件上传和访问需要指定磁盘路径
1)application.properties中增加下面配置
{}代表读取当前配置文件里面web.upload-path对应的值
2)修改配置
3)重复以上操作打jar包: >> target 文件下启动用命令启动jar包
访问
4)