springmvc中拦截器怎么写(SpringMVC中的拦截器的示例及应用)
springmvc中拦截器怎么写(SpringMVC中的拦截器的示例及应用)三、多个拦截器应用示例3.测试,访问登录页login.jsp,点击登录后会向Controller发送一个请求(jsp页和Controller页不为本次重点,略)HandlerInterceptor接口中定义了三个抽象方法:**preHandle方法:**Springmvc中可以存在多个自定义拦截器。每个拦截器的调用会依据他的声明顺序依次执行,preHandle()为最先执行的方法,返回值为boolean类型。当返回true时,会继续调用下一个拦截器的preHandle方法,直至最后一个拦截器的preHandle运行结束并返回true时,才调用Controller中的方法。当某个拦截器的preHandle()返回值为false时,后续的拦截器和Controller都不会再执行;这个方法作用在上图中2的位置。2.在springmvc.xml中配置自定义的Interceptor
一、自定义拦截器实现类
在Springmvc中想要定义拦截器,则自定义一个类要实现HandlerInterceptor接口,HandlerInterceptor接口中有三个抽象方法,若不想使用全部,则可以或者是这个类继承HandlerInterceptor接口的实现类,比如Spring已经提供的实现了HandlerInterceptor 接口的抽象类HandlerInterceptorAdapter ;
在此之前,先回顾下springmvc整个访问的流程:
HandlerInterceptor接口的定义如下:
HandlerInterceptor接口中定义了三个抽象方法:
**preHandle方法:**Springmvc中可以存在多个自定义拦截器。每个拦截器的调用会依据他的声明顺序依次执行,preHandle()为最先执行的方法,返回值为boolean类型。当返回true时,会继续调用下一个拦截器的preHandle方法,直至最后一个拦截器的preHandle运行结束并返回true时,才调用Controller中的方法。当某个拦截器的preHandle()返回值为false时,后续的拦截器和Controller都不会再执行;这个方法作用在上图中2的位置。
2.在springmvc.xml中配置自定义的Interceptor
3.测试,访问登录页login.jsp,点击登录后会向Controller发送一个请求(jsp页和Controller页不为本次重点,略)
三、多个拦截器应用示例
1.新增两个测试拦截器MyInterceptor2 MyInterceptor3 增加一个登录验证拦截器LoginInterceptor 对于未进行登录的用户禁止访问login.jsp以外的页面
public class LoginInterceptor implements HandlerInterceptor {
2.在springmvc.xml中配置自定义的Interceptor
点击登录后,拦截器放行,跳转至doLogin.do,保存信息至session中。代码为:
3.测试
(1)未进行登录状态下直接访问list.do
可见程序执行至LoginInterceptor时,未检测到session中username的值,则返回false 并跳转至登录页,程序无法进入Controller
(2).先登录
登录成功:
打开新窗口,再次直接访问list.do
访问成功!看看控制台打印的什么:
小编整理了整套JAVA视频资源,供自学的小伙伴免费下载,大家可以关注或私信小编,或是关注企鹅群568522003