zoukankan      html  css  js  c++  java
  • SSH框架

    • SSH框架的职责

    • SSH的业务流程
    • Struts2的业务流程
    • Action的三种实现方式
    • Spring框架优点
    • Spring关于JDBC配置
    • Spring关于Hibernate配置
    • Spring获取操作事务操作

    SSH框架

      职责:

      从职责上看,该框架可以分为四层:表示层业务逻辑层、数据持久层和域模块层(实体层)。

      其中,Struts2作为其框架的基础架构,负责MVC的分离,控制业务跳转。利用hibernate事务对永久层数据进行操作。

           业务流程:

            jsp(表示层)实现页面交互,request(请求),response(响应)  ->  Struts通过配置文件将ActionServlet委派给对应的Action进行处理 -> 通过Spring IOC(控制反转)容器提供业务操作类对象(业务层) -> 根据操作类中的相关属性、函数,进行数据持久化操作(数据持久层)

       

    1.Struts2框架:

            工作流程:

        用户进行页面交互,发送request  ——> 根据web.xml文件配置,请求被filterDispatch(调度员)接收      ——>   filterDispatch通过询问filterMapping获取所需要访问的Action,并通过IOC(控制反转)的方式注                  入给Action ——> 业务逻辑判断完成后返回result  ——> 跳转到对应的HTTP界面

      Action的三中实现方式:

        第一种:定义普通的POJO(Plain Ordinary Java Object,简单的java对象)类。

            public class ActionModel{

                public boolean excute(){

                  return SUCCESS;    

                }

            }

        第二种:继承 ActionSupport 父类,其中的 user 属性,需要构造出 GETTER(),SETTER()函数:

            package action;

            import com.opensymphony.xwork2.ActionSupport;

            public class MyStrutsAction extends ActionSupport{

              private User user;

              public void setUser(User user){

                this.user = user;

              }

              public User getUser(){

                return this.user;

              }

              @Override
              public String execute() throws Exception {
              // TODO Auto-generated method stub
                System.out.println("使用 excute 方法!");
                return super.execute();
              }

              public String add(){
                System.out.println("使用 add 方法!");
                return SUCCESS;
              }

            }

        第三种:实现接口 ModelDriver<T>:

           在实现该接口的相关对象中,需要实现 getModel()方法,该方法将会返回一个与 T 类型相对应的对象。

           在实现该接口的时候,泛型 T 需要一个对象模型,而这个对象模型,需要在实现该接口的类中进行实例化,如:

            public class Login implement ModelDriver<User>{

              private User user = new User();

              

              @Override

              public User getModel(){

                return user;

              }

            }

         注意:

          在使用ModelDriver<T>的方式进行获取页面请求数据的时候,前端Form表单页面代码中的相关name属性,需要通过相应Action中的所实例化的对象,以 对象.属性        的方式进行定义,否则getModel将会获取不到相关的表单信息。

          在使用ActionSupport继承方式,获取Form表单信息的时候,需要将Form表单中的name属性,设置为与对应Action中 SETTER ()对象名称相同。

        Spring框架:

        • 降低耦合度(IOC):在spring中,创建的对象是通过依赖、注入的方式进行创建的,这样对象的使用就得到了统一的管理;
        • 面向切面(AOP):方便程序进行拦截和监控;
        • 事务声明:通过配置就能实现对事务的管理;

            

            Spring 对 JDBC 相关信息的配置:       

              <bean id="dataSource"
                class="org.apache.commons.dbcp.BasicDataSource">
                <property name="url" value="jdbc:mysql://localhost:3306/project_db"></property>
                <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
                <property name="username" value="root"></property>
                <property name="password" value="hyfroot0803"></property>
              </bean>

                

            Spring 对 Hibernate 相关信息配置:

            <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
              <property name="dataSource">
                <ref bean="dataSource" />
              </property>
              <property name="hibernateProperties">
                <props>
                  <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLDialect
                  </prop>
                </props>
              </property>
              <property name="mappingResources">
                <list>
                  <value>admin/dao/TAdminInfoDao.hbm.xml</value>
                  <value>admin/dao/TFilesInfo.hbm.xml</value>
                  <value>admin/dao/TWebInfo.hbm.xml</value>
                  <value>admin/dao/TStudentInfo.hbm.xml</value>
                  <value>admin/dao/VStudentJob.hbm.xml</value>
                  <value>admin/dao/TGetJob.hbm.xml</value>
                  <value>admin/dao/VSchool.hbm.xml</value></list>
              </property>
            </bean>

           Spring通过注入的方式,获取到事务相关操作对象:

            

            <!-- 系统管理员 的相关方法属性注入 -->
            <bean name="adminImpl" class="admin.imple.AdminImple">
              <property name="sessionFactory" ref="sessionFactory"></property>
            </bean>

            <!-- 手机客户端学生服务 -->
            <bean name="appStuServes" class="android.services.db.impl.AppServiceImpl">
              <property name="sessionFactory" ref="sessionFactory"></property>
            </bean>

           

            注意:

              在 bean 相对应实现的 class 类中,需要有对应的 SessionFactory sessionFactory 对象的属性,并且还要同时有 set()方法;

            

            关于方法实现类的调用方式:在Spring 中,对象的调用交有 Spring 框架进行创建,所以在需要进行业务处理的Action中,其调用方式为:

              

              ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
              AdminIo service = (AdminIo)ac.getBean("adminImpl");

              通过获取到配置文件,根据所需服务的相关对象,获取到对应的 bean ,记住,在 bean 的转换中,必须使用接口类型。

    本人理解,为加深记忆,将持续更新……

  • 相关阅读:
    subset子集全排序问题
    第15章动态规划------算法导论
    内存管理思维导图------现代操作系统(第四版)
    进程与线程思维导图------现代操作系统(第四版)
    现代操作系统
    GHUnitiOS 单元测试(带UI界面)下载地址
    iOS + webSocket 通讯
    iOS 甘特图的实现
    NSDate根据日期获得当前是周几,以及一年内的第几周,以及一个月内得第几周
    Swift 中文文档
  • 原文地址:https://www.cnblogs.com/mysouler/p/8848017.html
Copyright © 2011-2022 走看看