`

Spring Interceptor拦截器流程

 
阅读更多

Spring拦截器流程


 

示例 - 登陆验证

  • 编写Annotation, 用于标识不需要进行登陆验证的请求方法
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface LoginNotNeed {
    	
    }
    
  • 编写Interceptor
    public class LoginInterceptor extends HandlerInterceptorAdapter {
    	
    	Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
    	
    	@SuppressWarnings("unchecked")
    	@Override
    	public boolean preHandle(HttpServletRequest request,
    			HttpServletResponse response, Object handler) throws Exception {
    		
    		HandlerMethod handlerMethod = (HandlerMethod) handler;
    		Method method = handlerMethod.getMethod();
    		
    		if (method.isAnnotationPresent(LoginNotNeed.class)) {
    			return super.preHandle(request, response, handler);
    		} else {
    			HttpSession session = request.getSession();
    			Map<String, Object> loginUser = (Map<String, Object>) session.getAttribute(LoginEnum.LOGIN_USER.toString());
    			if (null == loginUser) {
    				logger.debug("user isn't logged in.");
    				request.setAttribute("msg", "LoginInterceptor - 错误提示: 用户未登录");
    				logger.debug("request.getRequestURI() = {} ", request.getRequestURI());
    				session.setAttribute(LoginEnum.LAST_REQUEST_URL_NO_LOGIN.toString(), 
    						request.getRequestURI().replaceFirst(request.getContextPath(), ""));
    				request.getRequestDispatcher("/login").forward(request, response);				
    				return false;
    			} else {
    				return super.preHandle(request, response, handler);
    			}
    		}
    		
    	}
    
    }
  • 配置interceptor
    <!-- 登陆拦截器 -->
    	<bean id="loginInterceptor"
    	    class="com.vserve.smartmedia.LoginInterceptor"></bean>
    
    <!-- 拦截器配置 -->
    	<mvc:interceptors>
    	    <mvc:interceptor>
    	        <mvc:mapping path="/**"/>
    	        <mvc:exclude-mapping path="/assets/**"/>
    	        <ref bean="loginInterceptor"/>
    	    </mvc:interceptor>
    	</mvc:interceptors>
  • 使用示例
    	/**
    	 * 跳转到登陆页面
    	 * @return
    	 */
    	@LoginNotNeed
    	@RequestMapping("/login")
    	public String toLogin() {
    		return "/login";
    	}
    
    	/**
    	 * 主页面
    	 * @param req
    	 * @return
    	 */
    	@RequestMapping("/main")
    	public String toMain(HttpServletRequest req) {		
    		return "/main";
    	}
     
  • 大小: 50.6 KB
分享到:
评论

相关推荐

    自己spring boot 拦截器

    在Spring Boot应用中,拦截器(Interceptor)是Spring MVC框架的一部分,用于在请求处理之前、之后或在实际处理过程中执行一些预定义的任务。这通常包括权限检查、日志记录、性能监控等。自定义拦截器可以帮助我们更...

    SpringMVC中使用Interceptor拦截器

    本篇文章将深入探讨如何在Spring MVC中使用Interceptor拦截器。 首先,Interceptor的实现需要继承自`HandlerInterceptor`接口或者实现`HandlerInterceptorAdapter`适配器类,这两个类都包含三个核心方法: 1. `...

    SpringBoot拦截器原理解析及使用方法

    在SpringBoot框架中,拦截器是一个非常重要的组件,它能够在请求到达控制器(Controller)之前或者之后对请求进行拦截,以完成一些预处理或后处理操作。拦截器通常用于权限检查、日志记录、性能监控等场景。 拦截器...

    使用CGLIB模拟spring的拦截器

    在Spring中,Interceptor(拦截器)是实现了`HandlerInterceptor`接口的类。这个接口定义了三个方法:`preHandle`、`postHandle`和`afterCompletion`,分别在请求处理之前、之后和整个请求处理完成之后调用。 接...

    SpringMvc 拦截器

    在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复编写...

    spring boot 登录拦截器

    Spring Boot利用Spring MVC的Filter或者Interceptor机制来实现拦截器。这里我们主要关注`HandlerInterceptor`接口,它提供了三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, ...

    struts2整合spring实现拦截器

    在本文中,我们将深入探讨如何实现Struts2与Spring的集成,以及利用拦截器来增强应用的功能。 首先,Struts2 是一个基于MVC设计模式的开源Web框架,它提供了强大的控制器层,使得开发者可以更方便地处理HTTP请求和...

    Spring拦截器,高级参数绑定

    在Spring框架中,拦截器(Interceptor)是一种强大的工具,它允许开发者在请求处理前后执行自定义逻辑,例如日志记录、权限检查等。Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...

    Spring MVC 拦截器

    Spring MVC 框架中的拦截器(Interceptor)是一种重要的组件,它主要用于处理请求与响应的生命周期,提供了一种灵活的方式来实现诸如权限检查、日志记录、性能监控等功能。拦截器在请求到达控制器(Controller)之前...

    spring配置JSON拦截器VIEW

    标题中的“spring配置JSON拦截器VIEW”指的是在Spring框架中设置JSON数据的处理方式,特别是通过拦截器(Interceptor)来优化视图层(View)的响应。在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前...

    java + spring boot +jpa 拦截器分库分表demo

    但有了Spring Boot和JPA,我们可以创建拦截器(Interceptor)来处理这些逻辑。Spring AOP(面向切面编程)允许我们在特定的切点(如:方法调用)前后插入自定义代码,这就为我们提供了实现分库分表的机会。 创建一...

    springMVC3学习(七)--Interceptor拦截器(源码)

    在Spring MVC中,Interceptor(拦截器)是一种强大的机制,它允许开发者在请求处理前后执行自定义逻辑,而不必侵入到Controller代码中。本篇文章主要探讨了Interceptor的使用及其源码解析,帮助深入理解其工作原理。...

    spring拦截器的简单例子

    Spring 拦截器是 Spring 框架中一个非常重要的组件,主要用于处理请求和响应,实现业务逻辑之前和之后的预处理和后处理。它为开发者提供了在 MVC 模式下实现统一处理机制的机会,比如权限验证、日志记录、性能监控等...

    Spring Cloud OpenFeign - - - >拦截器

    初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...

    spring mvc拦截器过滤json中的null值

    首先,了解拦截器(Interceptor)在Spring MVC中的角色。拦截器是Spring MVC提供的一种AOP(面向切面编程)特性,允许我们在请求处理之前、之后或者在视图渲染之后进行一些预处理或后处理操作。我们可以利用拦截器来...

    Spring Controller拦截器配置

    在Spring框架中,拦截器(Interceptor)是一种重要的机制,用于对Controller的请求进行预处理和后处理。它可以用来实现一系列的功能,如权限验证、日志记录、统一的数据封装等。本文将详细介绍如何在Spring MVC中...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    CXF3.0+Spring3.2 自定义拦截器

    3. **Spring集成**:在Spring3.2中,我们可以使用`&lt;cxf:bus&gt;`和`&lt;cxf:interceptor&gt;`标签将自定义拦截器注册到CXF Bus中。这样,Spring容器会管理拦截器的生命周期,并在需要时注入其他依赖。 4. **拦截器链**:CXF...

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    1. MyBatis拦截器(MyBatis Interceptor): MyBatis拦截器是一种插件机制,允许我们在SQL执行前或执行后添加自定义行为。通过实现Interceptor接口并覆写intercept方法,我们可以拦截特定的SqlSession方法,如...

Global site tag (gtag.js) - Google Analytics