struts + spring + hibernate 的整合 总结文档
1.加包顺序
struts+Spring+Hibernate
2.剔除asm2.2.3.jar ,加入commons-pool.jar(加到lib里面),补上log4j.prperties(补在src下面)
3.加载spring配置文件
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/classes/beans.xml"/>
</plug-in>
4.struts-config.xml配置修改spring动态代理
<action path="/myAction" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="error" path="/error.jsp" />
<forward name="success" path="/success.jsp" />
</action>
5.Spring 中的 beans.xml注册Action Bean
<bean name="/myAction" class="com.accp.struts.action.MyAction">
</bean>
研究配置文件:
一. struts的配置文件
和以前的struts配置文件一样 不同的是程序的运行先要运行<plug-in>.......</plug-in>它的作用是
加载spring 它的写法:
<plug-in className="org.springframework.web.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="classpath:beans.xml">
</plug-in>
程序读完 beans.xml 后进入<action>........</action>
在action中和以前不同的是程序将比直接去进入相应的类中处理而是将控制权交给了spring
在这里action type属性值是:org.springframework.web.struts.DelegatingActionProxy
DelegatingActionProxy 是一个实现类 通过它可以把控制权转交给spring 在运行spring
在spring 中找到 action的path值 name属性的值 如果找到了name 的属性值和path值相同
就运行spring的这段代码
<action path="/myAction" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="" path="/*.jsp">
</action>
二. spring的配置文件 主要的组成部分
在spring里面首先要接action的path值
<bean name="/myAction" class="com.accp.struts.MyAction">
<property name="mybiz" ref="myBiz">
/* name是随便取名 ref的值是一个类的代理名 是这个配置文件中存在的bean id的值 */
</property>
</bean>
在spring 里面接转交权 的bean 是用name 其他全部用id
spring里面都是一些依赖注入【控制反转】代码
<bean name="/myAction" class="com.accp.struts.action.MyAction">
<property name="mybiz" ref="myBiz"></property>
/* private IMyBiz mybiz;【MyAction 类】 */
</bean>
<bean id="myBiz" class="com.accp.biz.MyBizImpl">
<property name="myDao" ref="deptDAO"></property>
name的值是这里来的: private IMyDao myDao;[MyBizImpl类]
一定要注意:这里面的name属性值是在 具体的实现类中的 的接口对象名
</bean>
<bean id="deptDAO" class="com.accp.hibernate.DeptDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
三.在刚开始学ssh架构时 操作出现的错误:
1.粗心 在加包的时候需要细心 虽然很简单,但要很清楚每一个框架在加包的时候都要注意的问题
每一个框架在加包的时候都有自己的一种操作
struts 加包的时候需要注意选择struts的版本问题 小心出错 选struts 1.2版本
spring 开始在复选框中 选前3个 和最后1个 下面选第二个 copy checked...........->next->
将xml 的名字改为简单点 如:beans.xml 这个是spring 的配置文件
hibernate 开始选择复选框中所有 下面的选第二个 copy checked.......->next 选第二个spring...
-->选第二个Existing spring ...... --> SessinFactory ID : 填 sessionFactory -->next
Bean Id 这个是 数据源的名字 随便给 下面选所需的数据库 --》next 选所在工程的路径包
接着new 包 -》 finally
2. 提高编程效率容易出现的错误
·自动生成数据映射文件
在所示的数据库表 右击选倒数第二个 Hibernate R....... --->next
复选框选前3个 在第2个复选框中 把create abstract class 去掉 ---》next 选主键生成器 一直next就ok
在这个映射文件中它会生成 struts多表关系 如果程序是单表操作则需要将它干掉 做到这里的时候要到这个包中
生成的实体中相应关系的代码都要干掉 要干干净
我们可以给这个包中在添加接口(规则),这个接口的方法就写它生成DAO中的方法 然后再在它生成的DAO类中实现
这个接口的形式字样(其实这个是一个存在的形式,因为时按照人家生成好的方法在写的接口) 这样做主要是为了
方便业务层(..bizImpl)中进行依赖注入【控制反转】的处理。
Spring 从加入程序开始理解:
package com.accp.hibernate;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class DeptDao {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
private HibernateTemplate getHibernateTemplate(){
return new HibernateTemplate(sessionFactory);
}
public Dept getInfoById(int id){
/**
* 在开始的时候它就是以前的纯hibernate环境下开发的过程它有7大对象7大步骤
* 现在SessionFactory直接有了Spring的管理 就可以简化开始的一些步骤 不直接读取映射文件(数据源)
* 因为这些都有spring进行了管理 这里就可以直接的读取spring.xml配置文件 这里需要获取ApplicationContext来操作
* 把sessionFactory作为一个javaBean对象注入然后读取的是这个Bean对象
* 获得了SessionFactory对象后就可以打开一个Session 得到session的对象后不用去创建事物了
* session可以直接的去调用业务方法 这里面得到的Session需要打开关闭
* 这是Spring出现后给Hibernate和Struts带来的便利
* 这个时候不需要对sesion进行管理
* 我们使用模板类(HibernateTemplate)这个类中它做了对session的管理处理
* 只需要利用这个HibernateTemplate类的getHibernateTemplate()方法[构造方法]可以给
* 我们做我们想要做的业务处理
* 数据源的获取直接都有spring来做
*/
// ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
// SessionFactory sf = (SessionFactory) ac.getBean("sessionFactory");
// Session s = sf.openSession();
//
// Dept de =(Dept)s.get(Dept.class, new Long(id));
//
// s.close();
// return de;
return null;
}
/**
* 在第二版的时候,引入了Spring的管理 spring的加入是程序的结构更加的规范
* 程序不在是那么具有耦合性 而是更具有接偶性
* * 这个时候不需要对sesion进行管理
* 我们使用模板类(HibernateTemplate)这个类中它做了对session的管理处理
* 只需要利用这个HibernateTemplate类的getHibernateTemplate()方法[构造方法]可以给
* 我们做我们想要做的业务处理
* 数据源的获取直接都有spring来做
*/
public Dept getInfoById2(int id){
// ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
Dept de = (Dept) getHibernateTemplate().get(Dept.class, new Long(id));
return de;
}
}
第二篇:公司骨干学习心得体会
公司骨干学习心得体会
这段时间,为了全面地提升渝百莎公司的各个方面,加强发展的力度,为日后的工作更上一个台阶,公司安排了一些负责销售的骨干外出学习了。
今次,公司外派骨干外出学习。全面地体现了“活到老,学到老”是亘古不变的名言,千古传颂,主要是说一个人在有生之年要不断地学习,充实自己的知识、能力等,使自己成为一个知识渊博的人。正如人一样,在这个竞争激烈的社会里面,必须做到“生命尚存,奋斗不息”,“活到老,学到老”,要时时懂得提升自己,否则就如一潭死水,越来越臭,最终被世人所远离,被社会所整治。对此,我们公司懂得如何去主动出击,懂得如何去寻求发展,懂得如何去拓展阅历??我个人,觉得确实是好的。
公司的骨干,有机会外出学习,务必是件好事。不仅有利于员工拓展自己的阅历,提升自己的能力;而且也有助于公司日后朝着良好的方向发展。公司的骨干外出学习回来后,也给我们分享了他们的学习心得。他们转述、分享学习的心得,真的不一般,不想学校任课老师的照本宣科,都是很实际地表述了我们应该如何在这个鱼龙混杂,千变万化的社会中谋求发展,执着追求,迈向成功。
现在,我们不妨倒过来思考一下,“学到老,活到老”,也就是说,只有不断地学习,才能生存得更久。不管对于一个人还是对于一个企业,这点都很重要。人需要学习,去补充知识,这样才有能力去应对面临的问题,使个人得
到进步。同样,一个企业更需要从内部、外部不断地学习,以了解、适应环境的变化,抓住企业发展的机遇,这样才能实现企业的基树常青。学习型组织是指通过建立组织共同愿望、系统思考以及团队学习来改善组织的心智模式,以达到自我超越的境地。现在企业所追求的“学习型组织”,笔者认为,从中国文化的角度讲,其实就是“学到老,活到老”,只不过前者理论化了,但精髓如出一辙。相信我们渝百莎公司会有个美好未来,我的未来不是梦!