Spring+Struts2+Hibernate 架构分层原理说明

今天,在这里做个小结,在简单地用到的三层框架中,用spring作为工厂,即factory的作用,产生实例bean 。接着,在strut.xml文件中,将产生的实例bean进行运用,通过spring对bean进行相应的管理,而struts主要负责视图方面的转接和过滤、校验的作用。

Hibernate主要负责DAO层的管理,在简单地运用中,资料书中运用到了Hibernate中的HibernateDaoSupport类,使用其中的SQL操作语句的封装,来实现对POJO与数据库的相关操作。Hibernate的DAO类也交由Spring来管理。

整个架构包分为--->action包:调用的service包中的类,进行action的相应处理,主要处理在execute()方法中进行调用。dao包:负责对DAO层的管理(CURD),该层的类被service包中的类调用。PO包:是对所需操作的记录和类的映射。service属于业务逻辑层,调用dao包中的类,进行事物操作的封装。

通过以上的管理机制的好处在于:在spring中产生的bean的耦合性明显降低。MVC架构较为清晰。在jsp页面中处理html和struts2的标签外,不会见到java代码的编码。这样,给页面带来了整洁性,易维护性。

下面贴下主要的配置代码出来:

1、hibernate的sessionFactory配置文件内容交由spring的applicationContext.xml来代替管理,以下是spring配置文件的主要代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 <!-- 定义数据源Bean -->
 <bean id="dataSource"
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName">
   <value>com.mysql.jdbc.Driver</value>
  </property>
  <property name="url">
   <value>jdbc:mysql://localhost/mystruts2</value>
  </property>
  <property name="username">
   <value>root</value>
  </property>
  <property name="password">
   <value>root</value>
  </property>
 </bean>
 
 <!-- 定义SessionFactory -->
 <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>
    <prop key="hibernate.show_sql">false</prop>
   </props>
  </property>
  <property name="mappingResources">
   <list>
    <value>net/hncu/po/User.hbm.xml</value>
   </list>
  </property>
 </bean>

<!-- 配置业务逻辑组件 -->
 <bean id="userService" class="net.hncu.service.UserServiceImpl">
  <!-- 为业务逻辑组件注入DAO组件 -->
  <property name="userDAO" ref="userDAO"></property>
 </bean>

<!-- 创建addAction实例 -->
 <bean id="addAction" class="net.hncu.action.AddAction" scope="prototype">
  <property name="userService" ref="userService"></property>
 </bean>

</beans>

2、为了让struts能够知道自己的类实例是由spring来产生,因此,需要在web,xml中增加监听机制,即加入以下的代码:

<listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>

 

3、struts,xml中的配置代码如下:

<struts>
 <constant name="struts.i18n.encoding" value="gbk"></constant>
 <!-- Action必须放在指定的包名空间中-->
 <package name="struts2" extends="struts-default">
 <action name="add" class="addAction">
   <!-- 定义处理结果与视图资源之间的关系-->
   <result name="success" type="redirect">/showAll.action</result>
   <result name="input">/add.jsp</result>
   <result name="error">/add.jsp</result>
  </action>

</package>
</struts>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值