博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web框架——XWAF的代码结构和运行机制(4)
阅读量:5366 次
发布时间:2019-06-15

本文共 3872 字,大约阅读时间需要 12 分钟。

    XWAF是一套基于Servletjava反射技术的Web应用程序框架,它利用Servlet运行机制在服务器上加载和运行,接管客户端请求,依靠ServletRequest对象获取用户请求信息,使用ServletResponse对象返回处理结果。

    XWAF框架能够扩展Web服务器的功能,简化Web应用程序的开发,减少用户编码,提高开发效率。XWAF框架能够智能整合用户代码,完成用户项目的业务逻辑。

1、Web项目的用户代码

  使用XWAF框架开发Web项目,程序员需要编写与项目业务逻辑直接相关的数据库脚本、HTMLJSP页面、处理访问请求的拦截器和处理器代码、实现业务逻辑的服务层代码、数据访问层代码等。由于这些代码与项目的具体业务相关,且千变万化,框架不可能事先得知,必须由项目开发人员根据需求完成设计和编码。我们将这些与项目的业务联系紧密、个性化很强的代码称为“用户代码”。

2、XWAF框架代码

  引入XWAF框架压缩包代码文件后,XWAF框架提供了大量代码,按照它们的任务不同可以分为“管理代码”和“功能代码”两部分。

  管理代码负责组织、整合用户代码。包括:解析配置文件、创建数据库连接对象,扫描并解析用户拦截器和处理器、创建用户代码管理器、Web访问监听器、匹配Web请求与拦截器和处理器的适配器、控制拦截器与处理器执行顺序的调度器等应用程序的骨架代码。

  功能代码则是提供某些应用功能的通用代码模块。包括:实现文件的上传下载、日志管理、XML解析、JSON解析、java对象转换为JSON表达式,以及WebSocket通信助理等等。可以帮助程序员大大减少编程的复杂度和工作量,提高开发效率。

3、XWAF框架的类结构

    XWAF框架的全部代码,按照功能模块分别存放在以“com.xwaf”为母包的18java类型包中,分别是:

1com.xwaft包:存放XWAF框架的公共基础类。

2com.xwaf.account包:存放XWAF框架的账户管理类。

3com.xwaf.annotation包:存放XWAF框架的注解定义类。

4com.xwaf.control包:存放XWAF框架的核心管理类。

5com.xwaf.data包:存放XWAF框架的数据公共类。

6com.xwaf.data.sql包:存放XWAF框架的数据服务类。

7com.xwaf.date包:存放XWAF框架的日期和日历工具类。

8com.xwaf.exception包:存放XWAF框架的异常定义类。

9com.xwaf.http包:存放XWAF框架与HTTP访问相关的类。

10com.xwaf.io包:存放XWAF框架的文件管理类。

11com.xwaf.io.http包:存放XWAF框架与HTTP相关的文件管理类,如:上传与下载管理。

12com.xwaf.json包:存放XWAF框架与JSON数据相关的类。

13com.xwaf.log包:存放XWAF框架的日志管理类。

14com.xwaf.reflect包:存放XWAF框架的反射技术工具类。

15com.xwaf.text包:存放XWAF框架的文本管理类。

16com.xwaf.validate包:存放XWAF框架与密码验证、MD5和手机验证相关的类。

17com.xwaf.websocket包:存放XWAF框架与WebSocket通信和推送技术相关的类。

18com.xwaf.xml包:存放XWAF框架的XML解析工具类。

 

4、XWAF框架的运行机制

    XWAF基于Servlet规范和Java反射技术Web应用程序框架,在Web服务器上加载和运行。它包括XWAF框架管理代码和专项应用技术功能代码,框架管理代码创建的对象和工作任务包括:

4.1  运行WebAppListener监听器

    WebAppListener监听器是XWAF框架的入口程序,它的contextInitialized(ServletContextEvent)方法会在ServletContext对象初始化时被执行。XWAF框架借此方法和ServletContext对象创建XWAF框架的核心管理器“WebAppManager”对象。

4.2  创建WebAppManager对象

  随着WebAppManager对象的创建,XWAF框架开始了“解析配置文件、扫描类型包、创建全部管理对象”等管理应用程序的准备工作。

4.3  解析XwafConfig.xml配置文件

  通过解析配置文件,获取数据库连接参数、用户拦截器和处理器的类包名称、文件上传约定等重要信息,并返回配置信息管理器(XwafConfig)对象。

4.4  创建InterceptorHandler适配器

    XWAF框架创建Interceptor适配器,用于管理用户项目的拦截器类信息;创建Handler适配器,用于管理用户项目的处理器类和方法信息。

