Spring MVC学习之——拦截器

这篇具有很好参考价值的文章主要介绍了Spring MVC学习之——拦截器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拦截器

什么是拦截器?

Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、判断用户是否登录等。

​ 拦截器依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。

Spring的拦截器(Interceptor)是一个接口,包含了多个方法,可以用于拦截请求并对其进行相应的处理。拦截器的作用包括以下几个方面:

  1. 请求预处理:拦截器可以在请求到达控制器之前进行预处理,例如验证用户权限、检查请求参数是否正确等。
  2. 控制器方法拦截:拦截器可以拦截控制器的所有请求,并在请求到达控制器之前进行处理,例如检查控制器方法是否存在、参数是否符合要求、请求头是否合法等。
  3. 请求后处理:拦截器可以在请求处理完毕后进行后处理,例如记录日志、发送邮件、调用其他服务等。
  4. 异常处理:拦截器可以处理控制器方法抛出的异常,例如将异常信息记录下来、发送邮件、抛出新的异常等。

使用案例

一.自定义拦截器

1. 创建拦截器
public class CustomHandlerInterceptor implements HandlerInterceptor {
    /**
     * 在控制器方法调用前执行
     * 返回值为是否中断
     *      true:表示继续执行(下一个拦截器或处理器)
     *      false:则会中断后续的所有操作,所以我们需要使用response来继续响应后续请求
     */
    @Override
    public boolean preHandle(HttpServletRequest request,
                      HttpServletResponse response, Object object) throws Exception {
        System.out.println("HandlerInterceptor preHandle ....");
        return true;
    }

    /**
     * 在控制器方法调用后,解析视图前调用,我们可以对视图和模型做进一步渲染或修改
     * 可在modelAndView中加入数据,比如当前时间
     */
    @Override
    public void postHandle(HttpServletRequest request,HttpServletResponse response, 
                         Object object, ModelAndView modelAndView) throws Exception {
        System.out.println("HandlerInterceptor postHandle ....");
    }

    /**
     * 整个请求完成,即视图渲染结束后调用,这个时候可以做些资源清理工作,或日志记录
     */
    @Override
    public void afterCompletion(HttpServletRequest request,
        HttpServletResponse response,Object object, Exception e) throws Exception {
        System.out.println("HandlerInterceptor afterCompletion ....");
    }
}
2.配置拦截器
    <!--配置拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 匹配的是url路径 -->
            <mvc:mapping path="/**"></mvc:mapping>
            <bean class="com.by.interceptor.CustomHandlerInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
3.测试

controller

@Controller
@RequestMapping("/account")
public class AccountController {

    @RequestMapping("/findAccount")
    public String findAccount(Model model) {
        model.addAttribute("msg", "欢迎你 springmvc");
        System.out.println("controller的方法执行了......");
        return "success";
    }
}

jsp

<a href="/account/findAccount">拦截器</a>

二.登录拦截器

登录拦截器就是在你直接访问查询等其他功能时,如果你没登录过(session没有你登录的对象),那么就会拦截你的请求,返回到登录的页面。只有你登陆成功后,session有了登录的用户信息,才会放行到查询等其他功能。

1.创建拦截器

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,
           HttpServletResponse response, Object object) throws Exception {
        String user = (String) request.getSession().getAttribute("user_session");
        if (user != null) {//已经登录,继续执行
            System.out.println("获得用户信息:"+user);
            return true;
        } else {//未登录,跳转到登录页面
            response.sendRedirect(request.getContextPath() +"/login.jsp");
            return false;
        }
    }
}
2.配置拦截器
	<mvc:interceptors>
        <mvc:interceptor>
            <!-- 匹配的是url路径 -->
            <mvc:mapping path="/**"></mvc:mapping>
            <bean class="com.by.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
	</mvc:interceptors>
3.测试

controller

@Controller
@RequestMapping("/account")
public class AccountController {

    @RequestMapping("/findAccount13")
    public String findAccount13(Model model) {
        model.addAttribute("msg", "欢迎你 springmvc");
        System.out.println("controller的方法执行了......");
        return "success";
    }
}

