javaWeb之拦截器Intercepter

拦截器简介

HandlerInterceptor 的功能跟filter类似,但是提供更精细的的控制能力:

在request被响应之前、request被响应之后、视图渲染之前以及request全部结束之后。

我们不能通过拦截器修改request内容,但是可以通过抛出异常(或者返回false)来暂停request的执行

 

拦截器特点
1、拦截器是基于java反射机制来实现的或是基于动态代理来实现的
2、拦截器不依赖servlet容器。
3、拦截器只对Action起作用。
4、拦截器可以访问Action上下文和值栈中的对象。
5、在Action的生命周期中,拦截器可以多次调用。

使用方法

1、添加类实现HandlerInterceptor


public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //判断是否需要拦截
        System.out.println("在请求处理之前进行调用(Controller方法调用之前)");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if("admin".equals(username) && "123456".equals(password)) {
            return true;
        }else {
            return false;
        }

    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截时处理逻辑");
        System.out.println("请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");

    }
}

 2、添加配置类实现WebMvcConfigurer接口

@Configuration
public class MyConfig implements WebMvcConfigurer {
    /**
     * 
     */
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {

    }
    /**
     * 配置内容裁决的一些选项
     */
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {

    }
    /**
     * 
     */
    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {

    }
    /**
     * 默认静态资源处理器
     */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

    }
    /**
     * 格式化配置
     */
    @Override
    public void addFormatters(FormatterRegistry registry) {

    }

    /**
     * 拦截器配置
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/login1");
    }
    /**
     * 静态资源处理
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

    }
    /**
     * 解决跨域问题
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {

    }

    /**
     *视图跳转控制器
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {

    }
    /**
     * 配置视图解析器
     */
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {

    }
    /**
     *请求参数拦截处理配置
     */
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {

    }
    /**
     * 返回值拦截处理配置
     */
    @Override
    public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {

    }
    /**
     * 信息转换器
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

    }
    /**
     * 信息转换器
     */
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {

    }
    /**
     * 
     */
    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {

    }
    /**
     * 
     */
    @Override
    public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {

    }
    /**
     * 
     */
    @Override
    public Validator getValidator() {
        return null;
    }
    /**
     * 
     */
    @Override
    public MessageCodesResolver getMessageCodesResolver() {
        return null;
    }
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值