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 "";
}

}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC中,可以通过配置拦截器来实现对请求进行拦截和处理。下面是一个简单的Spring MVC拦截器配置示例: 1. 创建一个实现了HandlerInterceptor接口的拦截器类,例如MyInterceptor: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行调用(Controller方法调用之前) // 返回true表示继续执行,返回false取消当前请求 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要用于进行资源清理工作) } } ``` 2. 在Spring MVC的配置文件中配置拦截器: ```xml <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 拦截的URL模式 --> <bean class="com.example.MyInterceptor" /> <!-- 拦截器类 --> </mvc:interceptor> </mvc:interceptors> ``` 在上述示例中,拦截器类MyInterceptor会拦截所有URL模式("/**")的请求。你可以根据需要设置特定的URL模式来进行拦截。拦截器的执行顺序是按照配置顺序进行的。 注意:上述示例是基于XML配置的方式,如果你使用的是Java配置,可以通过实现WebMvcConfigurer接口来配置拦截器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值