SSH 三个框架的一种结合方式

本文介绍了SSH(Struts+Spring+Hibernate)框架的整合应用,详细解释了各组件的作用及交互方式,包括Struts作为MVC模式的控制器部分,Spring提供依赖注入和面向切面编程支持,Hibernate实现对象关系映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

本文包含主要内容:简单介绍SSH,以及SSH结合应用,在结合时要注意的问题

写本文的目的:刚则把SSH学完,最近在学习把SSH三个框架结合起来用,老是遇到一些问题,根据我对这些问题的分析,发觉出现这些问题的主要原因是:

——混淆SSH配置文件,

——混淆各个目录下的文件应该解决什么样的问题

因此写本文的最主要的目录是:梳理SSH结合结构,总结易错

文章分类:学习总结

读者类型:Spring刚学完的,

主要参考:百度

 

一, 简介SSH

1, Struts

1 采用的是MVC模式(Model, View, Controller)其实STRUTS主要管的是M这一层。它以ActionServlet为核心控制器,负责拦截来自用户的请求。然后把所有的请求分发给用户自己提供的ACTION 用户可以根据自己的需要来写控制逻辑处理JSP负面的请求,并返回结果给JSP

2Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2, Hibernate:它对JDBC进行了非常轻量级的对象封装

 

 

二,SSH结合

 A—— JAVA文件

 SRC下的

1 com.demo.domain 存放与数据库对象有关的JAVABEAN 以及数据描述文档,

User.java User.hbm.xml

  2 com.demo.service 存放管理数据库USER表的接口定义 UserInterface.java

3 com.demo.service.impl  存放UserInterface接口的实现类,主要方法有添加,修改,删除用户

下面只写出一个方法,添加用户

继承了HibernateDaoSupport,就很容易提到getHibernateTemplate这个实例,容易实现数据库的操作,他的实现还依赖于SPRING配置文件

public class UserManagerImpl extends HibernateDaoSupport implements

       UserInterface{

    public void addUser(User user) {

       getHibernateTemplate().save(user);

 }

}

 我们如何调用此方法来添加一个用户呢? 

执行下面的TEST就可以在数据库中添加一个用户

public class TestUser extends TestCase{

    public void test(){

    ApplicationContext ctx = ClassPathXmlApplicationContext("a*.xml");

   UserInterface manager =( UserInterface)ctx.getBean("userManagerImpl");

    User user = new User();

 

        manager.addUser(user, 13);

}

 

     

只有HIBERNATE的情况下,我们在添加一个用户的操作

// Configuration配置并启动HIBERNATE,创建SessionFactory对象,在HIBERNATE启动过程中,Configuration类的实例先定位映射文档位置,读取配置,然后创建SessionFactory

    Configuration config = new Configuration().configure();

//SSessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。

    SessionFactory factory = config.buildSessionFactory();

//Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。) Session对象是非线程安全的。     Session session = factory.openSession();

//QueryCriteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。

Query q = session.createQuery("from User");

//Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

    Transaction tx = session.beginTransaction();

    User user = new User(); 

    session.save(user);

    tx.commit();

     比较在加入了Spring 之后与之前

A没有加入SPRING 时,对数据库操作主要靠BIBERNATE的五大接口来实现,加入SPRING 后,通过读取配置文件 ,得到操作数据库的实现类来完成数据库操作

B加入SPRING后,操作数据库的实现类继承了HibernateDaoSupport,就很容易提到getHibernateTemplate实例。getHibernateTemplate实例完会有SPRING配置文件注入,因此当getHibernateTemplate出现空指针异常时,请检票配置文件。

  4 com.demo..service.web 存放 UserAction.java, UserForm.JAVA用来管理控制页面。

B ——配置文件

SRC下的

applicationContext-action.xml 配置与STRUTS有关的 与STRUTS.CFG.XML相配,并为UserAction传递参数userManager(userManagerImpl对象)

<bean name="/userAction" class="com.dome.web.UserAction">

<property name="userManager">

<ref bean="userManagerImpl"/>

</property>

</bean>

applicationContext-common.xml 配置与HIBERNATE有关的

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

 <property name="configLocations">

    <value>classpath:hibernate.cfg.xml</value>

 </property>

</bean>

 

<!-- 配置事务管理器 -->

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

       <property name="sessionFactory">

           <ref local="sessionFactory"/>

       </property>

    </bean>

   

    <!-- 配置事务特性 -->      

    <tx:advice id="txAdvice" transaction-manager="transactionManager">

    <tx:attributes>

        <tx:method name="add*" propagation="REQUIRED"/>

        <tx:method name="del*" propagation="REQUIRED"/>

        <tx:method name="*" read-only="true"/>

    </tx:attributes>

    </tx:advice>

   

    <!-- 配置那些类的方法进行事务管理 -->

    <aop:config>

    <aop:pointcut id="allManagerMethod" expression="execution (* com.demo.serivce.impl.*.*(..))"/>

    <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>

    </aop:config>

管理数据库的类,并反射sessionFactory

<bean id="userManagerImpl" class="com.dome.serivce.impl.UserManagerImpl">

    <property name="sessionFactory">

       <ref bean="sessionFactory"/>

    </property>

</bean>

 

hibernate.cfg.xml  HIBERNATE数据库的配置

 

          /WebRoot/web-INF 下的

Struts-config.xml

    <action path="/UserAction"

              name="userForm"

       type="org.springframework.web.struts.DelegatingActionProxy"

              scope="request"

              parameter="method">

     </action>

以前我们在TYPE中配置的是ACTION的地址,直接传给ACTION处理,这里我们配置SPRING的代理处理器,交给SPRING处理

Web.xml

C ——JSP 页面展示文件

 WebRoot/user下的

User.jsp

三,总结

1, bean.java(bean.hbm.xml)是要写入数据库中的对象 form.java JSP页面的封装。我们从数据库中得到的是BEAN.JAVA, 从页面上得到的是FORM.JAVA

2, getHibernateTemplateSPRING配置文件注入,如果要调用有getHibernateTemplate的方法,首先要赢取SPRING的配置文件。得到相关的实现类

转载于:https://www.cnblogs.com/WinOnesWay/archive/2010/01/18/1650912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值