可以創(chuàng)建如下的項(xiàng)目工程文件結(jié)構(gòu):
project:
|-src
|-com
|-com.pzx.dao.interfaces
|-com.pzx.dao
|-com.pzx.entity
|-com.pzx.model
|-com.pzx.service.interfaces
|-com.pzx.service
|-com.pzx.actions
|-com.pzx.servlet
|-com.pzx.util
|-struts.xml
|-Test
|-com.test
|-TestCase1.java
|-WebContent
|-WEB-INF
|-lib
第一步:Hibernate部分
1、從需求分析中獲取數(shù)據(jù)庫(kù)實(shí)體,在com.pzx.model中創(chuàng)建實(shí)體對(duì)象
2、創(chuàng)建每個(gè)實(shí)體對(duì)象的數(shù)據(jù)訪(fǎng)問(wèn)層的接口,寫(xiě)在com.pzx.dao.interfaces中
3、創(chuàng)建每個(gè)實(shí)體對(duì)象的業(yè)務(wù)邏輯層的接口,寫(xiě)在com.pzx.service.interfaces中
4、把Hibernate的相關(guān)jar包復(fù)制到lib目錄下:
HIBERNATE_HOME/lib 下的相關(guān)的依賴(lài)的第三方包
HIBERNATE_HOME/hibernate3.jar Hibernate的核心實(shí)現(xiàn)
引入相關(guān)的JDBC驅(qū)動(dòng)
5、在src目錄下創(chuàng)建相關(guān)的配置文件:hibernate.cfg.xml,user.hbm.xml...
可以從以下目錄中拷貝過(guò)來(lái)修改:
HIBERNATE_HOME \etc\ hibernate.properties 舊版本的Hibernate實(shí)用的核心配置文件,這個(gè)文件列舉了相關(guān)的Hibernate配置,在配置文件時(shí)可以參考該文件。
HIBERNATE_HOME \etc\ hibernate.cfg.xml 如果存在這個(gè)文件則會(huì)覆蓋上面的properties文件
HIBERNATE_HOME\hibernate-3.2\etc 日志記錄文件
6、編寫(xiě)hibernate.cfg.xml文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名稱(chēng)</property>
<property name="hibernate.connection.username">用戶(hù)</property>
<property name="hibernate.connection.password">密碼</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<!--
<property name="hibernate.format_sql">true</property>
-->
<mapping resource="com/test/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7、編寫(xiě)user.hbm.xml等實(shí)體映射文件
<hibernate-mapping>
<class name="com.test.User">
<id name="id">
<generator class="uuid"/>
</id>
<property name="name" column=”user_name”/>
<property name="password"/>
</class>
</hibernate-mapping>
創(chuàng)建完映射文件之后,記得把hbm.xml文件添加到hibernate.cfg.xml文件中
<mapping resource="com/test/User.hbm.xml"/>
(在session-factory標(biāo)簽里property標(biāo)簽后)
8、生成數(shù)據(jù)庫(kù)
創(chuàng)建hibernate.cfg.xml中指定的數(shù)據(jù)庫(kù)
可以使用SchemaExport生成相關(guān)表
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
也可以在hibernate.cfg.xml中進(jìn)行相關(guān)的配置使之自動(dòng)生成
<property name="hibernate.hbm2ddl.auto">create</property>
第二步:Spring部分
1、 把spring相關(guān)的jar包復(fù)制到lib目錄中
SPRING_HOME\dist\spring.jar spring核心jar包
SPRING_HOME \lib\log4j\log4j-1.2.14.jar 記錄日志
SPRING_HOME \lib\jakarta-commons\commons-logging.jar
2、 在WEB-INF下建立applicationContext.xml
a) 可從SPRING_HOME\ samples\jpetstore\war\WEB-INF\目錄下拷貝applicationContext.xml
3、 提供log4j.properties配置文件
可從下面目錄中拷貝:
G:\software_programming\Java\SSH\spring\spring-framework-2.0.8-with-dependencies\spring-framework-2.0.8\samples\jpetstore\war\WEB-INF\ log4j.properties
4、把初始化Hibernate的SessionFactory借口交給spring管理
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
注意:這里的數(shù)據(jù)庫(kù)相關(guān)配置信息是寫(xiě)到了hibernate.cfg.xml文件中,也可以通過(guò)在spring配置jdbc datasource對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理,然后通過(guò)datasource注入sessionFactory的方式來(lái)創(chuàng)建會(huì)話(huà)工廠(chǎng)
5、配置spring為hibernate配置的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)操作的封裝類(lèi)hibernateTemplate
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
6、在applicationContext.xml文件中配置數(shù)據(jù)庫(kù)的事務(wù)(也可以使用AOP進(jìn)行配置)
<!-- 事務(wù)攔截器bean需要依賴(lài)注入一個(gè)事務(wù)管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 設(shè)置事務(wù)傳播特性,對(duì)應(yīng)于A(yíng)OP中的 <tx:advice /> -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED, readOnly
</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 定義BeanNameAutoProxyCreator,配置哪些類(lèi)和哪些方法使用事務(wù)對(duì)應(yīng)于A(yíng)OP中的 <aop:pointcut /> -->
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定對(duì)滿(mǎn)足哪些bean name的bean自動(dòng)生成業(yè)務(wù)代理 -->
<property name="beanNames">
<!-- 下面是所有需要自動(dòng)創(chuàng)建事務(wù)代理的bean-->
<list>
<value>userDAO</value>
<value>provinceDAO</value>
<value>cityDAO</value>
<value>sexDAO</value>
<value>statusDAO</value>
</list>
<!-- 此處可增加其他需要自動(dòng)創(chuàng)建事務(wù)代理的bean-->
</property>
<property name="interceptorNames">
<!-- 下面定義BeanNameAutoProxyCreator所需的事務(wù)攔截器-->
<list>
<value>transactionInterceptor</value>
<!-- 此處可增加其他新的Interceptor -->
</list>
</property>
</bean>
7、在applicationContext.xml中配置相關(guān)的數(shù)據(jù)訪(fǎng)問(wèn)層Dao,注意創(chuàng)建時(shí)要給spring提供一個(gè)借口,方便其代理
<bean id="userDAO" class="com.pzx.dao.UserDAOImpl">
<constructor-arg>
<ref bean="hibernateTemplate" />
</constructor-arg>
</bean>
8、在applicationContext.xml中配置相關(guān)的業(yè)務(wù)邏輯層Service,其構(gòu)造函數(shù)中的參數(shù)指向器數(shù)據(jù)訪(fǎng)問(wèn)層bean
<bean id="userService" class="net.blogjava.nokiaguy.kxw.service.UserServiceImpl">
<constructor-arg>
<ref bean="userDAO" />
</constructor-arg>
</bean>
第三步:struts部分
1、 建立界面原型
2、 建立struts.xml文件
可以從下面目錄中拷貝
STRUTS_HOME/apps/struts2-blank-2.1.6/WEB-INF/src/java/struts.xml
確定namespace
確定package
確定Action的名稱(chēng)
確定Result
3、 把相關(guān)jar文件拷貝到項(xiàng)目中
STRUTS_HOME /apps/struts2-blank-2.1.6/WEB-INF/lib 目錄下的相關(guān)jar文件
4、 配置web.xml文件
可以從
STRUTS_HOME /apps/struts2-blank-2.1.6/WEB-INF/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>
5、 在struts.xml中配置項(xiàng)攔截器
<interceptors>
<interceptor-stack name="excludeParamsStack">
<interceptor-ref name="defaultStack">
<param name="params.excludeParams">ext-comp-.*</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
6、 在struts.xml中配置相關(guān)的Action
<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
<!-- {0}_success.jsp -->
</action>
聯(lián)系客服