springMVC转springboot总结之拦截器

2018-07-14  本文已影响0人  伟BigBig

最近耐不住寂寞,又不想做新功能,所以闲来无事就把原本的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

上一篇下一篇

猜你喜欢

热点阅读