spring拦截器「建议收藏」

spring拦截器「建议收藏」spring拦截器实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类都可以实现,主要有三个方法,preHandle在调用具体的controller之前执行,postHandle在调用controller之后,但是页面渲染之前执行,afterCompletion在页面渲染之后执行,拦截器的功能类似与filter的功能,个人认为spring为什么搞…

大家好,又见面了,我是你们的朋友全栈君。

spring拦截器实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类都可以实现,主要有三个方法,preHandle在调用具体的controller之前执行,postHandle在调用controller之后,但是页面渲染之前执行,afterCompletion在页面渲染之后执行,拦截器的功能类似与filter的功能,个人认为spring为什么搞一个拦截器,主要是因为拦截器属于spring管理的范畴类,方便资源的分配,也便于与其他的整合,不会像filter这样突兀,和filter类型,同事命中多个拦截器时,按顺序一个一个往后执行。拦截器中可以做一些权限校验,数据校验转换等事情。

编写拦截器

public class UserContextInterceptor extends HandlerInterceptorAdapter {
    //拦截器可以使用spring的依赖注入
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //可以在这里处理用户认证
        if (true) {
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            try (PrintWriter writer = response.getWriter()) {
                writer.write("{'message':'认证不通过'}");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return super.preHandle(request, response, handler);
    }
}

配置拦截器

    <mvc:interceptors>
        <!-- 权限校验拦截器 -->
        <mvc:interceptor>
            <!--匹配的路径-->
            <mvc:mapping path="/**/*.do"/>
            <!--不包含的路径-->
            <mvc:exclude-mapping path="/riskControl/**/*.do"/>
            <bean class="com.zhan.design.interceptor.UserContextInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

如何配置,比如访问/hello/word.do,就会返回认证不通过

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149327.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中println和printf有什么区别_string和int的区别

    java中println和printf有什么区别_string和int的区别Java语言中print和println的区别简单的说:print意思是:打印而println是print+line的缩写,即:换行打印举例打印1和2:⑴不换行打印:publicclassMyDemo{ publicstaticvoidmain(Stringargs[]){ inti=1; intj=2; System.out.print(i)…

    2022年10月2日
    0
  • spring choud中eurake的搭建

    spring choud中eurake的搭建新建一个maven-app项目然后一直下一步即可。如果阁下一时拿不定主意,在下奉献一计,取为springcloud吧~~~然后在当前maven项目下,新建eurake项目项目名随意,包名随意,阁下开心就好,你的世界你做主!!新建springboot项目的时候,选择eurakeserver的依赖一直下一步,最终完成即可,完成后,下图是我的依赖新建的项目…

    2022年5月20日
    36
  • c++ 迭代器失效_c++迭代器是什么

    c++ 迭代器失效_c++迭代器是什么C++迭代器Iterator

    2025年7月28日
    0
  • 密立根实验的java数据处理

    密立根实验的java数据处理importjavax.swing.JOptionPane;importjava.text.DecimalFormat;publicclassurl{ publicstaticvoidmain(String[]args) {  StringnumStr,tstr1,tstr2,tstr3,tstr4,tstr5,result;  intU,again

    2022年5月11日
    40
  • linux命令_linux基本命令的使用

    linux命令_linux基本命令的使用创建petalinux工程:petalinux-create-tproject–templatezynq-nzynq_linux配置petalinux工程:petalinux-config–get-hw-description/mnt/hgfs/VMShare/ZYNQ7035_Linux/ZYNQ7035_Linux.sdk/重新配置petalinux工程:petalinux-config配置Linux内核:petalinux-config-ckernel配置Lin

    2022年9月12日
    1
  • pycharm gitee_pycharm上传代码到github

    pycharm gitee_pycharm上传代码到github1.查看git日志2.文件更改添加一部分信息后文件会变蓝新创建一个文件夹会提问要不要加入到Git中如果选择cancel文件夹会继续是红色的然后不加到Git仓库选择add则文件名变绿3.提交更改左键双击可以查看更改的具体信息填写提交的备注信息然后点击commit可以看到文件颜色消失下面是未push时的截图然后输入账号密码可以看到提交成功…

    2022年8月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号