SpringMVC的拦截器问题

1.定义的类实现拦截器的接口

HandlerInteceptor

2.配置springmvc.xml

 <mvc:interceptors>
    	<mvc:interceptor>
    		
    		<mvc:mapping path="/**"/>
    		<bean class="cn.itedu.interceptor.MyInterceptor">
    		</bean>
    	
    	</mvc:interceptor>
    
    </mvc:interceptors>
3.书写拦截器的业务逻辑

@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		// TODO Auto-generated method stub
		String uri = arg0.getRequestURI();
		if(!uri.contains("/login.action")){
			
			//如果不包含
			if(arg0.getSession().getAttribute("username")==null){
			
				arg1.setCharacterEncoding("utf-8");
				arg1.sendRedirect("login.action");
				return false;
			}
			
			
		}
		
		return true;
	}
我粗心写错的时候是这样的

如下的结果首先因为输入的地址包含了login.action时,所以if不走,直接进行拦截,这时候出现一片空白

纯文本文件的字符编码未声明。如果该文件包含 US-ASCII 范围之外的字符,该文件将在某些浏览器配置中呈现为乱码。该文件的字符编码需要在传输协议层声明,或者在文件中加入一个 BOM(字节顺序标记)。

当输入的地址不是login.action时,确实能够实现重定向,但是重定向之后,会再次被拦截拦截到,这时候页面的地址是包含login.action,所以这时候也对页面进行拦截了。所以这时候也是出现了一片空白,也就是出现了上述的第一种情况,所以从逻辑上来说,你要跳转到的页面是不应该被拦截的,不然的话,你会出现一片空白

@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		// TODO Auto-generated method stub
		String uri = arg0.getRequestURI();
		if(!uri.contains("login.action")){
			if(arg0.getSession().getAttribute("username")!=null){
				
				return true;
			}else{
				arg1.setCharacterEncoding("utf-8");
				arg1.sendRedirect("login.action");
			}
			
			
		}
		
		return false;
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值