1.Struts2和Spring整合:
没有使用整合框架的时候,action请求是由Struts2框架创建,当Struts2和Spring进行整合时,Struts2框架提供了struts2-spring-plugin-2.3.24.1.jar包,将创建action的操作交给了Spring管理,Spring框架使用IOC进行注入。
当拦截器获取到请求后,将请求解析后,向Spring容器发送创建action请求,然后会在applicationContext.xml中的bean中查找是否存在指定的bean(通过id),如果找到就由Spring容器创建action并装配;如果没有找到,才会到struts.xml中查找,然后由Struts2框架创建action,由Spring装配。
注意:使用了struts2-spring-plugin-2.3.24.1.jar(整合)后:struts.xml文件中的action的class值不再是类名,而是Spring中applicationContext.xml中的bean的id名。
当发送请求时:
首先到web.xml中去:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再由监听器到Spring容器:
Spring容器:applicationContext.xml,在Spring容器中将做如下事:
(1)action创建
(2)配置sessionFactory(需要dataSource)
(3)事务管理(声明式事务)
2.Spring和Hibernate整合:
(1)Spring提供了操作类(HibernateDaoSupport和HibernateTemplate)简化Hibernate操作
(2)Spring提供了解决session关闭导致的延迟加载问题,在web.xml中配置过滤器:
<filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>