博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMMV添加拦截器Interceptor以及添加静态资源映射
阅读量:736 次
发布时间:2019-03-22

本文共 2416 字,大约阅读时间需要 8 分钟。

这个代码写了很久了,多久呢?2018年12-20号写的。。。。

废话不多说,简化一下,作为笔记。

注:

public class springmvcConfig extends WebMvcConfigurerAdapter 这种写法已废弃,WebMvcConfigurerAdapter不再推荐使用。

1:新建一个拦截器类,实现 HandlerInterceptor 接口

public class InterceptorConfig implements HandlerInterceptor {    private static final Logger log = LoggerFactory.getLogger(Filter.class);    /**     * httpServletRequest存储请求信息,如ip地址,url等     * preHandle进入Handler方法之前执行了,使用于身份认证,身份授权,登陆校验等,比如身份认证,用户没有登陆,     * 拦截不再向下执行,返回值为 false ,即可实现拦截;否则,返回true时,拦截不进行执行     **/    @Override    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {        String ip = httpServletRequest.getRemoteAddr();        String url = httpServletRequest.getRequestURI();        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");        Date date = new Date();        String time = sdf.format(date);        log.info("时间:{},IP地址:{},目标URL:{}", time, ip, url);        return true;    }    /**     * 进入Handler方法之后,返回ModelAndView之前执行,使用场景从ModelAndView参数出发,     * 比如,将公用的模型数据在这里传入到视图,也可以统一指定显示的视图等     **/    @Override    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {        log.info("i am in hendler before return modelandview...");    }    /**     * 在执行Handler完成后执行此方法,使用于统一的异常处理,统一的日志处理等     **/    @Override    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {        log.info("i am out of from handler...");    }}

2:新建一个mvc配置类实现 WebMvcConfigurer 接口,并加上 @Configuration 声明其为配置类

@Configurationpublic class SpringmvcConfig implements WebMvcConfigurer{    private static final Logger log = LoggerFactory.getLogger(SpringmvcConfig.class);    //图片映射    @Value("${images.path}")    private String imagesRoot;    //添加静态资源映射    @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        log.info("图片静态资源路径:{}", imagesRoot);            registry.addResourceHandler("/images/**").addResourceLocations(imagesRoot);    }    //添加拦截器    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(new InterceptorConfig());    }}

3:截图,标明拦截器的个方法执行顺序,如图

1:执行Prehandler

2:执行Controller中的代码

3:在返回ModelAndView之前执行postHandler

4:最后执行afterCompletion

 

 

转载地址:http://jnfwk.baihongyu.com/

你可能感兴趣的文章