• spring自定义注解拦截器的配置


    1.创建注解文件 (文件格式为注解) 这里面什么都不需要写 文件名就是注解名称 如下 是@anno

    package com.ABC123.anno;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * 自定义注解. 在方法上添加这个注解. 必须登录之后才能执行这个方法
     */
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface anno {
    
    }
    

      2.创建一个类先实现HandlerInterceptor接口里面的方法 当然不想要全部都实现可以继承他的适配器HandlerInterceptorAdapter类

    package com.ABC123.inter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.method.HandlerMethod;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    import com.ABC123.anno.anno;
    import com.ABC123.utils.UserContext;
    
    public class LoginInter extends HandlerInterceptorAdapter {
    
    	@Override
    	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
    			throws Exception {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    			throws Exception {
    		// TODO Auto-generated method stub
    		
    	}
    
    	//之前拦截
    	@Override
    	public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object obj) throws Exception {
    		//你请求的目标必须是方法
    		if(obj instanceof HandlerMethod) {
    			
    			HandlerMethod hm = (HandlerMethod) obj;
    		Object o = 	hm.getMethodAnnotation(anno.class);
    		if(o==null) {//没有这个注解
    			return true;
    			
    		}else {//有注解
    			
    			if(UserContext.getCurrent() == null) {//没有登录
    				
    				resp.sendRedirect("/paike/login.jsp");
    				return false;
    			}else { //登录了
    				return true;
    			}
    			
    		}
    		
    		}
    		
    		
    		return true;
    	}
    
    }
    

      3.最后配置springmvc的xml文件

    <!-- 开启mvc -->  
    	<mvc:annotation-driven />
    	<bean id="inter" class="com.ABC123.inter.LoginInter"></bean>
    	
    	<!-- 拦截器配置 -->
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<mvc:mapping path="/**"/><!-- 拦截所有 -->
    			<ref bean="inter"/>
    		</mvc:interceptor>
    	</mvc:interceptors>
    

      4.在需要拦截的类上面写生注解@anno

    当进入这个已经有注解的方法时会先经过拦截 符合的才放行

  • 相关阅读:
    生成Ptc文件时候使用top camera比较好
    3delight 上关于ptex的讨论,3delight的开发者最后说ptex的内存表现并不比普通的贴图差,不知道是不是因为3delight不支持而故意说的
    闲来无事,写个算法关于11000放在含有1001个元素。。。
    寻最优数字筛选算法找出 “排列数列“ 对应的 “组合数列“
    入住博客园
    日常工作中收集整理的MSSQL 技巧
    序列化 和 反序列化 类
    对Singleton Pattern的一点修改
    快速幂 & 取余运算 讲解
    JDK动态代理实现
  • 原文地址:https://www.cnblogs.com/charlypage/p/8872342.html
Copyright © 2020-2023  润新知