springMVC <mvc:interceptors>拦截器的使用

首先在springMVC.xml配置如下代码

 <!--     拦截器 -->
        <mvc:interceptors>
   <bean class="com.base.AccessFilter"></bean> </mvc:interceptors>

然后再创建一个class实现想要拦截的方法即可,如(对应如上配置文件class路径)

package com.base;

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

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.ujia.entity.User;

public class AccessFilter implements HandlerInterceptor{

    @Override
    public void afterCompletion(HttpServletRequest arg0,
            HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
            Object arg2, ModelAndView arg3) throws Exception {
        // TODO Auto-generated method stub
        
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
            Object arg2) throws Exception {
        //获取登录session
        User user =(User) request.getSession().getAttribute("user");
        //如果访问请求为首页,则通过
        if(request.getRequestURI().startsWith(request.getContextPath()+"/spring/index.htm")){
            return true;
        }else if(null==user){
            //如果没有登录session,则返回到首页
            response.sendRedirect(request.getContextPath()+"/spring/index.htm");
            return false;
        }
        return true;
    }

}

只需实现preHandle,所有请求都将先经过这个方法

拦截特殊请求,在springMVC配置里面加上

<!--将拦截特有的URL请求 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/admin/*" />
            <bean class="com.base.admin" />
        </mvc:interceptor>
        <mvc:interceptor>
            <mvc:mapping path="/caes/*.trl" />
            <bean class="com.base.caes" />
        </mvc:interceptor>
    </mvc:interceptors>

 

posted @ 2016-03-11 11:32  Angto  阅读(11430)  评论(0编辑  收藏  举报