首页 > 其他分享 >SpringMVC系列之(十二)拦截器

SpringMVC系列之(十二)拦截器

时间:2024-02-28 09:04:10浏览次数:18  
标签:Exception 拦截器 SpringMVC request 十二 接口 param response

拦截器

过滤器在这里插入图片描述

拦截器
在这里插入图片描述
拦截器链
在这里插入图片描述

1. 过滤器与拦截器的比较

  1. 过滤器是servlet规范中的一部分,任何Java web工程都可使用;拦截器是SpringMVC自己的,只能在SpringMVC工程中使用。
  2. 过滤器可以对所有要访问的资源拦截;拦截器只能拦截访问的Controller方法,如果访问的是jsp、html、css、image、js不会拦截。

2. 开发步骤

  1. 编写拦截器类,实现HandlerInterceptor接口
  2. 配置拦截器

注:jdk 1.8允许编写接口时实现接口中的方法,这样在实现接口时就可不用实现方法。如此处用到的HandlerInterceptor接口,实现该接口可以不用实现接口内定义的方法。

3. 拦截器实现

  1. 编写拦截器类,实现HandlerInterceptor接口
package cn.itcast.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {

    /**
     * preHandle:预处理,Controller中的方法执行前执行
     * @param request
     * @param response
     * @param handler
     * @return true: 放行,执行下一个拦截器的preHandle方法,如果没有下一个拦截器,执行Controller中的方法
     *         false: 不放行,可以通过request和response对象进行页面的跳转
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("MyInterceptor1 preHandle running...");
        return true;
    }

    /**
     * postHandle:后处理,Controller中的方法执行后执行
     * 当postHandler和Controller中的方法都有跳转时,跳转的页面是postHandler中指定跳转的页面,但Controller中要跳转的页面也会执行
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("MyInterceptor1 postHandle running...");

    }

    /**
     * afterCompletion:页面跳转后执行
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("MyInterceptor1 afterCompletion running...");

    }
}

  1. 配置拦截器
<!--    配置拦截器(可以有多个)-->
<mvc:interceptors>
    <mvc:interceptor>
<!--            要拦截的Controller中的方法,除了配置的方法以外的其他方法都不拦截-->
        <mvc:mapping path="/test/*"/>
<!--            不拦截的Controller中的方法,除了配置的方法以外的其他方法都拦截-->
<!--            <mvc:exclude-mapping path="/test/*"/>-->
<!--            拦截到指定的方法后调用的拦截器,也就是自定义的拦截器-->
        <bean class="cn.itcast.interceptor.MyInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

查看当前类的父类和实现接口的方法
Ctrl + o

Ctrl+N 搜索指定类
查看当前接口的所有实现类快捷键:idea查看接口的所有实现类及类图

标签:Exception,拦截器,SpringMVC,request,十二,接口,param,response
From: https://www.cnblogs.com/wzzzj/p/18038912

相关文章

  • SpringMVC系列之(十一)异常处理
    异常处理1.未进行异常处理的异常传递流程2.SpringMVC异常处理流程3.SpringMVC异常处理开发步骤编写自定义异常类(做提示信息的)编写异常处理器配置异常处理器(跳转到错误提示页面)4.实现Controller中的方法packagecn.itcast.controller;importcn.itcast.domain.U......
  • SpringMVC系列之(十)文件上传
    文件上传1.文件上传的前提form表单的ectype属性(表单请求正文的类型)取值必须是multipart/form-data,默认值是application/x-www-form-urlencodedmethod属性值为post提供文件选择域<inputtype="file"/>2.文件上传的原理ectype=application/x-www-form-urlencoded(默认值)表......
  • SpringMVC系列之(九)响应数据和结果视图
    响应数据和结果视图1.返回值分类这里的返回值指的是Controller中的方法的返回值。1.1String该字符串为逻辑视图名,通过视图解析器解析为物理视图地址。注:底层调用的是ModelAndView1.1.1实际开发中的应用实体类index.jsp<%--CreatedbyIntelliJIDEA.User:商务......
  • SpringMVC系列之(八)HiddentHttpMethodFilter过滤器
    HiddentHttpMethodFilter过滤器1.应用场景由于浏览器自身只支持发送get/post请求,其他请求方式并不支持,该过滤器用于模拟发送各种请求方式的请求(get/post/put/delete)Spring3.0提供2.浏览器发送PUT/DELETE请求的其他实现方式插件WebClient提供的静态方法HiddentHttpMetho......
  • SpringMVC系列之(六)自定义类型转换器
    自定义类型转换器SpringMVC在进行请求参数绑定时,自动进行了类型转换,前端传来的参数都是字符串,而控制器中的方法在接收时,可能会用到其他数据类型(如:Date、Integer、Double等),以日期类型为例,前端传的日期格式多样,SpringMVC自动转换类型的格式(2011/11/11)支持不了这么多类型,故有的日期......
  • SpringMVC系列之(五)POST请求中文乱码
    POST请求中文乱码1.配置解决中文乱码的过滤器web.xml中增加如下代码<filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><para......
  • SpringMVC系列之(四)请求参数的绑定
    请求参数的绑定获取前端传过来的参数的过程,如:Servlet的getParameter方法SpringMVC中的请求参数绑定:通过反射实现,SpringMVC中的请求参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的。1.支持的数据类型基本数据类型和字符串实体类型(JavaBean)集合数据类......
  • SpringMVC系列之(三)常用注解
    常用注解1.RequestMappingRequestMapping可以放在类上和方法上,放在类上表示一级目录,或表示某一个具体的模块属性path和value属性的作用相同method决定方法的请求方式params:请求必须包含的参数headers:请求必须包含的请求头以上的属性出现多个,需要同时满足2.RequestPa......
  • SpringMVC系列之(一)入门程序
    Web层,表现层入门程序1.需求描述页面上设置一个链接,点击链接后跳转到成功页面。2.搭建环境从骨架创建项目解决创建项目过慢的问题项目创建后,完善目录结构,创建相应的目录并设置目录类型源代码目录(java)和资源目录(resources)注:我这里已经设置过了,所以就不......
  • [十二省联考 2019] 希望
    \(\mathbb{P}\text{art}\1\\36\\text{pts}\):首先由于所以联通块都包括一个点,我们可以考虑每个点对答案的贡献,即求一个点所在联通块的数量。因为这样做会重复,所以我们用边点容斥来去重即\(V=E+1\),点的答案减去边的答案就是方案数,边的答案是对于一条边其两个端点都合......