zoukankan      html  css  js  c++  java
  • 使用XWAF框架(1)——Web项目的代码分层

      建议在Eclipse环境下使用XWAF框架来开发用户的Web项目,并遵循以下步骤和约定。

    1、获取XWAF框架压缩包文件

      程序员点击下列地址免费下载XWAF框架的压缩包文件:XWAF框架压缩文件

    2、安装XWAF框架

      下载XWAF框架的压缩包文件后,其名称格式类似于:com.xwaf_10.jar

      将该文件放到用户Web项目的子目录“WEB-INF/lib/”中即完成了安装。

    3、XWAF框架的代码分层规范

         XWAF框架按照MVC的分层思想,要求用户对代码合理分层,并通过简单配置和注解融入XWAF框架的代码管理体系。

      所谓MVC就是将项目的全部代码分为模型(Model)、视图(View)和控制(Control)三大部分,每一部分的代码实现一定的功能。模型层代码负责数据访问、数据传递和业务逻辑处理,视图层代码实现数据展示和用户交互,控制层代码接受客户请求,组织和调度视图层与模型层的代码协调工作,向客户端做出响应。MVC的核心思想就是代码分层和逻辑控制。

    XWAF框架和XWAG插件遵循了MVC的代码分层与逻辑控制思想,但进行了细化,将MVC三大部分划分成如下六层:

    3.1  视图层(View

      也称为视图表现层或用户交互界面层(UI),是展示数据和接受用户输入的地方,一般使用HTML页面或JSP页面实现。

          XWAF框架提供了JSP动态网页模板库和JavaScript函数库(XJQL),支持用户快速开发视图文件。

      如果使用XWAG插件生成用户的项目代码,将依据动态网页模板、用户的菜单设置和数据库绑定,以及XJQL函数创建首页,同时自动生成“客户注册、完善注册、登录、修改密码”和“基础数据维护”等JSP页面。

      用户项目中更为复杂的业务交互页面,需要程序员自己设计和编码完成,可以使用XWAG提供的CSS样式和XJQL中的函数。同时XWAG支持使用第三方动态网页模板,生成具有特定功能的页面。

    3.2  控制层(Control

           XWAF框架提供了服务器端访问控制的两个核心类:

      1com.xwaf.control.XwafDispatchServlet——请求响应调度器。这是一个遵循Servlet访问规范的Servlet类,开发人员需要在web.xml文件中,使用<servlet><servlet-mapping>配置项来注册类路径和映射地址,将特定的URL请求纳入XWAF框架控制之下。

         2com.xwaf.control.XwafHandlerAndInterceptorAdapter——请求处理与拦截适配器。XWAF框架自动扫描用户项目的HttpHandlerWebSocketHandler处理器类型包,以及HttpInterceptorWebSocketInterceptor拦截器类型包,建立请求地址(URL)与处理器和拦截器的映射关系库,提供动态匹配功能,供请求响应调度器调用。

           XWAG插件还会自动生成DownloadServletDrawCodeServletExitLoginServletPageClosedServlet等几个特殊功能的Servlet类文件。分别控制下载文件、绘制验证码、注销登录和客户端关闭页面等特殊请求的服务器响应。

      项目开发人员也可以编写ServletFilter过滤器,更加灵活地控制客户访问。过滤器代码将在Servlet类文件之前被执行。

    3.拦截层(HttpInterceptorWebSocketInterceptor

            XWAF支持面向切面的开发模式,这有利于程序员在不修改已有代码的前提下,扩展或插入新的功能。

            XWAF框架使用处理拦截器机制,实现切面开发。控制器在执行HttpHandler代码之前,会先执行拦截器的代码。比如:程序员可以将工作日志代码全部写在拦截器中,不必在HttpHandler类中考虑工作日志,这样会节省大量的日志代码。

        XWAF框架支持HttpInterceptorWebSocketInterceptor两种拦截器,XWAF约定:HttpInterceptor必须使用@HttpInterceptor注解标识,而WebSocketInterceptor必须使用@WebSocketInterceptor注解标识。拦截器类的处理方法,则必须使用@RequestMapping注解映射要拦截的URL地址。

      为了让XWAF框架找到用户的拦截器位置,必须在“XConfig/XwafConfig.xml”配置文件的“<interceptorPackage></interceptorPackage>”节点中,注册拦截器类所在的包名称。如果有多个拦截器的包名称,请使用英文“,”分隔包名。

    3.请求处理层(HttpHandlerWebSocketHandler

       请求处理层是XWAF框架真正处理用户请求的重要代码,是控制层的核心处理器。主要工作是提取来自客户端的请求参数和数据,经过分析后,调用业务逻辑服务类的合适方法,实现相应的业务逻辑。并将结果返回给控制器,也可以直接响应客户端(使用Response对象实现)。处理层的代码一般由开发人员编写。

           XWAF支持HttpHandler和WebSocketHandler两种处理类。XWAF约定:程序员自定义的HttpHandler类必须使用@HttpHandler注解标识,WebSocketHandler类必须使用@WebSocketHandler注解标识。一个处理方法对应一个客户端请求地址(URL)。方法必须使用@RequestMapping注解映射匹配的请求地址。当Handler处理类的所有方法匹配的请求地址包含共同的地址前缀字符串时,可以给类添加@RequestMapping注解来标识这个前缀,同时,在方法的@RequestMapping注解中去掉这个前缀字符串,达到优化代码的目的。

           XWAG插件在生成用户项目代码时,会自动生成基于单表的HttpHandler类,实现对单表的“增、删、改、查”等操作,程序员可以参考。涉及复杂业务逻辑的HttpHandler处理类需要程序员自己编写,并正确注解。

           XWAF框架提供了转发WebSocket消息和数据的默认处理类和方法,如果仅仅是转发数据和消息,不需要编写任何处理类;如果要实现复杂的逻辑处理,就需要程序员按照规范自己编写处理类和方法。为了规范程序员编程,XWAF定义了一个IWebSocketHandler接口,程序员可以实现它来完成自己的业务需求。

         XWAF框架约定:程序员编写的HttpHandler和WebSocketHandler类可以放在同一个包中,并在框架配置文件“XConfig/XwafConfig.xml”中,使用配置节点“<handlerPackage></handlerPackage>”设置处理类所在的包名称。如果用户项目有多个处理类型包,则使用英文“,”隔开它们。

           Web服务器启动项目时,XWAF框架会扫描注册的包,将添加有@HttpHandler注解和@WebSocketHandler注解的类,及其添加有@RequestMapping注解的方法的信息保存到管理器中,以备匹配之用。

      过滤器、控制器、Http处理器和拦截器的执行顺序如下:

      Servlet 过滤器(Filter>XWAF 控制器(XwafDispatchServlet>XWAF 拦截器(HttpInterceptor>XWAF 处理器(HttpHandler

    3.5  业务逻辑服务层(Service

       业务逻辑服务层是真正处理用户业务逻辑的主体类,应该由开发人员编写,以实现各种各样复杂的业务逻辑处理,并接受Handler类的调用。

      为了减轻程序员的工作量,如果使用XWAG插件生成用户项目代码,会自动生成了与各个数据表对应的业务逻辑服务类文件,类文件实现了IHttpXwafService接口提供对单个数据表进行“增、删、改、查”等基本操作的方法,类文件的命名规则是:数据表名称(去掉前缀字符)+ ”Service.java”

      如果用户项目有更复杂的业务逻辑,可以优先考虑组合这些单表的服务类提供的方法,实现更为复杂的功能。

    3.6  数据访问层(DAO

          DAO类是实现数据库访问的基础类,SQL语句和命令应该在DAO方法中组织,不应该放在Service服务层中。

      一般地,在Handler层中提取用户提交的参数,转化为DataField或其子类对象的集合后,传递给被调用的Service方法;Service方法再传递给被调用的DAO方法。DAO类的静态方法依据这些来自用户的参数,借助XWAF框架的数据库服务器(DataServer)、数据访问器(DataAccessor)和数据库助手(DataBaseHelper)实现对数据库的访问和更新。如果有返回结果集,就以PageDataSet对象原路返回给Handler层。

          XWAG插件为每一个数据表建立一个DAO文件,命名规则是:数据表名称(去掉前缀字符)+ ”DAO.java”,提供对每个数据表的“增、删、改、查”静态方法。也就是说,在XWAF框架中,XWAG插件生成的DAO文件实现了对真实数据表的个性化操作。同时,插件还会为每一个数据表自动创建了“存储过程、触发器、函数、序列等数据库对象,以提高数据访问的性能。

          XWAF框架主张使用DataField数据字段、Record记录和PageDataSet分页数据集对象在不同层次之间传递数据。PageDataSet包含Record对象的Map集合,Record包含DataField对象的List集合。只有DataField对象与数据表的原始字段结构有关联,记录和分页数据集对象都是大小可伸缩的集合,可以随实际参数的个数或结果集的变化而变化。返回结果集PageDataSet与实体类没有关系,因此不需要再考虑查询结果集与实体类的字段不匹配的问题。

      为了给开发者提供更多的选择和便利,使用Eclipse插件XWAG生成项目代码时,还是会自动生成与各个数据表对应的实体类,开发人员也可以选作传递数据之用,但框架不建议这样做。因为实体类在Web项目中传递客户的请求数据不够灵活,在输出查询结果集时,又难以满足只输出部分字段值的特殊情况,还需要额外的数据实体映射编程。

  • 相关阅读:
    django 项目需要注意的一些点
    VUE之路
    Oracle 表格碎片的查看方法
    RHEL 6.x or 7.x 使用分区绑定ASM 磁盘的方法
    RMAN 修复主库 nologging 操作导致物理备库的坏块
    Oracle 数据库19c 回退降级到 11.2.0.4 方案
    如何评估oracle 数据库rman全备和增量备份大小
    在将Oracle GI和DB升级到19c或降级到以前的版本之前需要应用的补丁 (Doc ID 2668071.1)
    Oracle 数据库坏块处理
    opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错
  • 原文地址:https://www.cnblogs.com/xuzy630/p/XWAF_5.html
Copyright © 2011-2022 走看看