• 从零打造在线网盘系统之SSH框架整合


    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅

    本章目标

    • Struts2和Hibernate整合
    • Struts2,Spring,Hibernate整合

    既然本章将的是整合Struts2,Spring,Hibernate三大框架,为何还要提及Struts2和Hibernate的整合呢?我希望小伙伴们能在Struts2和Hibernate的整合中明白如果缺少Spring框架装配各层需要的Bean是多么遗憾的一件事啊!如果没有Spring我们在整合Struts2和Hibernate将会面临以下问题

    1. 频繁创建和管理各层实现类,使程序耦合严重
    2. 频繁编写管理数据库链接及事务等模板代码
    3. ...

    Struts2和Hibernate整合 示例源码下载

    下图所示是使用Struts2和Hibernate整合编写的一个WEB网页,各位运行本节示例源码访问http://localhost:8080/index.jsp 本章三种整合完整工程均可通过github下载

    在Struts2和Hibernate的整合中,为了避免"频繁创建和管理各层实现类,使程序耦合严重" ,在示例源码中使用工厂模式来管理实现类;为了避免"频繁编写管理数据库链接及事务等模板代码"问题,在示例源码中使用了 HibernateSessionFactory工具类来统一管理Hibernate的Session的管理,但是这些解决方法,仅仅能避免我们少写一些代码,当随着程序的增大,我们仍然要面临解耦和重复编码问题

    Struts2,Spring,Hibernate整合 示例源码下载

    我们在Struts2和Hibernate整合中可以看到,我们需要使用Spring来替我们解决程序的解耦和重复编码问题,那么Spring是如何来解决问题的呢?(依赖注入)

    - 整合思路

    • Struts2和Spring整合
    • Spring和Hibernate整合

    - 整合步骤

    第一步:导入依赖(这里有坑,注意Spring的版本不要太高)

        <dependencies>
            <!--Spirng-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <!--Spring-orm-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.16.RELEASE</version>
            </dependency>
            <!--Hibernate-->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.3.7.Final</version>
            </dependency>
            <!--Struts2-->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>2.5.16</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-convention-plugin</artifactId>
                <version>2.5.18</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>2.5.17</version>
            </dependency>
            <!--数据库相关-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.12</version>
            </dependency>
            <!--Servlet相关-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    

    第二步:确定配置文件

    Struts2-Spring整合方式1 :即Struts2的Action由Struts2本身进行管理,Spring不参与操作,当依赖包存在Struts2-spring插件时,该插件会自动将Service服务注入到Action 本章三种整合完整工程均可通过github下载

    public class UserAction extends ActionSupport implements ModelDriven<User> {
        private UserService userService;
    
        public void setUserService(UserService userService) {
            this.userService = userService;
        }
        
        @Action(value = "getUser", results = {
                @Result(name = "success", location = "/index.jsp")
        })
        public String get() throws Exception {
            User user = userService.get(this.user.getId());
            ValueStack valueStack = ActionContext.getContext().getValueStack();
            valueStack.set("user", user);
            return SUCCESS;
        }
        ......
    
    }
    
    

    Struts2-Spring整合方式2 :即Struts2的Action不再由Struts2本身管理,而交由Spring进行管理 本章三种整合完整工程均可通过github下载

        <!--Spring配置WEB层-->
        <bean name="userAction" class="com.jimisun.action.UserAction" scope="prototype">
            <property name="userService" ref="userService"/>
        </bean>
    
        <!--在Struts2仅仅配置映射关系-->
         <package name="ssh" extends="struts-default" namespace="/">
            <global-results>
                <result name="success">/index.jsp</result>
            </global-results>
            <action name="addUser" class="userAction" method="add">
            </action>
            <action name="getUser" class="userAction" method="get">
            </action>
        </package>
    

    Spring-Hibernate整合 :当Hiberante和Spring一同使用的时候,我们不再需要hibernate.cfg.xml文件,那么怎么配置hibernate呢?我们可以使用Spring配置嘛

        <!--配置Hibernate-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <!-- 先加载连接池 -->
            <property name="dataSource" ref="dataSource"/>
            <!-- 加载方言,加载可选 -->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                </props>
            </property>
            <!-- 引入映射的配置文件 -->
            <property name="mappingResources">
                <list>
                    <value>com/jimisun/domain/User.hbm.xml</value>
                </list>
            </property>
        </bean>
    

    整合结果

    本章小结

    本章通过Struts2和Hibernate的整合明白了我们要重复进行编码和解耦,而通过使用Spring的依赖注入让我们不再频繁管理Bean,通过Spring的面向切面编程我们不再编写类似获取事务提交事务等操作..... 当然本章不是Spring的教程,具体请移步另一系列教程Java开发上帝之眼教程,本章仍然着重关注SSH的整合,本章提供的整合工程均可通过Github下载

  • 相关阅读:
    php关联Apache和nginx
    /etc/profile
    snmp配置
    snmpwalk
    redis主从
    redis安装
    计算真实可用内存
    分类样本不均
    pandas apply 添加进度条
    linux 单次定时任务
  • 原文地址:https://www.cnblogs.com/jimisun/p/9994274.html
Copyright © 2020-2023  润新知