javaweb学习
六.Mybatis
12.动态sql
(1)if
随着用户的输入或外部条件的变化而变化的sql语句,我们称为动态sql
<if>(用于用xml映射文件的):用于判断条件是否成立。使用test属性进行判断,如果条件为true,则拼接SQL
<where>:where元素只会在子元素有内容的情况下才插入where子句。而且会自动去除子句开头的AND或OR
如:
<set>:动态地在行首插入SET关键字,并会删掉额外的逗号(用在update语句中):
(2)foreach
用于遍历表格
XML映射文件中:
属性:
(3)sql&include
<sql>:定义可重用的SQL片段
<include>:通过属性refid,指定包含的sql片段
开发须知
REST:表述性状态转换,是一种软件架构风格
=
注意:
- REST是风格,是约定方式,约定不是规定,可以打破
- 描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源。如:users、emps、books
开发流程:查看页面原型明确需求->阅读接口文档->思路分析->接口开发->接口测试->前后端联调
注意:一个完整的请求路径,应该是类上的@RequestMapping的Value属性+方法上的@RequestMapping的Value属性
可以将多个相同路径的Mapping注解合并到一起:
分页插件PageHelper
引入依赖:
代码示例:
七.文件上传
1.简介
前端的文件上传代码示例:
后端的文件接收代码示例:
2.本地存储
在服务器,接收上传上来的文件之后,将文件存储在本地服务器磁盘中
文件名可能重复,所以用uuid代替文件名
代码示例:
注意:在springboot中,文件上传,默认单个文件允许的最大大小为1MB,可以进行如下配置:
MultipartFile提供的方法:
3.阿里云OSS
阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商
阿里云对象存储OSS,是一款云存储服务,使用了OSS,就可以通过网络随时存储和调用包括文本、图片、音频和视频在内的各种文件
使用第三方服务的通用思路:
- 准备工作
- 参照官方SDK编写入门程序(SDK:软件开发工具包,包括辅助软件开发的依赖、代码示例等,都可以叫做SDK)
- 集成使用
使用方法:
Bucket:存储空间是用户用于存储对象(Object,就是文件)的容器,所有的对象都必须隶属于某个存储空间
集成
代码实例:
八.配置文件
1.参数配置化
@Value注解通常用于外部配置的属性注入,具体用法为:@Value(“${配置文件中的key}”),利于统一管理配置
代码实例:
2.yml配置文件
springboot提供了多种属性配置方式:
其中yml配置文件最简洁且以数据为中心
yml基本语法:
- 区分大小
- 数值前边必须有空格,作为分隔符
- 使用缩进表示层级关系,缩进时,不允许使用tab键,只能用空格(idea会自动将tab转换为空格)
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- #表示注释,从这个字符一直到行尾,都会被解析器忽略
yml数据格式:
-
对象/Map集合:
-
定义数组/List/Set:
3.@ConfigurationProperties
首先最好引入配置文件:
使用代码示例:
@ConfigurationProperties与@Value
相同点:都是用来注入外部配置的属性的
不同点:
- @Value注解只能一个一个的进行外部属性的注入
- @ConfigurationProperties可以批量的将外部的属性配置注入到beandui对象的属性中
九.登录认证
1.会话技术
会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据
会话跟踪方案:
- 客户端会话跟踪技术:Cookie
- 服务端会话跟踪技术:Session
- 令牌技术
2.方案对比
方案一:
优点:HTTP协议中支持的技术
缺点:移动端APP无法使用Cookie,不安全,用户可以自己禁用Cookie,Cookie不能跨域
跨域:跨域是指在进行网络通信时,由于安全策略的限制,浏览器不允许从一个源(domain)的网页去请求另一个源的资源
代码实例:
方案二:
=
优点:存储在服务器端,安全
缺点:服务器集群环境下无法直接使用Session,Session是基于Cookie的,所以Cookie的缺点Session也有
方案三:
3.JWT介绍
全程:JSON Web Token(https://jwt.io/)
定义了一种简洁的、自包含的格式,用于通信双方以json数据格式安全的传输信息,由于数字签名的存在,这些信息是可靠的
组成:
- 第一部分Header(头):记录令牌类型、签名算法等
- 第二部分Playload(有效载荷):携带一些自定义信息、默认信息等
- 第三部分Signature(签名):防止Token被纂改、确保安全性
JWT令牌例子:
4.JWT令牌的生成和校验
配置:
代码实例:
校验代码实例:
注意事项:
- JWT校验时使用的签名秘钥,必须和生成JWT令牌时使用的秘钥是配套的
- 如果JWT令牌解析器校验时报错,则说明JWT令牌被篡改或失效了,令牌非法