首先,建一个webProject,然后分别添加Struts2,Hibernate3和Spring3的支持,导入一些jar包,以及写配置文件。最重要的是几个配置文件的编写。web.xml最为重要,作为struts2和spring3的加载配置文件,要加入两个最重要的信息:
<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> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
分别是启动加载struts2的filter和spring的listener,此时,应该可以运行了,SSH2框架搭建完毕,然后进行其他的处理。
然后建立包和类,先建com.test.bean存放javaBean文件,例如这里有一个User.java,然后创建user的action处理类的包,可以叫做com.test.action.user,在其中建立SaveUserAction这个类,继承ActionSupport,进行存储用户。在这个类中有私有成员变量User,和其setter/getter,还有execute()方法,其中还有一个重要的类型UserService,由其处理请求,UserService又依赖于UserDAO的底层接口,由其实现类操纵数据。
定义Service包,com.test.service包,其下只定义接口UserService。
然后定义其实现类,同样一个包:com.test.service.impl,其中定义实现类UserServiceImpl,实现UserService
而实现类,是依赖于DAO来实现底层操作,所以还要建com.test.dao,其下也只定义接口,叫UserDAO
再建立dao的实现类,先建包com.test.dao.impl,其中建立UserDAOImpl实现UserDAO
接口
目录结构大体如此,结构非常清晰。
另外,如果有必要,还要构建util包,处理字符串操作,日期类型操作以及常量字符串保存等
然后开始进行一个业务的流程,首先在UserDAO中编写一个方法
public void saveUser(User user);此处只是声明,由其impl实现类实现,在UserDAOImpl中还要继承extends HibernateDaoSupport,就可以使用hibernateTemplate了,然后写具体实现类:
public void saveUser(User user){ this.getHibernateTemplate().save(user); }这就已经直接操作数据库了,在最底层,有hibernate框架提供。
可以操纵数据之后,就在Service中进行逻辑操作了,同样定义save(User user)的类,由其impl来实现,首先定义一个public UserDAO userDao;变量,生成setter/getter,然后就覆盖saveUser方法,很简单
public void save(User user){ XXXXX有必要的话在此写处理的逻辑 this.userDao.saveUser(user);}
然后就是在Action里面进行操作了,要用userService,就要定义这样一个变量,然后生成setter/getter,在execute中调用userService的方法即可:this.userService.save(this.user);接下来return SUCCESS及完毕。
完后就开始配置文件的写入:
先从applicationContext.xml开始:
先配置DataSource:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/ssh2</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean>
然后是sessionFactory,hibernate的Users.hbm.xml文件
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="mappingResources"> <list> <value>com/test/bean/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean>
在其中配置DAO的bean,注意配置成scope=singleton,以为它是无状态的,还要注入sessionFactory。然后配置service的,注入dao的bean,依然是scope=singleton。然后就是最高层的Action的bean,注入service的bean。spring的配置文件就结束了,注意是一层一层注入的。
然后就是配置struts2的配置文件,很简单的一些配置就可以满足。