如果想diy一些定制化的功能,只要写个组件,让后将它交给springboot,springboot就将他自动装配了
1.实现diy视图解析器
//如果想diy一些定制化的功能,只要写个组件,让后将它交给springboot,springboot就将他自动装配了
//扩展springmvc dispatchservlet
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//ViewResovler 实现了视图解析器接口的类,就可以把他看作接口的类,组件,调用diy
@Bean
public ViewResolver myViewResolver(){
return new MyViewResolver();
}
//实现视图解析器接口类,diy一个视图解析器
public static class MyViewResolver implements ViewResolver{
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return null;
}
}
}
2,自定义拦截器,
实现拦截器之前首先要去WebMvcConfigurer接口去重写addInterceptors方法,作用:去声明要拦截的路径,和过滤掉不拦截的资源(静态资源)
使用springboot的拦截器首先要实现HandlerInterceptor的实现类,用来配置拦截后的操作(拦截后是要给提示?还是转发页面)
2.1,WebMvcConfigurer接口实现(增加拦截器)
@Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginHandlerInterceptor()) //addPathPatterns拦截的请求,//排除的请求 .addPathPatterns("/**") .excludePathPatterns("/index.html","/","/user/login","/css/**","/js/**","/img/**"); }
2.2,实现拦截器接口
public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //登录成功后,应该有用户的session Object loginUser = request.getSession().getAttribute("loginUser"); if (loginUser==null){ //没有登录 request.setAttribute("msg","没有权限请先登录"); request.getRequestDispatcher("/index.html").forward(request,response); return false; }else { return true; } } }