欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC的拦截器配置

程序员文章站 2022-05-28 17:12:53
...

SpringMVC配置文件里面配置的拦截器,简单的项目里可以用来拦截所有URL请求,进行验证是否登录等操作,当然稍微大一点的项目就推荐使用成熟的权限管理框架(例如Shiro),来管理权限,拦截请求等。

1.使用方式很简单,在已有的springmcv配置文件里面,加上以下代码

<mvc:mapping path="/**" />    标签指定拦截所有请求

<mvc:exclude-mapping path=""/>     标签指定哪些URL除外(不拦截,一般是登录页面和一些静态图片URL)

<bean class="com.reserve.interceptor.UserInterceptor" />      标签指定拦截后执行的java代码拦截器,方法返回true拦截通过
<!--  配置拦截器拦截所有请求,判断有没登录,没有返回登录页面 -->
      <mvc:interceptors>
		  <mvc:interceptor>
			  <mvc:mapping path="/**" />
			  <mvc:exclude-mapping path="/image/*.png"/>
			  <mvc:exclude-mapping path="/view/loginPage"/>
			  <mvc:exclude-mapping path="/view/login"/>
			  <bean class="com.reserve.interceptor.UserInterceptor" />
		  </mvc:interceptor>
	  </mvc:interceptors>

2.然后就是写拦截器(实现HandlerInterceptor接口,重写方法),代码实现你拦截后想进行的验证等操作,我这里进行简单的验证是否登录

package com.reserve.interceptor;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.reserve.bean.User;

/**
 * 拦截所有请求,查看有没登录
 * @author liqiye
 *
 */
public class UserInterceptor implements HandlerInterceptor{
	
	
	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {

	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {

	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
			Object arg2) throws Exception {
		User user=(User)request.getSession().getAttribute("user");
		if(null==user){
            //如果没有登录session,则返回到登录页面
            response.sendRedirect(request.getContextPath()+"/view/loginPage?loginFlag=1");
            return false;
        }
		return true;
	}

}