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

来源:互联网 发布:手机桌面时钟软件 编辑:程序博客网 时间:2024/05/17 22:59

今天,在这里做个小结,在简单地用到的三层框架中,用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>

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 肝肾衰弱有毒素怎么办 肾阴虚阳虚都有怎么办 吃辣刺激胃疼怎么办 舌头没有舌苔有裂纹疼痛怎么办 舌苔厚黄是怎么回事且口臭怎么办 舌苔厚白是怎么回事且口臭怎么办 长期有舌苔白厚怎么办 小孩的舌苔厚白怎么办 口苦口臭舌苔黄怎么办 婴儿的舌苔厚白怎么办 舌苔黄厚口臭痒怎么办 想让月经提前来怎么办 宝宝拉肚子怎么办吃什么好 投资p2p跑路了怎么办 借钱不还怎么办最有效 朋友借小钱不还怎么办 网络上贷款不还怎么办 网贷实在还不了怎么办 娱乐平台跑路了怎么办 360借条被拒了怎么办 网贷注册太多了怎么办 汽车大绿本丢了怎么办 网贷平台跑路怎么办 电脑中了1kb病毒怎么办 360网页走丢了怎么办 被信和汇金起诉怎么办 qq号搜不到好友怎么办 gta5买的车炸了怎么办 ipad千牛缩小了怎么办 求生之路2卡顿怎么办 仙剑奇侠传1凤凰怎么办打 水温报警灯亮了怎么办 遇到拿刀的歹徒怎么办 微信公众号被骗怎么办 苹果ad账号忘了怎么办 苹果手机想换id怎么办 苹果6按键不会动怎么办 app充值不到账怎么办 卡被取款机吞了怎么办 建行atm机坏了怎么办 三星手机开不了机怎么办