springboot-笔记
VO: 表现层对象(View Object),主要对应展示界面显示的数据对象,用一个VO对象来封装整个界面展示所需要的对象数据,数据脱敏,去掉用户隐私数据。VO:View Object,视图层,其作用是将指定页面的展示数据封装起来。model:用于接收数据库中的数据,通过mybatis 的ORM对象关系映射来获取数据IDTypeAUTO 数据库ID自增INPUT 用户输入IDID_WORKER 全
VO: 表现层对象(View Object),主要对应展示界面显示的数据对象,用一个VO对象来封装整个界面展示所需要的对象数据,数据脱敏,去掉用户隐私数据。
VO:View Object,视图层,其作用是将指定页面的展示数据封装起来。
model:用于接收数据库中的数据,通过mybatis 的ORM对象关系映射来获取数据
IDType
AUTO 数据库ID自增
INPUT 用户输入ID
ID_WORKER 全局唯一ID,Long类型的主键
ID_WORKER_STR 字符串全局唯一ID
UUID 全局唯一ID,UUID类型的主键
NONE 该类型为未设置主键类型
这个是在yml文件中定义的全局配置
field-strategy:
IGNORED (忽略 如果字段是null,就用null更新)
not_null (不为null, 当字段是null时,就忽略这个字段的更新)
not_empty (不为null和‘’, 当字段是null或者是空时,忽略这个字段的更新)
设置map-underscore-to-camel-case属性为true来开启驼峰功能
2.使用Mybatis时,如果查询语句中某些字段值是null的,则这个字段就无法返回。对于后台数据处理来说,这是一个致命的问题,于是通过修改Mybatis的配置来解决这个问题。
在springmvc下,在mybatis的配置文件里面增加以下配置即可:
mybatis.configuration.call-setters-on-nulls=true
calc() 函数用于动态计算长度值。
width: calc(100% - 100px);
contents()
contents() 方法返回所有直接子元素,包括被选元素的文本和注释节点。
contents() 方法也能访问 iframe 的 HTML。
box-sizing:content-box
当我们设置 box-sizing: content-box; 时,浏览器对盒模型的解释遵从我们之前认识到的 W3C 标准,当它定义width和height时,它的宽度不包括border和padding。
iframe标签的属性
align:left、right、top、middle、bottom。用于规定如何根据周围的元素来对齐此框架。不赞成使用。请使用样式代替。
frameborder:1、0。用于规定是否显示框架周围的边框。
height:pixels、%。用于规定iframe的高度。
longdesc:URL。规定一个页面,该页面包含了有关iframe的较长描述。
marginheight:pixels。定义iframe的顶部和底部的边距。
marginwidth:pixels。定义iframe的左侧和右侧的边距。
name:frame_name。规定iframe的名称。
scrolling:yes、no、auto。规定是否在iframe中显示滚动条。
src:URL。规定在iframe中显示的文档的URL。
width:pixels。%。定义iframe的宽度。
this,that的用法
$(‘#conten').click(function(){
//this是被点击的#conten
var that = this;
$(‘.conten').each(function(){
//this是.conten循环中当前的对象
//that仍然是刚才被点击的#conten
});
});
this对象在程序中随时会改变,而var that=this之后,that没改变之前仍然是指向当时的this,这样就不会出现找不到原来的对象。
window.setInterval(“reinitIframe()”, 200);
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
justify-content 属性
justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。
CSS object-fit 属性
对图片进行剪切,保留原始比例:
object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。
object-fit 一般用于 img 和 video 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。
fill 默认,不保证保持原有的比例,内容拉伸填充整个内容容器。
contain 保持原有尺寸比例。内容被缩放。
cover 保持原有尺寸比例。但部分内容可能被剪切。
none 保留原有元素内容的长度和宽度,也就是说内容不会被重置。
scale-down 保持原有尺寸比例。内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。
initial 设置为默认值,关于 initial
注解
@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
注意在使用@NotBlank等注解时,一定要和@valid一起使用,不然@NotBlank不起作用
public class demo{
@NotNull(message="用户id不能为空")
private Long userId;
@NotBlank(message="用户名不能为空")
private String userName;
@NotBlank(message="年龄不能为空")
private String age;
}
@PostMapping("/xxx")
public String createDemo(@RequestBody @Valid Demo demo, BindingResult result){
if(result.hasErrors())
return result.getFieldError().getDefaultMessage();
return "sucess";
}
@Accessors(chain = true)注解
这个注解是来自与Lombok里的,具体的作用是开启链式编程,让我们写代码更加方便。
翻译是存取器。通过该注解可以控制getter和setter方法的形式。
fluent 若为true,则getter和setter方法的方法名都是属性名,且setter方法返回当前对象。
@EqualsAndHashCode(callSuper = true)
该注解用于子类对象之间进行比较的时候
不加该注解的影响:子类对象属性值一致,但其继承的父类对象属性值不一致,在比较的时候会出现比较结果不对的情况。
Spring注解之@validated的使用
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入参数是否合法,可以用如下方式
@Slf4j
@Slf4j是用作日志输出的,一般会在项目每个类的开头加入该注解,如果不写下面这段代码,并且想用log
@component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=""/>)
@ConfigurationProperties会根据配置文件的信息调用声明对象的set方法
@ResponseStatus注解作用
@ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中
这里我们说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是异常的描述,
需要重点注意的是不管该方法是不是发生了异常,将@ResponseStatus注解加在目标方法上,一定会抛出异常。但是如果没有发生异常的话方法会正常执行完毕。
@ExceptionHandler:统一处理某一类异常,从而能够减少代码重复率和复杂度
@ControllerAdvice:异常集中处理,更好的使业务逻辑与异常处理剥离开;其是对Controller层进行拦截
@ResponseStatus:可以将某种异常映射为HTTP状态码
IllegalArgumentException不合法的参数异常
expiration.before(new Date())判断当前日期是否在过期日期之前。
isAccessAllowed:判断是否登录
在登录的情况下会走此方法,此方法返回true直接访问控制器
onAccessDenied:是否是拒绝登录
没有登录的情况下会走此方法
如果isAccessAllowed方法返回True,则不会再调用onAccessDenied方法,如果isAccessAllowed方法返回Flase,则会继续调用onAccessDenied方法。而onAccessDenied方法里面则是具体执行登陆的地方。由于我们已经登陆,所以此方法就会返回True(filter放行),所以上面的onPreHandle方法里面的onAccessDenied方法就不会被执行。
Assert 类中的常用断言方法:
notNull(Object object)
当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;
isTrue(boolean expression) / isTrue(boolean expression, String message)
当 expression 不为 true 抛出异常;
notEmpty(Collection collection) / notEmpty(Collection collection, String message)
当集合未包含元素时抛出异常。
notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分别对 Map 和 Object[] 类型的入参进行判断;
hasLength(String text) / hasLength(String text, String message)
当 text 为 null 或长度为 0 时抛出异常;
hasText(String text) / hasText(String text, String message)
text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message)
如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;
isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message)
subType 必须可以按类型匹配于 superType,否则将抛出异常;
@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
Spring注解之@validated的使用
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入参数是否合法,可以用如下方式
longValue()是Long类的一个方法,用来得到Long类中的数值。
router.replace
跳转登录页
携带当前页面路由,以在登录页面完成登录后返回当前页面
router.replace({
path: '/login',
query: {
redirect: router.currentRoute.fullPath
}
});
Content-Type: application/json : 请求体中的数据会以json字符串的形式发送到后端
Content-Type: application/x-www-form-urlencoded:请求体中的数据会以普通表单形式(键值对)发送到后端
Content-Type: multipart/form-data: 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。
URLSearchParams
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。
最近一直有用到解析各种数据,主要是用FastJson进行数据解析,其中一个重要的类为JSONObject,今天有时间,所以进行总结一下:
JSONobject
是FastJson提供的对象,在api中是用一个私有的常量map进行封装的,实际就是一个map,只不过FastJson对其进行了封装,
添加了很多方便快捷的属性方法。
private final Map<String, Object> map;
在项目中添加maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.48</version>
</dependency>
先来看下它有哪些常用方法,以及有什么作用:
1.put(String key, Object value)方法,在JSONObject对象中设置键值对在,在进行设值得时候,key是唯一的,如果用相同的key不断设值得时候,保留后面的值。
2.Object get(String key) :根据key值获取JSONObject对象中对应的value值,获取到的值是Object类型,需要手动转化为需要的数据类型
3.int size():获取JSONObject对象中键值对的数量
4.boolean isEmpty():判断该JSONObject对象是否为空
5.containsKey(Object key):判断是否有需要的key值
6.boolean containsValue(Object value):判断是否有需要的value值
7.JSONObject getJSONObject(String key):如果JSONObjct对象中的value是一个JSONObject对象,即根据key获取对应的JSONObject对象;
8.JSONArray getJSONArray(String key) :如果JSONObject对象中的value是一个JSONObject数组,既根据key获取对应的JSONObject数组;
9.Object remove(Object key):根据key清除某一个键值对。
由于JSONObject是一个map,它还具有map特有的两个方法:
10.Set<String> keySet() :获取JSONObject中的key,并将其放入Set集合中
11.Set<Map.Entry<String, Object>> entrySet():在循环遍历时使用,取得是键和值的映射关系,Entry就是Map接口中的内部接口
与String字符串转换:
12.toJSONString() /toString():将JSONObject对象转换为json的字符串
position:absolute相对哪个元素定位
生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。
元素默认的定位值是static,所以往上找参照元素一直到根元素了。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)