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

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

  • 相关阅读:
    NTP on FreeBSD 12.1
    Set proxy server on FreeBSD 12.1
    win32 disk imager使用后u盘容量恢复
    How to install Google Chrome Browser on Kali Linux
    Set NTP Service and timezone on Kali Linux
    Set static IP address and DNS on FreeBSD
    github博客标题显示不了可能是标题包含 特殊符号比如 : (冒号)
    server certificate verification failed. CAfile: none CRLfile: none
    删除文件和目录(彻底的)
    如何在Curl中使用Socks5代理
  • 原文地址:https://www.cnblogs.com/mysouler/p/8848017.html
Copyright © 2011-2022 走看看