把struts2看完了,在回过头来想下struts的东东,有时候真的差不多要走火入魔了......
配置ssh环境是新手必须要经历的一个过程,自己总结了一下仅供大家参考。重点在spring对hibernate工厂类的
接管,对struts action的处理上。添加顺序建议是 shs顺序,即spring hibernate struts ,ssh也可以,总之就
是hibernate要在spring的后面,让spring托管hibernate。注意,添加hibernate包的时候尽量覆盖spring中对hibernate支持的包,不然的话会有两个包冲突,无法创建
sessionFactory类,解决方法就是在lib下找到asm-2.23.jar删除之。
数据源可以用jdbc也可以用jndi的方式,建议使用jndi,无论是效率还是健壮性都是jndi牛。
appplicationContext中有几个属性的配置决定了对hibernate的支持:
<!-- 注册JNDI数据源 -->
<bean id="JNDIDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/XXXX"></property>
</bean>
<!-- 注册使用的sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
destroy-method="close">
<property name="dataSource">
<ref bean="JNDIDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>XX/XXX.hbm.xml</value>
</list>
</property>
</bean>
下面那块是在你添加映射文件时自动写在spring中,不用动。
<!-- 注册Hinernate使用模板 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
这块是针对在dao类中使用了hibernateTemplate模板的情况(即你的dao类继承了HibernateDaoSupport类),要
把此模版注册到你的dao类的ioc中。如果dao中没有使用此支持,只要把sessionFactory注册到dao的ioc中即可。
这里最好把dao实现的接口也ioc下,然后daoimpl类在ioc时 用parent继承接口的bean,这样符合了spring的接口
编程。
spring结合struts就是在struts中plug-in即可:
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
在web.xml中声明contextConfigLocation:
<!-- 在web.xml中添加spring信息 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
或者建立一个listener监听....由于受过打击,还是不用监听的好。对action的ioc有两种方式:
delegationRequestProcessor和delegationActionProxy。前者注册一个contrller
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
这样不用动action,后者就是在action中修改type="org.springframework.web.struts.DelegatingActionProxy"
。无论是那种方式都要在spring中ioc,注意bean的name(一定是name!)就是action的path,把用到的daoimpl
注册进来。同时,在action中就要写明白daoimpl的setter了,一定的哟。
其实ssh的配置不难,就是细节太多,当然了把这些琐碎的东东说道一天也落落不完,还要大家一起来总结啦。所
以大家现在开始自己的ssh之旅吧......
配置ssh环境是新手必须要经历的一个过程,自己总结了一下仅供大家参考。重点在spring对hibernate工厂类的
接管,对struts action的处理上。添加顺序建议是 shs顺序,即spring hibernate struts ,ssh也可以,总之就
是hibernate要在spring的后面,让spring托管hibernate。注意,添加hibernate包的时候尽量覆盖spring中对hibernate支持的包,不然的话会有两个包冲突,无法创建
sessionFactory类,解决方法就是在lib下找到asm-2.23.jar删除之。
数据源可以用jdbc也可以用jndi的方式,建议使用jndi,无论是效率还是健壮性都是jndi牛。
appplicationContext中有几个属性的配置决定了对hibernate的支持:
<!-- 注册JNDI数据源 -->
<bean id="JNDIDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/XXXX"></property>
</bean>
<!-- 注册使用的sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
destroy-method="close">
<property name="dataSource">
<ref bean="JNDIDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>XX/XXX.hbm.xml</value>
</list>
</property>
</bean>
下面那块是在你添加映射文件时自动写在spring中,不用动。
<!-- 注册Hinernate使用模板 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
这块是针对在dao类中使用了hibernateTemplate模板的情况(即你的dao类继承了HibernateDaoSupport类),要
把此模版注册到你的dao类的ioc中。如果dao中没有使用此支持,只要把sessionFactory注册到dao的ioc中即可。
这里最好把dao实现的接口也ioc下,然后daoimpl类在ioc时 用parent继承接口的bean,这样符合了spring的接口
编程。
spring结合struts就是在struts中plug-in即可:
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
在web.xml中声明contextConfigLocation:
<!-- 在web.xml中添加spring信息 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
或者建立一个listener监听....由于受过打击,还是不用监听的好。对action的ioc有两种方式:
delegationRequestProcessor和delegationActionProxy。前者注册一个contrller
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
这样不用动action,后者就是在action中修改type="org.springframework.web.struts.DelegatingActionProxy"
。无论是那种方式都要在spring中ioc,注意bean的name(一定是name!)就是action的path,把用到的daoimpl
注册进来。同时,在action中就要写明白daoimpl的setter了,一定的哟。
其实ssh的配置不难,就是细节太多,当然了把这些琐碎的东东说道一天也落落不完,还要大家一起来总结啦。所
以大家现在开始自己的ssh之旅吧......