spring mvc中拦截器的配置和使用

自定义拦截器类(实现HandlerInterceptorAdapter接口)

 

public class Intercepter extends HandlerInterceptorAdapter{

		//不拦截的页面
		private static final String[] IGNORE_URI={"/adminPage","/uploadPage"};
		
		/**
		* 请求之后执行,用于清理资源
		* 在Interceptor的preHandle返回为true时执行
		*/
		@Override
		public void afterCompletion(HttpServletRequest request,
				HttpServletResponse response, Object handler, Exception ex)
				throws Exception {
			// TODO Auto-generated method stub
			System.out.println("after");
		}
		/**
		* Controller调用之后执行,可对ModelAndView操作
		* 当Interceptor的preHandle返回为true时执行
		*/
		@Override
		public void postHandle(HttpServletRequest request,
				HttpServletResponse response, Object handler,
				ModelAndView modelAndView) throws Exception {
			// TODO Auto-generated method stub
			System.out.println("post");
		}
		
		/**
		* preHandle拦截使用,在controller执行之前
		* 返回值为true才会向下执行,false的话请求就结束
		*/
		@Override
		public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
			// TODO Auto-generated method stub
			boolean flag=false;   //用于存储判断登录的结果
		    //获取请求路径
		 	String servletPath=request.getServletPath(); 
			//判断请求是否需要拦截
			for(String s:IGNORE_URI){
				if(servletPath.contains(s)){
		        	flag=true;    //如果是不拦截的网站,flag为true,跳出循环,转向下个方法
		        	break;
				}
		    }
		    //拦截请求
		    if(!flag){   //如果是非公开的页面↓
		        Admin admin=(Admin)request.getSession().getAttribute("ADMIN");
		        if(admin==null){
		            System.out.println("AuthorizationInterceptor拦截请求");
		            request.setAttribute("message", "请先登录管理员后再访问网站");
		            request.getRequestDispatcher("/error.jsp").forward(request, response);
		        }else{
		            //用户登陆过,验证通过,放行
		            System.out.println("AuthorizationInterceptor放行请求");
		            flag=true;
		        }
		    }
		    return flag;
		}

	}

 

 

 

 

 


在spring mvc中配置自定义拦截器

 

<!-- 不拦截静态请求 -->
    <mvc:default-servlet-handler />
    <!-- 配置拦截器 -->
    <mvc:interceptors>
    	<mvc:interceptor>
		<!--表示拦截所有请求-->
    		<mvc:mapping path="/**"/>
		<!--自定义的拦截器类-->
    		<bean class="com.entor.intercepter.Intercepter"></bean>
    	</mvc:interceptor>
    </mvc:interceptors>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值