目录
1.实现拦截器 Interceptor (以登录拦截器为例)
7.Spring框架里自带的加盐算法(Spring Security)
1.实现拦截器 Interceptor (以登录拦截器为例)
1.1 写一个登录拦截器普通类
- 实现HandlerInterceptor接口
- 重写preHandle方法
//检验登录状态拦截器
//实现接口HandlerInterceptor 重写方法preHandle
public class LoginInterceptor implements HandlerInterceptor {
/*
* 该方法返回为true,用户已登录
* 该方法返回为false,用户未登录
* */
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取会话
HttpSession session = request.getSession(false);
if(session != null && session.getAttribute(AppVariable.USER_SESSION_KEY) != null) {
//用户已经登录
return true;
}
//未登录,则跳转到登录页面
response.sendRedirect("/login.html");
return false;
}
}
2.2 设置拦截规则
- 加@Configuration注解
- 实现WebMvcConfigurer接口
- 重写addInterceptors方法
//设置拦截规则
// 1. 加注解@Configuration
// 2. 实现接口WebMvcConfigurer 重写方法addInterceptors
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()) //参数就是第一步的普通类
.addPathPatterns("/**") //先拦截全部的 再排除一些不需要拦截的
.excludePathPatterns("/css/**")
.excludePathPatterns("/editor.md/**")
.excludePathPatterns("/img/**")
.excludePathPatterns("/js/**")
.excludePathPatterns("/login.html")
.excludePathPatterns("/reg.html")
.excludePathPatterns("/blog_list.html")
.excludePathPatterns("/blog_content.html")
.excludePathPatterns("/art/detail")
.excludePathPatterns("/user/login")
.excludePathPatterns("/user/reg");
}
}
2.深克隆方法,判空方法 (spring提供)
- 深克隆
- StringUtils.hasLength(); 参数校验
- 底层原理还是和普通的参数校验一样
3.时间日期格式化
- 1. 全局日期格式化
这种方式的缺点是只对时间数据