终于基本上完成了webwork+spring+hibernater的整合.下面以我做的为例简单说明开发过程及思路:
我们要使用的webwork提供给我们的东西很多,不过我只使用其MVC的容器.贯穿整个应用程序的是其MVC的框架.我们使用Spring 的目的是要解藕.类的管理我们使用其提供的Ioc容器.hibernate我们要它的目的是其提供的O/R Mapping.
1.思路
I 关于MVC的实现
起源: 从web页的form提交开始产生一个Action,传递一个对象,根据xwork的配置由一个实现了Action接口的类来处理.一般在excute方法里处理.
分水岭:一般地,我们会在action处理的时候使用业务逻辑接口帮助我们处理.即:在action中注入一个业务接口帮助我们完成action的职责.
曲终:处理完毕返回一个已经更新过的对象给视图.
II 关于Ioc 的无孔不入
我们由一个ApplicationContent.xml来配置我们的类.
如图,在各个层次上都有体现出Ioc的影子
接着再看配置文件
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- >
- <beans>
- <bean id="LoginAction" class="com.starter.action.LoginAction">
- <property name="objUser">
- <ref bean="User" />
- property>
- <property name="userService">
- <ref bean="UserService" />
- property>
- bean>
- <bean id="UserService"
- class="com.starter.service.impl.UserServiceImpl">
- <property name="userDao">
- <ref bean="UserDAO" />
- property>
- bean>
- <bean id="UserDAO" class="com.starter.dao.impl.UserDAOImpl2" parent="baseDAO">bean>
- <bean id="User" class="com.starter.vo.User">bean>
- <bean id="DataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>com.mysql.jdbc.Drivervalue>
- property>
- <property name="url">
- <value>jdbc:mysql://localhost:3306/bookstorevalue>
- property>
- <property name="username">
- <value>rootvalue>
- property>
- <property name="password">
- <value>rootvalue>
- property>
- bean>
- <bean id="baseDAO" class="com.starter.dao.BaseDAO" abstract="true">
- <property name="sessionFactory">
- <ref bean="SessionFactory"/>
- property>
- bean>
- <bean id="SessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource">
- <ref bean="DataSource" />
- property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">
- org.hibernate.dialect.MySQLDialect
- prop>
- props>
- property>
- <property name="mappingResources">
- <list>
- <value>com/starter/vo/Book.hbm.xmlvalue>
- <value>com/starter/vo/Orders.hbm.xmlvalue>
- <value>com/starter/vo/User.hbm.xmlvalue>
- <value>com/starter/vo/Orderitem.hbm.xmlvalue>
- <value>com/starter/vo/Catelog.hbm.xmlvalue>
- list>
- property>
- bean>
- beans>
我们在服务层,数据访问层都利用了Ioc的注入功能来实现系统的分层以达到解藕的目的.