简介 目录 评价 推荐
  • 努力学习搬砖 2022-04-08

    SSH框架整合:

    一、各框架知识点回顾

    在没有其他框架时,单独的框架如何实现,以下伪代码:

    持久层(Hibernate):

    public class BookDao{
        public void save(Book book){
            Configuration cfg = new Configuration().configure();
            SessionFactory sf = cfg.buildSessionFactory();
            Session session = sf.openSession();
            Transaction tx = session.beginTransaction();
            session.save(book);
            tx.commit();
            session.close();
        }
    }

    业务层(Spring):

    public calss BookService{
        private BookDao bookDao;
        public void setBookDao(BookDao bookDao){
            this.bookDao = bookDao;
        }
        public void save(Book book){
            bookDao.save(book);
        }
    }
    <bean id="bookDao" class = "...BookDao"></bean>
    <bean id="bookService" class = "...BookService">
        <property name = "bookDao" ref="bookDao"/>
    </bean>

    WEB层(Struts2)

    public class BookAction extends ActionSupport implements ModelDriven<Book>{
        private Book book = new Book();
        public Book getModel(){
            return book;
        }
        public String save(){
            WebApplicationContext wap = WebApplicationContextUtils.getWebApplicationContext(...);
            BookService bs = wap.getBean("bookService");
            bs.save(book);
        }
    }

    二、搭建SSH框架开发环境

    1、创建WEB项目,引入相应jar包(Struts2、Spring、Hibernate框架开发相关)

        struts2-convetion-plugin-2.3.15.3.jar---struts2的注解开发的jar包

        struts2-spring-plugin-2.3.15.3.jar---struts2用于整合Spring的jar包

        hibernate-distribution-3.6.10.Final\hiernate3.jar

        hibernate-distribution-3.6.10.Final\lib\required\*.jar

        hibernate-distribution-3.6.10.Final\lib\jpa\*.jar

        slf4j-log4j12-1.7.2.jar---整合日志记录

        com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar---连接池数据库驱动包

        spring-tx-3.2.0.RELEASE.jar---事务管理

        spring-web-3.2.0.RELEASE.jar--整合WEB项目

        spring-jdbc-3.2.0.RELEASE.jar--事务管理

        spring-orm-3.2.0.RELEASE.jar--整合Hibernate

        spring-test-3.2.0.RELEASE.jar--整合Junit单元测试

        IOC需要的jar包:

            spring-beans-3.2.0.RELEASE.jar

            spring-context-3.2.0.RELEASE.jar

            spring-core-3.2.0.RELEASE.jar

            spring-expression-3.2.0.RELEASE.jar

            com.springsource.org.apache.log4j-1.2.15.jar---日志记录的jar包

            com.springsource.org.apache.commons.logging-1.1.1.jar---日志整合的jar包

        AOP需要的jar包:

            spring-aop-3.2.0.RELEASE.jar

            spring-aspects-3.2.0.RELEASE.jar

            com.springsources.org.aopalliance-1.0.0.jar

            com.springsources.org.aspectj.weaver-1.6.8.RELEASE.jar

    2、引入相应的配置文件

        Struts2框架的配置文件:

            web.xml---配置核心过滤器(StrutsPrepareAndExecuteFilter类)

            struts.xml---Struts2框架本身的配置文件(在SSH整合中使用纯注解方式时,此文件可省略)     

        Hibernate框架的配置文件:

            hibernate.cfg.xml---核心配置文件(在SSH整合中可省略此文件)

            映射文件

        Spring框架的配置文件:

            web.xml---配置核心监听器(ContextLoaderListener类)

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>        
    </listener>        
    <context-param>            
       <param-name>contextConfigLocation</param-name>            
       <param-value>classpath:applicationContext.xml</param-value>        
    </context-param>

            applicationContext.xml---Spring的核心配置文件

            log4j.properties---日志配置文件

    3、创建包结构(action、service、dao、domain)

    (一)Struts2整合Spring框架

    4、创建页面(WebRoot下新建jsp页面)

        部署项目到Tomcat访问本地jsp页面

    5、编写Action、Service和Dao

        Service层注入Dao

        Action中通过整合jar包自动注入,提供Service的set()方法即可

    6、配置Action、Service和Dao的类

        Service和Dao交给Spring管理,在applicationContext.xml中配置

        Struts2和Spring整合的两种方式:

        (1)Action的类由Struts2自身去创建;---在struts.xml中配置

        (2)Action的类交给Spring框架创建(可以交给Spring的AOP去管理)---配置时手动注入Service(Action创建类是多例,Spring创建类默认是单例模式,所以交由Spring创建时需要设置scope = "prototype")

    (二)Spring整合Hibernate框架

    7、创建数据库

    8、创建映射文件---类和表的对应关系(Hibernate会根据此文件在数据库中创建表结构)

    9、Spring整合Hibernate

        jdbc.properties属性文件

        在applicationContext.xml中配置连接池(ComboPooledDataSource类),引入外部属性文件

        在applicationContext.xml中配置Hibernate的相关属性SessionFactory,注入连接池,加载映射文件


    10、编写DAO中的代码  extends HibernateSaoSupport  注入SessionFactory 

        配置DAO时

    <bean id = "productDao" class="...ProductDao">
       <property name="sessionFactory" ref = "sessionFactory"/>
    </bean>

        在DAO中调用模板完成保存操作

        this.getHibernateTemplate().save(product);

    11、事务管理

        在applicationContext.xml中配置事务管理器(HibernateTransactionManager类),注入sessionFactory,开启注解事务使用<tx:annotation-driven/>标签,引入HibernateTransactionManager的ID,在业务层的类上添加@Transaction注解

    三、综合案例

    0赞 · 0采集
  • 堇妍 2022-01-19

    SSH框架

    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    配置事务管理器

    <bean id="transactionManager"
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    
    开启注解事务
    <tx:annotation-driven transaction-manager="transactionManager" />


    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    编写DAO中的代码

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    配置Hibernate的相关属性

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    Action的类由struts2自身创建

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    Service和DAO是如何配置的

    直接在applicationContext.xml中进行配置


    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    Action的类由Struts2自身去创建

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    Struts2和spring整合的2种方式

    1. Action的类由Struts2自身去创建

    2. Action的类交给Spring框架创建

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    商品管理的Action类

    模型驱动使用的类

    Struts和Spring整合过程中按名称自动注入的业务层类


    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    spring的框架的核心监听器

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    struts.xml中需要配置那些内容

    在src目录下引入struts.xml


    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    Struts2的框架的核心过滤器的配置

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    spring配置文件

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    hibernate框架配置文件

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    struts2框架的配置文件

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    jar包整合2

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    jar包整合

    截图
    0赞 · 0采集
  • 慕莱坞9426565 2020-05-01

    未整合前的代码编写

    截图
    0赞 · 0采集
  • 多好多么好a 2019-12-04

    action调用service中的方法,service调用dao中的方法

    0赞 · 0采集
  • 努力学习的小猿 2019-07-19
    不使用Struts配置文件在Spring中Action配置需要改为多利即<bean>标签后添加scope属性"prototype"


    截图
    0赞 · 0采集
  • stephenka 2019-06-06

    SSH框架整合

    截图
    0赞 · 0采集
  • 大鹏111 2019-05-30

    Spring整合Hibernate——添加事务管理

    步骤十一:事务管理

    【a】Spring中配置事务管理器

    https://img4.mukewang.com/5cef82230001d32e15210134.jpg【b】开启注解事务

    https://img1.mukewang.com/5cef89bb0001fa6f10230075.jpg【c】事务管理的类上添加注解(业务层上)

    https://img3.mukewang.com/5cef8a1200013d4705020122.jpg


    0赞 · 0采集
  • 大鹏111 2019-05-30

    Spring整合Hibernate——编写DAO的代码(此时已经去掉Hibernate的核心配置文件)

    步骤十:编写DAO中的代码(完成保存的操作)

    原理:没整合前需要在dao的方法里去获得一系列对象以及session对象,但整合之后只需要使用Hibernate的模板即可完成相应操作。正常情况下需要在DAO里进行注入,但是Spring已经提供了一个HibernateSupport类,只需DAO类继承它即可(这个类中已经将HibernateTemplate模板注入,通过getHibernateTemplate()即可获得,还有一个好处,这个类提供了一个setSessionFactory(SessionFactory sessionFactory)方法,当在DAO中直接注入SessionFactory属性时(注意property的name要为sessionFactory,DAO继承了这个类的SessionFactory和set方法),该方法会判断当模板为空时会自动创建模板,所以就不用考虑模板对象了)。

    【a】DAO继承HibernateDaoSupport

    【b】spring配置文件中给DAO注入SessionFactory属性,属性名为sessionFactory

    【c】通过this.getHibernateTemplate().save(对象)记性保存操作


    0赞 · 0采集
  • 大鹏111 2019-05-29

    Spring整合Hibernate——配置去掉Hibernate的配置文件(添加properties文件)

    有Hibernate的配置文件时需要配置的属性

    https://img3.mukewang.com/5cee724c00011fc809580663.jpg


    步骤1:编写properties文件

    https://img4.mukewang.com/5cee72c7000128ef05110181.jpg

    步骤2:spring配置文件中通过

    <context:property-placeholder location="classpath:jdbc.properties"/>引入properties文件

    步骤3:配置连接池(配置c3p0连接池)

    https://img.mukewang.com/5cee774e0001c20612020371.jpg

    步骤4:配置Hibernate相关属性(例如:生成表成略、获取session标签配置、mapping配置)(hibernate-release-5.0.7.Final\project\etc\hibernate.properties可以找到MySQL方言)


    1赞 · 0采集
  • 大鹏111 2019-05-29

    Spring整合Hibernate——创建数据库和映射文件

    步骤七

    1、创建数据库

    2、创建映射文件(约束在Hibernate核心包下org.hibernate.hibernate-mapping.dtd)


    0赞 · 0采集
  • 大鹏111 2019-05-29

    Action类交给Spring创建(建议使用这种方式创建Action,因为可以使用Spring的AOP进行管理)(action创建的实例是多例模式,所以Action类bean标签要使用scope=“prototype”属性,其次action标签的class属性不再写类的全路径,而是Action<bean>标签的id)

    https://img4.mukewang.com/5cee69ed00018d1609530406.jpg

    0赞 · 0采集
  • 大鹏111 2019-05-29

    步骤六:配置Action、Service、Dao的类——Struts2整合Spring

    重点注意:Struts-Spring-plugin.jar:在不使用ApplicationContext情况下对Action里的productService进行赋值,要保证set方法后的名称和<bean>标签里的id名相同才会按名称自动注入。

    【a】Service和Dao可以交给Spring进行管理(配置bean标签)。

    copy Qualified Name:复制类的全路径。

    <bean id="productService" class="com.imooc.service.ProductService">

    <property name="productDao" ref="productDao"></property>

    </bean>

    <bean id="productDao" class="com.imooc.dao.ProductDao"></bean>

     </beans>

    【b】Struts2和Spring整合的两种方式:(针对Action对象的创建方式)。

    1、Action的类由Struts2去创建。

    <package name="ssh" namespace="/" extends="struts-default">

    <action name="product_*" class="com.imooc.action.ProductAction" method="{1}">

    </action>

    </package>


    2、Action的类由 Spring去创建。



    0赞 · 0采集
  • 大鹏111 2019-05-29

    引入相应配置文件

    1、Struts2配置文件

    web.xml(配置struts核心过滤器)

    struts.xml(如果使用纯注解开发,也可以省略)

    2、Hibernate配置文件

    hibernate.cfg.xml(在SSH整合中该配置文件可以省略)

    映射文件

    3、Spring框架的配置文件

    web.xml(配置核心监听器,作用是启动服务器时候,加载Spring核心配置文件,该监听器中还有一个参数(全局初始化参数),如果不配置这个,默认加载WEB-INF下的ApplicationContext.XML,配置了就会加载classes下的ApplicationContext.xml)

    applicationContext.xml


    0赞 · 1采集
  • 大鹏111 2019-05-21

    SSH知识点回顾

    WEB层(V):Struts2

    业务层(C):Spring

    持久层(M):Hibernate

    https://img1.mukewang.com/5ce36e9500014c0f11810582.jpg

    整合之后就不用写这么多繁琐的代码。

    Hibernate使用ServiceRegistryBuilder出错

    原因:版本4之后的Hibernate中buildServiceReguistry()方法被替换了。
    解决方法:(1)版本导入更换为:
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    (2)在版本4中的用法:
    Configuration configuration = new Configuration().configure();
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    (3)在版本5中的用法:
    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();


    2018-03-27



    0赞 · 0采集
数据加载中...
开始学习 免费