前天晚上帮助一个JAVA项目组测试一个项目,当我测试到注册功能的时候发现填写完注册信息点注册的时候没有任何提示就直接回到登陆页面,我马上将这个问题反映给了项目负责人,于是我们一起排查原因,经过三四个小时的排查,终于将问题解决。

在排查原因的过程中,我们发现当提交注册信息的时候在服务端看不到提交过来的数据,一开始我们以为是网络原因导致数据无法送达服务器端,但经过测试发现不是网络的原因,然后通过浏览器的开发者工具检查页面发现页面少了几个css等文件,最后经过测试也不是缺少文件导致无法注册的,我们甚至尝试重新写一个注册页面进行测试但是还是同样的问题,然后一直找不到原因,一直持续了大概3个小时,直接凌晨2点的时候,其中一位开发人员无意中将这个页面的拦截器去掉以后这个问题竟然神奇的解决了。

什么是拦截器

拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

在Webwork的中文文档的解释为――拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

因为那个使用了拦截器,所以当填写完注册信息点注册的时候action先被拦截器拦截,而且也没有打印出来,所以就造成了数据没有送到服务端的假像导致我们走了很多弯路,不过幸好这个问题得到了解决,我们的辛苦没有白费。不过在这里提醒一下各位开发者,拦截器有很多的功能和不同的配置方法,在使用的时候一定要根据项目的实际情况配置好,不然会产生很多的问题的。

作者:喻名堂