基于元数据的信息管理系统
北京传智播客教育
—高级软件人才实作培训专家! XSD的简单类型定义simpleType
值的限定(pattern和enumeration)
<car>Aud1</car>
<element name="car" type="carType"/>
北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! Schema语言(XSD)主要数据类型
基本类型
简单类型simpleType
复杂类型complexType
北京传智播客教育
—高级软件人才实作培训专家! XSD 基本类型
最常用的类型是:string decimal integer boolean date time 例子: <lastname>Smith</lastname> <age>28</age> <dateborn>1980-03-27</dateborn> 这是相应的简易元素定义: <element name="lastname" type="string"/> <element name="age" type="integer"/> <element name="dateborn" type="date"/>
北京传智播客教育
—高级软件人才实作培训专家! 系统中使用到的相关技术点汇总
Schema JAXB Velocity Javassist springSecurity springWs Extjs
北京传智播客教育
—高级软件人才实作培训专家! XML Schema 语言
数据 元数据
北京传智播客教育
—高级软件人才实作培训专家! 基于元数据的开发平台的作用
通过配置方式快速搭建中小型信息管理 系统
可用于分布式架构(权限管理 )
北京传智播客教育
—高级软件人才实作培训专家! 元数据系统中的信息类
信息类
通过元数据方式定义出来的一个信息节点就称为信息 类,一个信息类对应数据库中的一张表,对应 Hibernate中的一个实体类。一个信息类由多个信息属 性组成,每个信息属性对应表中的一个字段,对应实 体类中的一个成员变量。
实体映射文件
实体类
动态加载
Hibernate
元数据系统
北京传智播客教育
—高级软件人才实作培训专家! 树的两种存储方式比较
XML方式
加载时无需进行处理,天然就是树形结构 适合于后台的配置管理功能,并发性差
数据库表方式(id,text,parentid)
加载时需进行排序处理 适合大量用户操作的树,并发性好
veloeclipse /svn/trunk/ update/ 北京传智播客教育
—高级软件人才实作培训专家! 模板引擎运行原理
模板文件
模板引擎
输出
数据
北京传智播客教育
—高级软件人才实作培训专家! Velocity基本语法
—高级软件人才实作培训专家! XSD的简单类型定义simpleType
合并了两个简单类型的简单类型
北京传智播客教育
—高级软件人才实作培训专家! XSD的简单类型定义simpleType
定义单个 simpleType 定义的集合
北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! JAXB反序列化(xml转对象)
JAXBContext jaxbContext ; Object object = null ; jaxbContext = JAXBContext.newInstance(clazz); StreamSource stremSource = new StreamSource(inputStream) ; //反序列化 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller() ; object = unmarshaller.unmarshal(stremSource) ;
北京传智播客教育
—高级软件人才实作培训专家! “信息目录管理” 业务用例分析
技术点: ExtJs tree控件 JAXB(Java Architecture for XML Binding) OXM Schema(是用于描述和规范XML文档的逻辑结构的一种语言)
JAXBContext、Marshaller、Unmarshaller
北京传智播客教育
—高级软件人才实作培训专家! JAXB序列化(对象转xml)
JAXBContext context = JAXBContext.newInstance(clazz); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.setProperty(Marshaller.JAXB_ENCODING, charsetName); m.setProperty(Marshaller.JAXB_FRAGMENT, false); if( schemaLocation != null && schemaLocation.trim()!=""){ m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, schemaLocation); } outputStream = new FileOutputStream("f:/temp/xxx.xml"); m.marshal(object, outputStream);
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition, XSD) XML Schema作用(定义 XML 文档的合法构建模块,类似 DTD) 定义可出现在文档中的元素 定义可出现在文档中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者是否可包含文本 定义元素和属性的数据类型 定义元素和属性的默认值以及固定值
北京传智播客教育
—高级软件人才实作培训专家! 定义组成XML元素和属性
element 元素定义一个xml元素 element自身的主要属性 : id、name、type attribute 元素定义一个xml元素的属性 attribute 自身的主要属性: id、name、ref 、type、use
北京传智播客教育
—高级软件人才实作培训专家!
JAXB架构图
北京传智播客教育
—高级软件人才实作培训专家! JAXB实现包括以下组件
Schema编译器(xjc.exe) xjc -d java类目录路径 -p 包名 schema文 件名 Schema生成器 (schemagen.exe) 绑定运行时框架 (rt.jar下的javax.xml.bind包)
—高级软件人才实作培训专家! XSD的复杂类型定义complexType
复杂类型的元素是包含其他元素和/或属性的 XML 元 素。
北京传智播客教育
—高级软件人才实作培训专家! XML对Schema进行引用
指定默认的命名空间 指定带前缀的命名空间 声明xsi标准命名空间
变量定义、引用 #set 变量名 定义变量 ,例如:#set( $foo = "bar" ) $变量名 用来输出引用的变量, 例如:$foo {} 用来明确标识Velocity变量 ! 用来强制把不存在的变量显示为空白 java对象的引用 $对象.属性 用来输出对象的属性 $对象.方法 调用对象的方法 $对象 调用对象的toString()方法输出 {} 用来明确标识对象 ! 用来强制把不存在的对象显示为空白 条件判断语句 #if 、#elseif 、#else、#end 循环语句 #foreach、in #end 注释 ## 和 #* *# 北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! “信息元数据定义” 业务用例分析
技术点: Velocity模板框架 Javassist字节码框架 Hibernate动态加载
北京传智播客教育
—高级软件人才实作培训专家! “信息数据维护” 业务用例分析
使用xsi:schemaLocation为每个命名空间指
定具体的schema文件
北京传智播客教育
—高级软件人才实作培训专家! JAXB概述
JAXB(Java Architecture for XML Binding,Java XML绑定架构)是一个业界的标准,是一项可以根据 XML Schema产生Java类的技术。 该技术可以提供将XML实例文档反向生成Java对 象树的方法。能将Java对象树的内容重新写到XML实 例文档。 另一方面来讲,JAXB提供了快速而简便的方法将 XML模式绑定到Java对象,从而使得Java开发者在 Java应用程序中能方便加载XML数据,并以XML文件 作为数据存储方式。
北京传智播客教育
—高级软件人才实作培训专家! 基于元数据开发平台功能介绍
信息类的树形管理 信息类的元数据定义 信息类的CRUD功能 信息类的访问控制 基于Spring Web Services的信息类服务接口