转SSH框架的基本配置

来源:互联网 发布:淘宝网注册流程 编辑:程序博客网 时间:2024/06/06 00:24

SSH框架的基本配置:
1.相关jar包的引入,这里我采用的是spring2 + struts2 + hibernate3的组合,搭完了之后才发现Spring已经到3了,
不知道在Spring3上面的配置是否相同,有待尝试。
 

Code:
  1. -----核心jar包-----   
  2. # spring.jar    
  3. # struts2-core.jar   
  4. # xwork-core.jar   
  5. # mysql-connector-java.jar   
  6. # hibernate3.jar   
  7. # struts2-spring-plugin.jar   
  8. -----在默认配置下核心jar所依赖的jar包---   
  9. # commons-collections.jar ---|   
  10. # commons-fileupload.jar-----|------------这三个jar包是在jakarta-commons项目中一些   
  11. # commons-logging.jar--------|            基于JDK上扩展的工具包。   
  12. # freemarker.jar   
  13. # log4j.jar   
  14. # ognl.jar   
  15. # dom4j.jar   
  16. # jta.jar   
  17. # cglib-nodep.jar   
  18. # antlr.jar ------------ 这个jar包是spring AOP 采用 动态代理 时需要的jar包。  


2.相关的配置
 i)/WEB-INF/web.xml
 a.需要配置一个Struts2的Filter:
 

