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 的转换中,必须使用接口类型。

 

 

 

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

posted @ 2018-04-15 16:11  麋鹿森林h  阅读(241)  评论(1编辑  收藏  举报