拦截器

定义拦截器

实现HandlerInterceptor接口

public class HandlerInterceptor1 implements HandlerInterceptor {

//进入Handler方法后执行
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub

}
//进入Handler方法后,返回modelandview之前执行
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub

}
//执行handler完成前执行,此方法
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
// TODO Auto-generated method stub
return false;
}

}

拦截器配置

  针对handlermapping进行配置

springmvc拦截器针对HandlerMapping进行拦截配置。 如果在某个HandlerMapping中配置拦截,经过该HandlerMapping映射成功的handler最终使用该拦截器。

(不推荐使用)

<bean class="org.springframework.web.servlet.Handler.BeanNameUrlHandlerMapping">

<property name="interceptors">

<list>

<ref bean="handlerInterceptor1" />

<ref bean="handlerInterceptor2" />

</list>

</property>

</bean>

<bean id="handlerInterceptor1" class="com.itcast.filter.HandlerInterceptor1"/>

<bean id="handlerInterceptor2" class="com.itcast.filter.HandlerInterceptor2"/>

 

针对全局进行配置

springmvc配置类似全局的拦截器,springmvc框架将配置的类似的全局的拦截器注入到每个handlerMapping中。

在springmvc.xml文件中添加

<!-- 拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean calss="com.itcast.filter.HandlerInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>

拦截器测试

全局配置两个拦截器

两个拦截器都放行

H1 ...preHandle

H2...preHandle

H2...postHandle

H1...postHandle

H2...afterCompletion

H1...afterCompletion

根据测试结果总结!

preHandler方法按顺序执行

postHandler和afterCompletion安拦截器配置的逆向顺序执行

拦截器1放行,拦截器2不放行

H1...preHandle

H2...preHandle

H1...afterCompletion

对拦截器应用

比如:统一日志处理拦截器,需要该拦截器preHandle一定要放行,且将它放在拦截器链接中第一个位置。

比如:登录认证拦截器,放在拦截器链接中第一个位置。权限校验拦截器,放在登录认证拦截器后。(因为登录后才能认证)。

 

实现登录认证

1 用户请求url

2 拦截器进行拦截校验

如果请求的url是公开地址(无需登录即可访问的url)放行。

如果用户session不存在跳转到登录页面

如果用户session存在放行,继续操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值