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 {

}

}

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

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

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


相关推荐

  • C++和Java哪个比较好入门?初学者该如何选择?

    C++和Java哪个比较好入门?初学者该如何选择?选择好的方向比努力更重要,对于初学编程的人来说选择一门合适的编程语言关系到自己以后的职业发展。c++和Java那个更适合作为入门语言?给大家简单科普一下~C++语言它是正宗的C语言的嫡系,由C语言发展而来。C++支持多种编程范式–面向对象编程、泛型编程和过程化编程,支持类:类、封装、重载等特性。C++语言的主要特点表现在两个方面:尽量兼容C 支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统.

    2022年7月9日
    22
  • HashMap_java的hashcode方法

    HashMap_java的hashcode方法MurmurHash可以将一个字符串hash出一个碰撞率极低的long型数值,且效率很高packagecom.trs.util;importjava.nio.ByteBuffer;importjava.nio.ByteOrder;/***根据字符串生成long型数据id*@authoryush*2018年11月6日上午11:02:00*/publicclassAssetKeyU…

    2022年10月19日
    3
  • 北美CS四大名校(美国前四大城市)

    1.北美CS方面三个梯队总体上讲Top20的计算机方向可以分成三个梯队:一、4个最为优秀的computerscienceProgram是麻省理工大学MIT,斯坦福大学Stanford,加州伯克莱分校UC.Berkeley和卡奈基梅隆CMU。这四家基本没什么争议,得到大家的广泛认可。二、6个其他前十的computerscience:UIUC,康乃尔大学Cornell,华盛顿大学U.o

    2022年4月12日
    112
  • Springboot启动报错[ main] o.s.boot.SpringApplication: Application run failed(佷有可能是版本问题)

    Springboot启动报错[ main] o.s.boot.SpringApplication: Application run failed(佷有可能是版本问题)前言:本人小白一枚,最近在自学JAVA时遇到了一个小问题,在网上求解无果后,自己找到了原因,这里跟大家分享一下。开发环境:Win10;IntelliJIDEA2021.3.2版本信息:Java\jdk-17.0.2;apache-maven-3.8.4-bin;springboot2.3.4编程目的:本人之前对JAVA一窍不通,最近在自学JAVA时想要用JAVA,Springboot和maven搭建一个最基础的helloworld程序。报错信息:ERROR后面显示“o.s.boot.

    2025年10月9日
    4
  • vuex的五大核心_vue如何实现跨域

    vuex的五大核心_vue如何实现跨域Vuex的核心概念Vuex有5个核心概念,分别是State,Getters,mutations,Actions,Modules。StateVuex使用单一状态树,也就是说,用一个对象包含了所有应

    2022年7月29日
    5
  • Java开发手册之命名风格「建议收藏」

    Java开发手册之命名风格「建议收藏」Java开发手册之命名风格

    2022年4月22日
    31

发表回复

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

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