美文网首页
springMVC转springboot总结之拦截器

springMVC转springboot总结之拦截器

作者: 伟BigBig | 来源:发表于2018-07-14 10:20 被阅读0次

    最近耐不住寂寞,又不想做新功能,所以闲来无事就把原本的springMVC框架换成了springboot,因为听说springboot能够提高开发效率,所以咳咳......

    接下来我分别用springMVC和springboot两种方式分别实现拦截器,这也是我在本系统中的大体实现方式,首先是springMVC

    1.先实现一个拦截器(本例用的是登录拦截器,是基于注解实现的,详情请往后看)
    public class LoginInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
            if (o instanceof HandlerMethod){
          //检查是否有@LoginRequired登录注解
                HandlerMethod handlerMethod = (HandlerMethod) o;
                Method method = handlerMethod.getMethod();
                LoginRequired annotation = method.getAnnotation(LoginRequired.class);
          //没有直接放行,有的话进行相应的验证
                if (annotation != null){
                    //具体验证逻辑略
                }
            }
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    
        }
    
        @Override
        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    
        }
    }
    
    2.登录注解
    /**
     * @author Javed javed.deng@gmail.com
     * @description 是否需要登录注解
     * @date 2018/1/21  18:04
     */
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface LoginRequired {
    }
    
    3.在xml文件中注册拦截器,添加如下代码
    <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
          <!-- 你自己的拦截器路径 -->
                <bean class="com.javed.p4m.interceptor.LoginInterceptor"/>
            </mvc:interceptor>
    </mvc:interceptors>
    
    4.如何使用。由第3步可以看出我们拦截的是所有路径,但是如果没有@LoginRequired注解的话也是不会起真正的拦截作用的
    @RequestMapping(value = "list", method = RequestMethod.GET)
      //使用@LoginRequired注解,那么这个方法就会需要登录才能访问
        @LoginRequired
        public ModelAndView articleListPage() {
            ModelAndView mv = new ModelAndView();
            mv.setViewName(PageConstants.ADMIN_PAGE_ARTICLE_LIST);
            return mv;
        }
    

    springMVC的使用方法到这里基本就完成了,接下来是springboot的拦截器使用方法

    1.写一个拦截器,同springMVC的拦截器一样,不用赘述。
    2.写一个注解,同上
    3.注册拦截器
    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
        @Bean
        public LoginInterceptor loginInterceptor(){
            return new LoginInterceptor();
        }
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(loginInterceptor()).addPathPatterns("/**");
        }
    }
    
    4.使用方法同上

    总结一下:通过代码我们可以对比出来,springMVC和springboot在实现拦截器方式上差别就是一个在xml中完成注册,一个是在代码中完成注册,springboot看起来确实要清爽一些,而且在多个拦截器的时候springboot就更清爽了。

    原本链接(我自己的小站):https://www.plaza4me.com/article/20180712220517202

    相关文章

      网友评论

          本文标题:springMVC转springboot总结之拦截器

          本文链接:https://www.haomeiwen.com/subject/ngiepftx.html