4.5  扫描用户项目的代码

    XWAF框架使用PackageScanner类包扫描器,扫描配置文件中指定的拦截器和处理器代码包,将获取的HttpInterceptorWebSocketInterceptor类信息提交给框架的Interceptor适配器,获取的HttpHandlerWebSocketHandler类型及其处理方法的信息,提交给Handler适配器。

4.6  创建数据服务器

  该数据服务器包含数据源和连接池对象,为数据访问提供支持。该对象使用WebAppManagergetDataServer(String projName)静态方法获取。

4.7  创建登录账号管理器

    XWAF框架使用内存管理器监控所有登录失败和锁定的账号,为控制用户的登录行为提供简便方法,简化开发编程。该对象使用WebAppManagergetLoginAccountManager()静态方法获取。

4.8  创建级别管理器

    XWAF框架会自动创建“用户角色、业务分类、管理范围”和“数据操作”等级别管理器(GradeManager对象),为用户权限管理提供便利。程序员可以使用WebAppManager的如下方法获取相应的级别管理器:

1getRuleGradeManager()方法:获取角色级别管理器对象;

2getWorkTypeManager()方法:获取业务分类级别管理器对象;

3getEntityManager()方法:获取管理范围级别管理器对象;

4getDataOperateManager()方法:获取数据操作级别管理器对象;

4.9  接管Web请求

   XWAF使用com.xwaf.control.XwafDispatchServlet类实例接管客户请求,为了保持XWAF框架接管请求的灵活性,XwafDispatchServlet类没有使用注解指定匹配的URL,而是交给项目开发人员在web.xml文件中配置。如果开发人员希望所有的客户请求都交给XWAF处理,只要将<servlet-mapping><url-pattern>子节点设置为“/*”即可。使用XWAG插件创建用户项目的代码时,会自动配置为“*.handl”,即只接管扩展名为“handl”的客户请求,代码如下所示:

<servlet-mapping>

     <servlet-name>XwafDispatchServlet</servlet-name>

     <url-pattern>*.handl</url-pattern>

</servlet-mapping>

 

4.10  整合用户代码

    XWAF框架使用XwafHandlerAndInterceptorAdapter静态类管理用户项目的全部拦截器和处理器,包括HTTPWebSocket的拦截器和处理器。

1getHttpHandlerInfo(String)方法:提取与URL匹配的HttpHandler类和方法;

2getWsHandlerInfo(String)方法:提取与URL匹配的WebSocketHandler类和方法;

3getHttpInterceptorInfo(String)方法:提取与URL匹配的IHttpInterceptor类;

4getWsInterceptorInfo(String)方法:提取与URL匹配的IWebSocketInterceptor类。

4.11  响应用户请求

    XWAF框架的XwafDispatchServlet对象是服务器响应客户请求的调度器,它会到适配器中查找与请求的URL匹配的拦截器和处理器,并执行相应的方法。将处理结果返回给浏览器。

4.12  使用拦截机制实现切面开发

    XWAF框架调度器在执行处理器之前和之后调用执行拦截器代码的机制,很方便地实现了面向切面的开发模式。如果程序员在处理器写好之后,想要插入一个新功能,直接添加一个拦截器即可。

4.13  集成应用功能代码包

    XWAF框架集成了许多专项应用功能的通用代码模块,包括:文件的上传下载、日志管理、XML解析、JSON解析、java对象转换为JSON表达式,以及WebSocket通信助理等等。用户在自己的代码中直接引用即可,将帮助程序员大大减少编程的复杂度和工作量,提高开发效率。

 

 

转载于:https://www.cnblogs.com/xuzy630/p/XWAF_4.html

你可能感兴趣的文章
Apache Tomcat部署java web项目
查看>>
转泛型
查看>>
第二周 9.6-9.12
查看>>
347. Top K Frequent Elements
查看>>
angular4.0配置同时使用localhost和本机IP访问项目
查看>>
用mkdirs创建目录
查看>>
[转] Web前端优化之 Server篇
查看>>
如何让一个div的大小,从某一个特定值开始,随内容的增加而自动变化?
查看>>
P1977 出租车拼车(DP)
查看>>
iOS开发--完整项目
查看>>
我的博客园皮肤模板
查看>>
正则表达式
查看>>
java基础:不同进制的表现形式
查看>>
Base64转换为blob对象
查看>>
gulp自动化压缩合并、加版本号解决方案
查看>>
windows下面安装Python和pip教程
查看>>
Java 动态向 JTable 中添加数据
查看>>
平安科技移动开发二队技术周报(第九期)
查看>>
JS window.open()属性
查看>>
Oracle【二维表管理:约束】
查看>>