java拦截器的配置_Java 拦截器配置及使用「建议收藏」

java拦截器的配置_Java 拦截器配置及使用「建议收藏」packagecom.panshi.ProjectInterceptor.Interceptor;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Component;importorg.springframework.util.StringUtils;importor…

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

packagecom.panshi.ProjectInterceptor.Interceptor;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Component;importorg.springframework.util.StringUtils;importorg.springframework.web.servlet.ModelAndView;importorg.springframework.web.servlet.handler.HandlerInterceptorAdapter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;

@Componentpublic class recordInterceptor extendsHandlerInterceptorAdapter {private final static Logger logger= LoggerFactory.getLogger(“interceptor”);/*** preHandle方法是进行处理器拦截用的,顾名思义,该方法将在Controller处理之前进行调用,

* SpringMVC中的Interceptor拦截器是链式的,可以同时存在多个Interceptor,

* 然后SpringMVC会根据声明的前后顺序一个接一个的执行,

* 而且所有的Interceptor中的preHandle方法都会在Controller方法调用之前调用。

* SpringMVC的这种Interceptor链式结构也是可以进行中断的,

* 这种中断方式是令preHandle的返回值为false,当preHandle的返回值为false的时候整个请求就结束了。*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throwsException {

logger.info(“拦截了:”+request.getRequestURI());

HttpSession session=request.getSession();if(!StringUtils.isEmpty(session.getAttribute(“userId”))){/*** 相关验证

**/

return true;

}else{

response.sendRedirect(“/logins”);return false;

}//return super.preHandle(request, response, handler);

}/*** 这个方法只会在当前这个Interceptor的preHandle方法返回值为true的时候才会执行。

* postHandle是进行处理器拦截用的,它的执行时间是在处理器进行处理之 后, 也就是在Controller的方法调用之后执行,

* 但是它会在DispatcherServlet进行视图的渲染之前执行,也就是说在这个方法中你可以对ModelAndView进行操作。

* 这个方法的链式结构跟正常访问的方向是相反的,也就是说先声明的Interceptor拦截器该方法反而会后调用,

* 这跟Struts2里面的拦截器的执行过程有点像,

* 只是Struts2里面的intercept方法中要手动的调用ActionInvocation的invoke方法,

* Struts2中调用ActionInvocation的invoke方法就是调用下一个Interceptor或者是调用action,

* 然后要在Interceptor之前调用的内容都写在调用invoke之前,要在Interceptor之后调用的内容都写在调用invoke方法之后。*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throwsException {

}/*** 该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行。

* 该方法将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行, 这个方法的主要作用是用于清理资源的,*/@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) throwsException {

}

}

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135287.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 修复受损的系统的两个小妙招

    修复受损的系统的两个小妙招

  • Python的常用函数:append()

    Python的常用函数:append()1.描述append()函数用于在列表末尾添加新的对象。2.语法list.append(obj)其中:list:列表对象;obj:添加到列表末尾的对象。注意:append()函数无返回值,但是会修改原本的列表。3.示例list=[‘abc’,’Harden’,’python’,’Curry’,…

  • empty和isset的区别

    empty和isset的区别

    2021年10月30日
  • 作用域链和原型链的区别_原型链和作用域链

    作用域链和原型链的区别_原型链和作用域链题外话:最近面试一直被问到作用域链的问题,所以还是要深入透彻的学习一下这两个概念。作用域链在红宝书中对作用域链的描述有这么一段话:当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端始终是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象作为变量对象。活动对象在最开始时只包含一个变量,即argume

    2022年10月27日
  • videocapture_directshow是什么

    videocapture_directshow是什么DirectShow框架简介DirectShow框架是多媒体播放框架上一个非常经典的框架,现在已经十多年了,在Windows平台上依然无法替代,非常值得去学习研究。个人觉得从设计模式的角度上看,directshow框架的灵活性、复用性、可维护性、可拓展性这些方面做得非常不错,也是它经久不衰历久弥新的一个原因,现在的很多第三方的decoder和filter都基于directshow框架开发,可以很灵活

    2022年10月10日
  • 小程序获取openid40029[通俗易懂]

    小程序获取openid40029[通俗易懂]小程序获取openid40029{“errcode”:40029,“errmsg”:“invalidcode,hints:[req_id:XDgCIfyFe-.LPgiA]”}还出现了errcode:002的情况错误原因:小程序开发者工具中的appid和后台的appid不一致总结40029有可能是因为1.appid与密钥不一致(重置下密钥也可以)2.前后端的a…

发表回复

您的电子邮箱地址不会被公开。

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