Code:
  1. <filter>  
  2.  <filter-name>struts2</filter-name>  
  3.  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  4. </filter>  
  5. <filter-mapping>  
  6.  <filter-name>struts2</filter-name>  
  7.  <url-pattern>/*</url-pattern>  
  8. </filter-mapping>  


 b.由于从struts2.1.3之后的版本不再建议采用org.apache.struts2.dispatcher.FilterDispatcher,所以,我们最好
 配置成StrutsPrepareAndExecuteFilter或者StrutsExecuteFilter以及StrutsPrepareFilter,需要注意的是:如果配置
 成StrutsExecuteFilter需要将StrutsPrepareFilter也配置上,否则将会报错。所以建议就只直接采用StrutsPrepareAndExecuteFilter。

 c.此外还需要配置一个ContextListener:

Code:
  1. <listener>   
  2.    <listener-class>   
  3.         org.springframework.web.context.ContextLoaderListener   
  4.    </listener-class>   
  5. </listener>   


 如果你的applicationContext.xml没有配置在/WEB-INF/目录或者采用的不是默认的文件名,则还需要配置context-param,让Spring找到对应的
 配置文件,如下(注意:param-name的内容一定是contextConfigLocation,Spring将根据该名称注入到相应的对象中):
 

Code:
  1. <context-param>  
  2.  <param-name>contextConfigLocation</param-name>  
  3.  <param-value>classpath*:application-Context.xml</param-value>  
  4. </context-param>  

 ii)applicationContext.xml,这个文件是比较核心的文件:

 a)配置sessionFactory,有两种配置方式:
 (1)采用传统的Hibernate配置文件,将其映射到sessionFactory中:
 

Code:
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.  <property name="configLocation" >  
  3.   <value>classpath:hibernate.cfg.xml</value>  
  4.  </property>  
  5. </bean>  


 采用这种方式时,需要在hibernate.cfg.xml文件中配置数据连接相关信息,这里与一般的hibernate配置文件一样:
 

Code:
  1. <hibernate-configuration>  
  2.  <session-factory>  
  3.   <!-- connection configuration -->  
  4.   <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  5.   <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ssh_test</property>  
  6.   <property name="hibernate.connection.username">root</property>  
  7.   <property name="hibernate.connection.password">orange</property>  
  8.   <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  9.   <!-- the following configuration just for  programming and debug -->  
  10.   <property name="hibernate.show_sql">true</property>  
  11.      
  12.   <!-- mapping resource -->  
  13.   <mapping resource="com/ssh/bean/User.hbm.xml"/>  
  14.  </session-factory>  
  15. </hibernate-configuration>  

 (2)采用sessionFactory属性的方式配置数据源相关信息,如下:

Code:
  1. <!-- 配置数据源 -->  
  2. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  3.  <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  4.  <property name="url" value="jdbc:mysql://localhost:3306/mytest" />  
  5.  <property name="username" value="root" />  
  6.  <property name="password" value="orange" />  
  7.  <property name="maxActive" value="100" />  
  8.  <property name="maxIdle" value="30" />  
  9.  <property name="maxWait" value="500" />  
  10.  <property name="defaultAutoCommit" value="true" />  
  11. </bean>  
  12.   
  13. <!-- 将数据源映射到sessionFactory中 -->  
  14. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  15.  <property name="dataSource" ref="dataSource" />  
  16.  <property name="hibernateProperties">  
  17.   <props>  
  18.    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  19.    <prop key="hibernate.show_sql">true</prop>  
  20.   </props>  
  21.  </property>  
  22.  <property name="mappingResources">  
  23.   <list>  
  24.    <value>com/test/bean/User.hbm.xml</value>  
  25.   </list>  
  26.  </property>  
  27. </bean>  


 
 b)配置完sessionFactory后,还可以根据需要配置以下三方面的内容,也可以不配置选择采用默认的方式:
 

Code:
  1. <!-- 配置事务管理器 -->  
  2. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  3.  <property name="sessionFactory">  
  4.   <ref bean="sessionFactory"/>  
  5.  </property>    
  6. </bean>  
  7.   
  8. <!-- 配置事务的传播特性 -->  
  9. <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  10.  <tx:attributes>  
  11.   <tx:method name="add*" propagation="REQUIRED"/>  
  12.   <tx:method name="del*" propagation="REQUIRED"/>  
  13.   <tx:method name="modify*" propagation="REQUIRED"/>  
  14.   <tx:method name="*" read-only="true"/>  
  15.  </tx:attributes>  
  16. </tx:advice>  
  17.   
  18. <!-- 那些类的哪些方法参与事务 -->  
  19. <aop:config>  
  20.  <aop:pointcut id="allManagerMethod" expression="execution(* xxx.xxx.*.*(..))"/>  
  21.  <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>  
  22. </aop:config>  

这样就基本完成了我们的ssh的相关配置。

3.SSH的基本使用:
 具体分工:
 # 在applicationContext.xml中配置相关的bean信息
 
 

Code:
  1. <bean id="userService" class="com.ssh.service.impl.UserServiceImpl">  
  2.  <property name="userDao" ref="userDao"/>  
  3. </bean>  
  4.   
  5. <bean id="loginAction" class="com.ssh.action.LoginAction">  
  6.  <property name="service" ref="userService" />  
  7. </bean>  

 这里的property属性中name值对应的是相应处理类生成时需要IoC容器注入的属性,比如说id为loginAction的处
 理类为com.ssh.action.LoginAction(它其中应当设置一个setService(UserService service)方法),这样在需要使
 用该bean时,IoC容器会调用这个setService方法来将生成的userService对象传入。
 需要注意的是,如果想让IoC容器注入相应属性,则必须要实现相应属性的set方法。

 # 在struts.xml中配置action的相关信息
 相关注意事项:
 由于所有的bean都由Spring来管理,那么在struts.xml中一个action的class属性就不能写成具体的类,
 而是要使用该类在applicationContext.xml文件中配置的Bean的id,如:
 

Code:
  1. <action name="login" class="loginAction">  
  2.   <result name="success">/result.jsp</result>  
  3.   <result name="input">/index.jsp</result>  
  4.  </action>  


 这个loginAction对应的就是上面的id为loginAction的bean,而这个bean的class属性中设置的才是真正
 的对应的Action的处理类。

 # 对于每个模型,都要有一*.hbm.xml

3.其它一些注意点:
Spring中一些的概念很重要:AOP,IOC。

原创粉丝点击