WEB启动时,如何加载spring容器和struts2容器(bean的注入和url如何请求)

整合原理

整合原理:
   *  web.xml
      *  spring容器是以监听器的形式与tomcat整合的
           <listener>
                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
           </listener>
           <context-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath:spring/applicationContext.xml</param-value>
           </context-param>
      *  以过滤器的形式整合struts2容器
      *    <filter>
                <filter-name>struts2</filter-name>
                <filter-class>             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
                </filter-class>
            </filter>

ContextLoaderListener 说明:

  • ContextLoaderListener 当中的createContextLoader()加载spring的web容器
  • initWebApplicationContext
    * 初始化spring的web容器
    * 加载其配置文件
  • 当执行完这两个方法以后,就启动spring的web容器了,在spring容器中,单例模式的
    bean就被实例化了,所以dao和service层的对象和代理对象就在这个时候产生了

这里写图片描述


在tomcat启动的时候,干了两件事情:

  • 加载了各种配置文件
  • 静态注入了一些bean

这里写图片描述


当发出 url 请求时 请求url:personAction_savePerson.action

步骤
* 先找struts的配置文件,会找根据struts2的相关配置查找action的创建方式
* 会去常量struts.objectFactory查找到底是由哪个类创建了action
* 会去struts-default.xml,struts-plugin.xml,struts.xml文件去找struts.objectFactory
* 哪个配置文件加载在最后,哪个决定
* 最后在struts和spring整合的包中找到了struts-plugin.xml文件
* <bean type="com.opensymphony.xwork2.ObjectFactory"
* name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<constant name="struts.objectFactory" value="spring" />

* 由上述的内容可以知道,action是由StrutsSpringObjectFactory创建的,而该类继承了SpringObjectFactory

这里写图片描述

该源代码中beanName就是struts2配置文件中的action元素的class属性的值,这就意味着
class属性的值要和spring容器中action所在的bean所指定的id值要一致
如下图
这里写图片描述


这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以直接运行,并对整合springstruts2步骤及需要注意的事项进行类总结 整合springstruts2总结 1.将struts2spring中的库文件复制到项目下(可以查看WEB-INF\lib目录下的文件) 注意:struts2-spring-plugin-2.3.8.jar和commons-logging.jar文件可以在 struts框架中的找到而spring.jar 在spring框架中 2. 配置struts.objectFactory属性值: 在struts.xml文件中添加 注意:如果有了struts2-spring-plugin-2.3.8.jar文件可以不用配置(本源代码中是没有配置的) 3.配置spring的监听器: 在web.xml中添加 org.springframework.web.context.ContextLoaderListener 4.配置spring配置文件(可以查看WEB-INF里面的applicationContext.xml文件) 注意:如果是默认,一定要放在WEB-INF中并文件名为applicationContext.xml 5.配置struts中的配置文件 注意:如果让spring来创建对象可以将action中的class属性中的值为springbean 中的id值,如果想让struts来创建可以直接指定类 附加: 整合原理 : Struts2Spring的集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar,这个包是同Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到,则由Spring创建,否则由Struts 2框架自身创建,然后由Spring来装配。Spring插件具体有如下几个作用: — 允许Spring创建Action、Interceptror和Result。 — 由Struts创建的对象能够被Spring装配。 — 如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值