上一次主要介绍了转换器和拦截器的一般实现方法和在SSM套装中的配置方法。这次记录一下在SpringBoot中使用二者的方法和一些问题。
拦截器:
首先实现一个登录校验拦截器:
1 | public class UserInterceptor implements HandlerInterceptor { |
然后创建一个配置类去继承WebMvcConfigurationSupport,并且重写父类的addInterceptors(InterceptorRegistry registry)方法:
1 | //配置类 |
启动!拦截器就会生效了!
但是,这里有一个很讨厌的情况就出现了!之前好好的视图都解析失败了(之前properties中配置的视图解析器失效了)!原因应该是:手动创建了配置类后WebMvcConfigurationSupport创建了新的ViewResolver!
那就尝试在配置类中加入下列代码,自定义一个ViewResolver:
1 |
|
问题得到了解决!但是值得吐槽!
转换器:
最基础的、也很常用的时间转换器作为例子。
常见的几种日期格式化的情况:
jsp中使用JSTL的format标签库在前端进行日期格式化:
1
<fmt:formatDate value="${user.creattime}" pattern="yyyy-MM-dd HH:mm:ss"/>
application.properties中对请求处理器的JSON返回值的日期的格式化配置,前端拿到后不需要处理就获的已格式化的日期:
1
2
3#格式化时间
yyyy/MM/dd hh:mm:ss =
GMT+8 =使用转换器:后端处理器接收到的前端传参来的日期一般是String类型的,不能直接自动赋值给后端的Date格式的变量,这时就要用到自定义Converter了!SpringBoot和SpringMVC使用转换器的区别:
区别很明显!SpringBoot不需要进行xml配置!!直接在实现的dateConverter上加上@Component注解,SpringBoot默认的自动配置就会将实现的dateConverter扫描并加载到容器中以备使用!当前端传回来Sring类型的日期时,自动会进到dateConverter中调用convert()方法进行解析格式化!
转换器的介绍和实现方法在开头链接博文:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class dateConverter implements Converter<String, Date> {
public Date convert(String s) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
Date date = null;
try {
date = sdf.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}运行时通过Debug发现,dateConverter已经自动被扫描和加载了: