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;
}
}
下一篇: 简易登录验证拦截器