Ioc(Inversion of Control)


       Ioc(Inversion of Control)即控制反转。在java开发中,Ioc意味着将设计好的类交给系统去控制,而不是在自己的内部控制。这称为控制反转。

      Ioc方式

       在struts2中,通过Ioc方式将Servlet对象注入到Action中,具体实现是由一组接口决定的,要采用Ioc方式就必须在Action中实现以下接口:
           1)ApplicationAware:以Map类型向Action注入保存在ServletContext中的Attribute集合
           2)SessionAware:以Map类型向Action注入保存在HttpSession中的Attribute集合。
           3)CookiesAware:以Map类型向Action注入Cookie中的数据集合。
           4)ParameterAware:向Action中诸如请求参数集合
           5)ServletContextAware:实现该接口的Action可以直接访问ServletContext对象,Action必须实现该接口的void                                setServletContext(ServletContext context)方法
           6)ServletRequestAware:实现该接口的Action可以直接访问HttpServletRequest对象,Action必须实现该接口的void                         setServletRequest(HttpServletRequest request)方法
           7)ServletResponseAware:实现该接口的Action可以直接访问HttpServletResponse对象,Action必须实现该接口的void                  setServletResponse(HttpServletResponse response)方法
     注意:采用Ioc方式时需要实现上面所示的一些接口,这组接口有一个共同点,接口名称都以Aware结尾。
 在Ioc方式下,可以使用Action实现其中的一个接口,也可以实现全部接口,这根据具体情况而定。
Action对Servlet API有两种访问方式,分别为间接访问和直接访问。对于间接访问方式,一般推荐使用。但是只能获得request对象,而得不到response对象;不推荐使用Ioc访问方式,因为该方式的实现比较麻烦,并且与Servlet API耦合大;推荐使用非Ioc方式,因为实现方式简单,代码量少而又能满足要求。
    
posted @ 2016-05-20 19:18  wojiaohuangyu  阅读(12)  评论(0)    收藏  举报