伪类测试

来源:互联网 发布:php取出数组最大值 编辑:程序博客网 时间:2024/06/11 19:04

不采用伪类的方式,只通过struts的控制器就可以直接进入Action。但是Action里面其他的东西就需要到

spring容器中去找了,如果找到还好说,找不到就会报null异常。
如果采用伪类的方式,就必须在spring的配置文件中配置Aciton,也就是说通过spring来实例化Action,那么就相应的必须通过spring来实例化Aciton里面的其他东西,要不然在调用的时候也会报相应的null异常。


其实真正的流程为:先通过spring容器去实例化这个Action(也就是先考虑伪类的方式),如果spring容器不能实例化这个Action(也就是说在spring容器中没有配置该Aciton的实例化配置),那么就考虑直接用strtus控制器去实例化这个Action,如果struts控制器也没办法实例化这个Aciton,那么就会报不能实例化该Aciton错误。如果能实例化的话就实例化,然后再赶紧到spring容器中去找其他的东西能不能实例化,如果配置了其他的东西的实例化配置,那么调用的时候就可以直接调用,如果没有配置相应的实例化配置的话,调用的时候就会抛出null异常。


其实也可以采用这样一种线条式思维来理解:就是不管struts实例化这个Action了没有,如果web环境中引入了spring容器,web容器总是要到spring容器中去实例化一遍这个Action,这就导致即使struts的控制器已经替我们实例化了这个Action,过一遍spring容器,又会把原来实例化的那个Aciton给覆盖掉,如果新实例化的这个Action中的其他东西没有被实例化,那么又会报null异常。

原创粉丝点击