第二天【JavaBean BeanUtils XML DTD】
今天主要讲JavaBean、泛型、XML三大块:
一、JavaBean
狭义的JavaBean
1、有一个共有的空参数构造函数
2、有属性,并提供public的getter和setter属性的方法。
3、getter方法必须有返回值。
广义的JavaBean
在狭义JavaBean的基础上增加了业务逻辑
1.1操作JavaBean的方法
Sun提供了操作JavaBean的一套API就是内省,同过PropertyDescriptor属性描述类,进行操作 。
1.2 BeanUtils操作JavaBean 还有一种就是Apache组织开发BeanUtils工具包,实际项目中多用这个
内省API(SUN公司开发)
1)解决JavaBean的存取值
2)解决JavaBean中属性的个数,名称
3)属性和getXxx()有关,同时getXxx()必须有返回值
4)其它PropertyDescriptor代表一个JavaBean的属性,能过它可以取得对应的存取方法
*3 BeanUtils工具/框架(APACHE组织开发)
1)解决JavaBean的存取值,比内省代码更优
2)BeanUtils工具自动将String->8种基本类型
3)自定义转换器,注意转换器一定要在设置属性之前注册
4)对于String->java.util.Date类型,可以使用内置转换器
二、泛型,JDK1.5新特性
1、常用于集合类型限定
2、泛型还可以定义在方法和类上。
三、XML(Extensible Markup Language)可扩展标记语言,是W3C组织于2000年发布的1.0版本,目前也只有这个版本,XML文件一般用于保存有关系的数据和应用程序的配置文件。一个XML文件包含以下几个元素:
1、文档声明
2、元素
3、属性
4、注释,不能嵌套
5、CDATA 区,也就是解析器不解析的区域<![CDATA[内容]]>
6、处理指令(processing instruction)
XML基本格式:一个XML文件必须有且只有一个根元素
文档声明:<?xml version="1.0" encoding="utf-8" standalone="yes" ?>,standalone标记的是XML文件是否引入 了外部的DTD
根元素: <root> </root> 元素名可以随便起,只要不是数字
引入CSS样式表文件:<?xml-stylesheet type="text/css" href="xxx.css"?>
四、DTD(Document Type Definition文档类型定义) 约束
DTD约束可以定义在XML文件内部,也可以单独写一个DTD文件,然后在写XML文件的时候在引入
写在XML文件内部:<!DOCTYPE 根标签 [约束]>
引入本地DTD:<!DOCTYPE 根标签 SYSTEM "DTD文件URL">
引入公共DTD:<!DOCTYPE 根标签 PUBLIC "DTD文件名" "文件URL">
1、DTD语法细节:
1)元素 <!ELEMENT 元素名 (内容类型)>
内容类型:
元素:如果元素里面有别的元素则,直接写元素,如果是多个元素用逗号隔开
#PCDATA:文本内容
ANY:任意内容,可以是空、元素、文本都可以
MEPTY: 空,不能有内容
在元素内容中可以使用*,?,+等符合表示元素出现的次数,这个和正则类似,*表示出现0次或无数次,?表示出现0次或1次,+表示出现1次或多次。
2)属性定义 <!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明>
属性值类型:
CDATA:文本内容
ENUMERATED:枚举值,例如(jelly|xwrite|heny) "jelly" ,后面必须跟一个初始值
ID :不重复值,有点类似数据库的主键约束,必须是字母或下划线开头
ENTITY:参数实体,通过%调用
设置说明:
#REQUIRED :必须的属性值
#IMPLIED:可有可无的属性值
#FIXED "指定属性值":可有可无的属性值,如果有这个属性则必须是指定的属性值
"默认值" :就是说该属性值如果不设置就会使用默认值,如果设置则覆盖默认值
3)实体定义
引用实体:<!ENTITY 实体名 "实体内容"> ,引用实体是在XML文件中进行调用,格式为:&实体名;
参数实体:<!ENTITY % 实体名称 “实体内容”>,参数实体是在DTD中调用,格式为:%实体名;