Spring MVC 两个过滤器测试拾遗
环境:Spring MVC 4,JDK:8,Tomcat:8.5
过滤器,理论上,不符合或未达到过滤的条件,应该继续下一步(即应该调用javax.servlet.FilterChain.doFilter())以确保进行正常业务逻辑的流程,否则应该输出错误信息或跳转到JSP或.do进行错误处理。
过滤器顺序 | 过滤器名称 | 逻辑块 | 备注 |
1 | OtherFilter |
| 实现javax.servlet.Filter |
2 | RequestValueFilter |
| 实现org.springframework.web.filter.OncePerRequestFilter |
一、异常情况1
- 发起请求到myaction;
- OtherFilter拦截,如果达到过滤条件,重定向到JSP;
- OtherFilter拦截,如果达到过滤条件,转发到(代码指定的).do;
- 执行.do逻辑;
- 结束;
二、异常情况2
- 发起请求到myaction;
- OtherFilter拦截,如果达到过滤条件,转发到(代码指定的).do;
- 执行.do逻辑;
- 结束;
三、异常情况3
- 发起请求到myaction;
- OtherFilter拦截,如果达到过滤条件,转发到JSP;
- OtherFilter拦截,如果达到过滤条件,转发到JSP;
- OtherFilter拦截,如果达到过滤条件,转发到JSP;
- 如果是JSP,会死循环,即不管是重定向到JSP还是转发到JSP都会被当前的过滤器拦截
四、正常情况
- 发起请求到myaction;
- OtherFilter.start();
- OtherFilter.filterProcess();
- RequestValueFilter.start();
- RequestValueFilter.filterProcess();
- myaction执行逻辑;
- RequestValueFilter.end();
- OtherFilter.end();