SpringMvc拦截器配置

配置拦截路径以及不拦截路径,创建拦截的类让他继承HandlerInterceptorAdapter这个类,重写里面的preHandle方法。一个配置文件里面可以配置很多拦截器,当拦截器返回值为true时表示放行当为false时为拦截。


1.拦截器配置


    
    
		
     
     
			
      
      
			
      
      
			
      
      
			
      
      
			
      
      
			
      
      
			
      
      
			
      
      
			
      
      
			
      
      
		
     
     
	
    
    



2.实现业务



package com.zipx.interceptor;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;


import com.zipx.entity.site.Customer;
import com.zipx.util.Const;


/*
 * 检验用户是否登录,如果登录判断销售地是否与请求路径匹配
 */
public class CheckSalesMarketInterceptor extends HandlerInterceptorAdapter {


@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String url=request.getRequestURI();
//判断用户是否已经登录过系统
Customer customer=(Customer)request.getSession().getAttribute(Const.SESSION_CUSTOMER_USER);
//截取第一个customer后面的字符串
String cutURL=url.substring(url.indexOf("/customer/"));
if (cutURL.length()<13) {
if (customer!=null) {
if (customer.getSalesMarketID()==1) {
return true;
}else {
String resURL=getURLBysalesMarketID(customer.getSalesMarketID());
response.sendRedirect(request.getContextPath()+resURL);
return false;

}

}else {
//根据用户请求跳转相应的登录页面,如当用户请求含有/CN/将其跳转到中文的登录的页面
if (url.contains("/customer/CN")) {
//跳转到中文的登录的页面
response.sendRedirect(request.getContextPath()+"/customer/CN/login");
return false;

}
if (!url.contains("/customer/CN")) {
//跳转到英文的登录的页面
response.sendRedirect(request.getContextPath()+"/customer/login");
return false;
}
}



}
String requestUrl=cutURL.substring(cutURL.indexOf("/customer/")+0, 13);
if(customer == null){
//根据用户请求跳转相应的登录页面,如当用户请求含有/CN/将其跳转到中文的登录的页面
if (url.contains("/customer/CN")) {
//跳转到中文的登录的页面
response.sendRedirect(request.getContextPath()+"/customer/CN/login");
return false;

}
if (!url.contains("/customer/CN")) {
//跳转到英文的登录的页面
response.sendRedirect(request.getContextPath()+"/customer/login");
return false;
}
}else {
Integer salesMarketID=customer.getSalesMarketID();
//判断请求的路径是否与其销售地一致
if (requestUrl.equals("/customer/CN/")) {
if (salesMarketID==2) {
return true;
}else {
String resURL=getURLBysalesMarketID(salesMarketID);
response.sendRedirect(request.getContextPath()+resURL);
return false;
}

}

if (!requestUrl.equals("/customer/CN/")&&!requestUrl.equals("/customer/CN/")) {
//说明是访问的英文版
if (salesMarketID==1) {
return true;
}else {
String resURL=getURLBysalesMarketID(salesMarketID);
response.sendRedirect(request.getContextPath()+resURL);
return false;
}

}

}
return true;
}

//判断传入进来的销售地,对应传出相应的首页的链接
public String getURLBysalesMarketID(Integer salesMarketID){

switch (salesMarketID) {
case 1:
//返回英文的首页地址
return "/home/index";


case 2:
   //返回中文的首页地址
return "/home/CN/index";
}
return "";
}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值