spring mvc拦截器的使用记录

今天项目中需要使用到spring mvc的拦截器,将使用心得记录一下:

导包的哪些啥就不说了,下面说下具体的使用步骤:

1:其实spring mvc中有两个拦截器,一种是实现HandlerInceptor,另一种是实现WebRequestInterceptor

其中有三个方法:

preHandle():在请求到达controller之前调用,filter执行之后调用,根据返回的boolean值决定是否要往下执行,如果要在当中跳转页面,那么就需要用到response重定向

postHandle():在controller方法执行完毕之后,在DispatcherServlet进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller处理之后的ModelAndView对象    进行操作。postHandle方法被调用的方向跟preHandle是相反的,也就是说先声明的Inceptor的postHandle方法反而会后执行。

afterCompletion():该方法是在整个请求结束之后,也就是说在DispatcherServlet渲染了对应的视图 之后执行,主要作用是用于进行资源的清理。

2:自定义的拦截器类如:

public class PermissionInterceptor implements HandlerInterceptor{
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
public void postHandle(HttpServletRequest req, HttpServletResponse res,
Object arg2, ModelAndView arg3) throws Exception {
}
public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
Object arg2) throws Exception {
System.out.println("preHandle");
Integer userCount = (Integer) req.getSession().getServletContext().getAttribute("userCount");
String username = (String) req.getSession().getAttribute("username"+userCount);
System.out.println("拦截器中的username "+username);
if(username == null){
res.sendRedirect("toLogin");
return false;
}
return true;
}


3:在spring配置文件中进行配置:如

<!-- 配置spring mvc拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 配置拦截所有请求 -->
<mvc:mapping path="/**"/>
<!-- 配置放开哪些请求 -->
<mvc:exclude-mapping path="/user/toLogin"/>
<mvc:exclude-mapping path="/user/login"/>
<mvc:exclude-mapping path="/user/findByNfcId"/>
<mvc:exclude-mapping path="/user/saves"/>
<!-- 自定义的拦截器类,继承自HandlerInterceptor -->
<bean class="com.henghao.nfc.interceptor.PermissionInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值