jsp文章来源地址https://www.toymoban.com/news/detail-809490.html

<%
   session.setAttribute("user_session","User{name:张二狗,age:18}");
%>
<a href="/account/findAccount13">登录拦截器</a>
~~~!

到了这里,关于Spring MVC学习之——拦截器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC 拦截器

    如何实现session共享问题: 1、session都在内存里面存储的,只要有session对象我都分发出去,让其他应用都可以拿到(同步) 缺点: 只要有session对象都要广播出去,而且用户应用比较多了就会导致服务压力大, 2、使用token,登录完之后给你一个token,然后加密完之后发给服务

    2024年02月15日
    浏览(38)
  • Spring MVC拦截器和跨域请求

    SpringMVC的拦截器(Interceptor)也是AOP思想的一种实现方式。它与Servlet的过滤器(Filter)功能类似,主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。 拦截器和过滤器的区别 拦截器是SpringMVC组件,而过滤器是

    2024年02月16日
    浏览(53)
  • Spring MVC学习随笔-Ajax集成(JSON格式返回数据)、拦截器(MyInterceptor)、全局异常处理(GlobalExceptionResolver)

    学习视频:【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 引入相关依赖 开发控制器 日期格式修正 可以正常响应 拦截器 :Interceptor 拦截 中断 类似于javaweb中的Filter,不过没有Filter那么强大 作用 Spring MVC的拦截器是一种用于在请求处理过程中进行预处理和后处

    2024年02月05日
    浏览(48)
  • Spring MVC拦截器Interceptor使用(判断用户登录)

    Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。 拦截器可以在进入处理器之前做一些操作,或者在处理器完成后进行操作,甚至是

    2024年02月09日
    浏览(46)
  • SpringMVC-2-Spring MVC拦截器详解:从入门到精通

    能够编写拦截器并配置拦截器 1.1 拦截器概念和作用 拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 总结:增强 核心原理:AOP思想 1.2 拦截器和过滤器的区别

    2024年02月12日
    浏览(47)
  • Spring-MVC使用JSR303及拦截器,增强网络隐私安全

    目录 一、JSR303 ( 1 )  是什么 ( 2 )  作用 ( 3 )  常用注解 ( 4 )  入门使用 二、拦截器 2.1  是什么 2.2  拦截器与过滤器的区别 2.3  应用场景 2.4 基础使用 2.5 用户登录权限控制 给我们带来的收获 JSR 303是Java规范请求(Java Specification Request)的一部分, 它定义了一套标准的Jav

    2024年02月09日
    浏览(42)
  • 掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

    (1)浏览器发送一个请求会先到Tomcat的web服务器。 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源。 (3)如果是静态资源,会直接到Tomcat的项目部署目录下去直接访问。 (4)如果是动态资源,就需要交给项目的后台代码进行处理。 (5)在找到具体的方法之前

    2024年01月22日
    浏览(46)
  • 【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《Spring 狂野之旅:底层原理高级进阶》 🚀 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suze

    2024年02月20日
    浏览(52)
  • Spring 拦截器

    目录 今日良言:心若有所向往,何惧道阻且长 一、Spring 拦截器 1.拦截器简介 2.实现自定义拦截器 1.拦截器简介 Spring Boot 拦截器是面向切面编程-----AOP 的具体实现,用于对请求做预处理。 正常情况下的调用顺序:  当有了拦截器之后,会对用户的请求进行预处理,也就是在

    2024年02月05日
    浏览(35)
  • Spring/SpringBoot 拦截器

    Spring/SpringBoot 拦截器 拦截器的作用: 拦截器,可以进行请求过滤、权限管理、打印日志、数据校验等。 拦截器,可以在请求前、请求后进行处理。 代码示例: 拦截器 MyInterceptor: Spring的拦截器,需要实现 HandlerInterceptor 接口。 配置拦截器: 配置拦截器,需要实现 WebMvcConf

    2024年02月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包