SSM中拦截器的使用

拦截器在一个Controller中使用和在多个Controller中的跳转是不同的情况,下面来一一的介绍。

1.在一个controller中使用

(1)定义拦截器类

package cn.bishe.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class CommonInterceptor extends HandlerInterceptorAdapter {
	 @Override  
	    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
		 request.setCharacterEncoding("utf-8"); 
		 response.setCharacterEncoding("utf-8");
		 String name =  (String) request.getSession().getAttribute("usersession");  
	      if(name == null || name==""){  
	           //request.getRequestDispatcher("loginPage.action").include(request, response);  
	    	  request.getRequestDispatcher("loginPage.action").forward(request, response);
	    	  return false;  
	        }else  
	        	return true;  
	    }  
}

(2)在springmvc.xml中定义拦截器

<!-- 拦截器 -->
<mvc:interceptors>  
    <mvc:interceptor>   
        <mvc:mapping path="/writeblogPage.action" />                             
        <bean class="cn.bishe.interceptor.CommonInterceptor"></bean>  
    </mvc:interceptor>  
</mvc:interceptors> 

用户请求writeblogPage.action的时候会先被拦截器拦截,判断使用是否已经登录,登录成功之后放行,允许执行用户的请求writeblogPage.action路径。用户没有登录的时候跳转到当前Controller的登录的action路径。(意思就是请求的writeblogPage.action和跳转登录的loginPage.action需要在一个Controller中

2.在多个controller中使用

如果不同的controller中都需要拦截器,不能使用相同的拦截器,因为拦截器不能跨controller,这个时候只能为不同的controller配置不同的拦截器,每一个拦截器只能拦截每个不同的Controller。

(1)定义拦截器类

package cn.bishe.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class CommonInterceptor extends HandlerInterceptorAdapter {
	 @Override  
	    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
		 request.setCharacterEncoding("utf-8"); 
		 response.setCharacterEncoding("utf-8");
		 String name =  (String) request.getSession().getAttribute("usersession");  
	      if(name == null || name==""){  
	           //request.getRequestDispatcher("loginPage.action").include(request, response);  
	    	  request.getRequestDispatcher("loginPage.action").forward(request, response);
	    	  return false;  
	        }else  
	        	return true;  
	    }  
}
package cn.bishe.interceptor;

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

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

public class CommonInterceptor1 extends HandlerInterceptorAdapter {
	@Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
	 request.setCharacterEncoding("utf-8"); 
	 response.setCharacterEncoding("utf-8");
	 String name =  (String) request.getSession().getAttribute("usersession");  
      if(name == null || name==""){  
           request.getRequestDispatcher("loginPage1.action").include(request, response);  
    	  return false;  
        }else  
        	return true;  
    }  
}
(2)springmvc.xml文件中配置多个拦截器
<!-- 拦截器 -->
<mvc:interceptors>  
    <mvc:interceptor>   
        <mvc:mapping path="/writeblogPage.action" />                             
        <bean class="cn.bishe.interceptor.CommonInterceptor"></bean>  
    </mvc:interceptor>  
</mvc:interceptors>  拦截Controller1
<mvc:interceptors>  
    <mvc:interceptor>         
        <mvc:mapping path="/res/resUploadPage.action" />     
        <mvc:mapping path="/res/filedownload.action" />                  
        <bean class="cn.bishe.interceptor.CommonInterceptor1"></bean>  
    </mvc:interceptor>  
</mvc:interceptors>  拦截Controller2

两个拦截器都要跳到loginPage.action去,但是这个action在其中一个controller中,拦截器不能跨controller,所以只能把这个action复制一份放在另一个controller中,然后把RequestMapping的名字改一下,可以改成loginPage1.action。

(3)两个controller

//用户登录页面
	@RequestMapping(value="loginPage.action")
	public String toLoginPage(){
		return "login";
	}
//用户登录页面
	@RequestMapping(value="loginPage1.action")
	public String toLoginPage(){
		return "login";
	}




  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值