jQuery+xml+jsf+hibernate文档Word格式.docx
《jQuery+xml+jsf+hibernate文档Word格式.docx》由会员分享,可在线阅读,更多相关《jQuery+xml+jsf+hibernate文档Word格式.docx(24页珍藏版)》请在冰点文库上搜索。
![jQuery+xml+jsf+hibernate文档Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/a025166b-9e44-4b65-a691-484c1df5f7bb/a025166b-9e44-4b65-a691-484c1df5f7bb1.gif)
2.vector存储对象
分行读取后通过“,”分割字符串,分别以Student的各个属性保存在vector中,如需要查询,通过for循环遍历vector,使用get(i)获取到查询的对象,使用对象中的get方法获取vector中保存的属性
3.面向对象
IMethod保存的是接口,其中定义了一系列抽象方法。
MethodIml是接口的实现类,实现了接口中的各个方法。
在主函数中,创建出IMethod接口的引用,指向MethodImpl接口的实现类。
二html
2.1html概念
网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:
脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。
因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。
超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
超级文本标记语言(英文缩写:
HTML)是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。
网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:
文字如何处理,画面如何安排,图片如何显示等)。
浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。
但需要注意的是,对于不同的浏览器,对同一标记符可能会有完全不同的解释,因而可能会有不同的显示效果。
2.2html特点
超级文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是万维网(WWW)盛行的原因之一,其主要特点如下:
●简易性:
超级文本标记语言版本升级采用超集方式,从而更加灵活方便。
●可扩展性:
超级文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超级文本标记语言采取子类元素的方式,为系统扩展带来保证。
●平台无关性:
虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超级文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。
三jQuery
3.1jQuery概念
Jquery是继prototype之后又一个优秀的Javascript框架。
它是轻量级的js库,它兼容CSS3,还兼容各种浏览器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。
jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。
jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。
3.2jQuery特点
jQuery包含以下特点:
●动态特效
●AJAX
●通过插件来扩展
●方便的工具
●例如浏览器版本判断
●渐进增强
●链式调用
●多浏览器支持,支持InternetExplorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0。
3.3选择器
jQuery使用sizzle引擎,支持css选取,Xpath选取等方式。
●$("
p"
):
选取全部<
p>
元素。
p.intro"
选取所有包含class为"
intro"
的<
#demo"
选取id为"
demo"
的元素。
[href]"
选取所有带有href属性的元素。
[href='
#'
]"
选取所有带有href值等于"
#"
[href!
='
选取所有带有href值不等于"
[href$='
.jpg'
选取所有href值以"
.jpg"
结尾的元素。
[href^='
/imgaes/'
选取所有href值以/imgaes/"
开头的元素。
所有class="
的<
元素元素选择器
.intro"
的元素类选择器
#intro"
id="
的第一个元素id选择器
3.4事件
●直接绑定指定事件,事件类型即方法名,支持click、focus、blur、submit等。
$("
#button"
).click(function(){
//scriptgoeshere
});
●用on来绑定事件,off来解绑事件,第一个参数为事件名,第二个参数为回调函数。
).on('
click'
function(){
jQuery还支持更多的鼠标,键盘事件的方法。
3.5动态特效
●淡入淡出
$(selector).fadeIn(speed,callback);
可选的speed参数规定效果的时长。
它可以取以下值:
"
slow"
、"
fast"
或毫秒。
可选的callback参数是fading完成后所执行的函数名称。
●滑动
$(selector).slideDown(speed,callback);
可选的callback参数是滑动完成后所执行的函数名称。
●动画
$(selector).animate({params},speed,callback);
必需的params参数定义形成动画的CSS属性。
可选的callback参数是动画完成后所执行的函数名称。
四JSF
4.1JSF面向组件概念
JSF简称JavaServerFaces,它集成了MVC构建模型,提供了一种以组件为中心开发JavaWeb用户界面的新Java框架。
从网页设计人员的角度来看,JavaServerFaces提供的HTML标签,可以与后端的动态程序结合,网页设计人员不需要理会后端的动态部份,就可以动态的展现数据。
从应用程序设计人员的角度来看,JavaServerFaces提供一个与传统应用程序开发相类似的模型,他们可以基于事件驱动来开发程序,不必关切HTTP的处理细节,如果必须处理一些视觉组件的属性的话,他们也可以直接在整合开发环境上拖拉这些组件,点选设定组件的属性。
从UI组件开发人员的角度来看,他们可以设计通用的UI组件,让应用程序的开发产能提高,就如同在设计Swing组件等,UI开发人员可以独立开发,只要定义好相关的属性选项来调整细节,而不用受到网页设计人员或应用程序设计人员的干扰
4.2JSF标签
JSF标签可以分为输出、输入、命令、选择、其他。
●输出类标签分为:
outputLabel、outputLink、outputFormat、outputText。
outputLabel
产生<
label>
html,使用for属性指定组件的ClientID如:
<
h:
inputTextid="
user"
value="
#{user.name}"
/>
<
outputLabelfor="
outputLink
产生<
a>
html标签。
如:
outputLinkvalue=”…/index.jsp”>
outputTextvalue=”LinktoIndex”/>
f:
paramname=”name”value=”MyName”/>
/h:
outputLink>
outputFormat
outputFormatvalue=”{0},younameis{1}”>
<
paramvalue=”Hello”/>
paramvalue=”Guest”/>
outputFormat
{0}和{1}会被取代为<
param>
设定的文字
OutputText
最常用的标签,简单的显示绑定的值或者信息,如
outputTextvalue=”#{user.name}”>
●输入类标签分为:
inputText、inputTextarea、inputSecret、inphidden。
inputText
显示单行字段,即输出<
input>
标签,type的属性设置为text;
<
inputTextvalue=”#{user.name}”/>
inputTextarea
显示多行字段,即输出<
texratrea>
标签,如:
inputTextareavalue=”#{mand}”>
inputSecret
显示密码输入,即输出<
标签,type的属性设置为password:
inputSecretvalue=”user.password”>
inputHidden
设置隐藏字段,即输出<
标签,type的属性设置为hidden:
inputhiddenvalue=”#{user.password}”/>
●命令类标签分为:
commandButton、commandLink。
commandButton
显示一个按钮,即输出<
标签,type的属性设置为:
button,submit,reset默认都是submit.点击按钮可以触发事件。
h;
commandButtonvalue=”确定”action=”user.verify”/>
commandLink
产生一个超级链接,简单地说,作用就像是按钮,但外观却是超级链接。
commadnLinkvalue=”#{mandText}”action=”#{user.verify}”/>
●选择类标签分为单选和多选,外形上分为:
Radio、CheckBox、ListBox、Menu。
selectBooleanCheckbox
在试图上呈现一个复选框,例如:
我同意<
selectBooleanCheckBoxvalue=”user.aggree”/>
selectOneRadio>
selectOneListBox>
selectOneMenu>
这三个标签的作用实际上就是让用户在多项中选一项,功能都一样,只是外形上有所差异,比如:
selectOneRadiovalue=”#{user.education}”>
selectItemitemLabel=”高中”itemValue=”高中”>
selectItemitemLabel=”大学”itemValue=”大学”>
selectItemitemLabel=”研究生”itemValue=”研究生”>
selectManyRadio>
selectManyListBox>
selectManyMenu>
和上面的用法一样,只是因为是多选,在value中,必须是数组或集合。
●其他标签分为:
message和messages。
graphicImage
graphicImagevalue=”imags/image.jpg”>
这个标签相当于<
img>
标签,value可以是图片的相对或绝对路径
4.3faces-config.xml配置
faces-config.xm是jsf的配置文件,内部各种bean,导航,验证器,转换器,工厂等。
在faces-config.xml最常用的两个配置元素是:
manager-bean>
和<
navigation-rule>
,下面详细介绍这两个元素:
●<
manager-bena>
:
JSF应用中所有的托管的Bean都放在该元素下
managed-bean>
managed-bean-name>
user<
/managed-bean-name>
managed-bean-class>
onlyfun.caterpillar.UserBean<
/managed-bean-class>
managed-bean-scope>
session<
/managed-bean-scope>
/managed-bean
:
用于管理JSF应用的导航规则
from-view-id>
/pages/index.jsp<
/from-view-id>
navigation-case>
from-outcome>
success<
/from-outcome>
to-view-id>
/pages/welcome.jsp<
/to-view-id>
/navigation-case>
failure<
/navigation-rule>
●应用管理相关配置
application>
用于管理JSF应用相关配置
reference-bean>
配置被引用的Bean
●注册自定义组件的相关配置
converter>
注册自定义转换器
validator>
注册自定义验证器
component>
注册自定义组件
●高级扩展配置
phase-listerer>
注册生命周期监听器
factory>
配置实例化JSF核心类的工厂
4.4转换器
转换器的概念是,浏览器传送数据基本上都是字符串,但是Java程序是面向对象,所以,对象和字符串必须要有双向转换才能在浏览器和Java应用程序传递。
转换器分标准转换器和自定义转换器。
JSF定义了一系列的标准转换器,基本数据类型则会自动转换,对于Date,Number,可以使用<
converDateTime>
converNumber>
标签中的属性,来定义转换的格式。
自定义转换器则是用户自己定义的一种转换方式或规则,实现一个自定义转换器的步骤为:
●创建自定义转换器类,实现Converter接口,重写getAsObject()和getAsString()方法,这两个方法中定义自己的转换规则
●在faces-config.xml中注册转换器,使用<
converter-id>
converter-class>
来注册自定义转换器。
●在页面中使用converter来识别所要用的注册器,识别是通过注册时设定的<
。
4.5验证器
验证器的概念是指,用户在输入信息的时候有必要验证信息是否合法,这样的验证可以分为两种,语法验证和语意验证。
语法验证是说用户输入的数据是否符合要求,比如密码必须大于位数;
语意验证是说在语法验证都正确的情况下,检查数据的正确性。
验证器和转换器相似,也分为标准和自定义两种:
标准验证器分三种:
validateDoubleRange>
,<
validateLongRange>
validateLength>
在使用时,<
validateLengthminimum="
6"
自定义验证器创建的步骤为:
●创建自定义验证器类,实现Validator接口,重写validate()方法。
●在faces-config.xml中注册验证器,使用<
validator-id>
validator-class>
来注册自定义验证器。
●在页面中使用<
中的validatorId来识别要用的验证器,识别是通过注册时设定的<
4.6dataTable动态绑定对象
4.6.1dataTable页面设置
JSF中使用<
dataTable>
标签来定义表格,通过<
column>
来定义每一列。
在每一列中可以设置表头<
facetname=”header”>
和表尾<
facetname=”footer>
在dataTable中可以使用headerclass和rowClasses来定义表头和行间的样式。
其中rowClasses中定义两个样式,用逗号隔开,表示两个样式交替定义行,如下图所示:
4.6.2dataTable后台数据绑定
dataTable绑定数据时候可以绑定List、ResultSet、Result、DataModel四种形态。
举个例子来看,假设有Tcustomer的Bean类和它的实现类TcustomerImpl。
Tcustomer.java
TcustomerImpl.java
其中省略部分为属性的get/set方法。
定义了两个类后,在faces-config.xml中映射这两个类。
然后在dataTable中设置如下绑定:
TcustomerImpl是在faces-config.xml中配置,通过get方法,获取到CustomerImpl中定义的List集合,绑定给dataTable,并且给它起个别名“user”。
在列标签<
中使用<
outputTextvalue=”#{user.XXX}”/>
获取到每个对象的属性值,绑定在某个列上。
效果如下图:
4.7事件
当我们在页面获取数据的时候,往往通过输入框输入选择条件,点击按钮来获取我们想要的数据。
这个时候就需要在按钮上添加动作方法,产生一个actionListener来处理事件。
同样是在dataTable的例子中,我们在index.jsp和TcustomerImpl中添加如下:
在listen中通过FacesContext.getCurrentInstance().getViewRoot.findComponet(“”)来获取页面输入框控件。
参数为页面标签的ID。
Listen方法中对页面穿来的数据进行查询,重新定义TcustomerImpl中的List,然后通过get方法,页面获取到与条件匹配的数据。
关于数据库的查询,讲在后面讲到。
五hibernate
5.1SessionFactory获取会话
SessionFactory是hibernate的核心接口,它是数据存储的代理,负责创建seesion对象。
首先SessionFactory通过hibernate.cfg.xml中的配置解析,获取数据库的连接。
再通过连接获取会话工厂,最后通过会话工厂获取与数据库连接的会话。
当获取到session后,就可以进行数据库的操作了,步骤如下:
Stringsql=”sql语句”;
Sessionsession=HibernateSessionFactory.getSession();
Connectionconn=session.getConnection();
PreparedStatementstmt=conn.prepareStatement(sql);
ResultSetresult=conn.prepareStatement(sql),executeQuery();
While(result.next()){
xxxxx
}
mit();
Conn.close();
5.2DetachedCriteria
5.2.1DetachedCriteria概念
上面的例子可以看出,hibernate需要自己定义出sql语句,Connection,PreparedStatement对象,查询结果集后封装映射对象。
这样多代码的查询方法,如果是在一个查询量非常大的系统中,则程序员代码量会成倍增加,并且代码的效率低。
在Web层获取条件后,构造查询语句。
但是用什么来保存这些条件列表呢?
传统上使用Map,但是这种方式缺陷很大,Map可以传递的信息非常有限,只能传递name和value,无法传递究竟要做怎样的条件运算,究竟是大于,小于,like,还是其它的什么。
因此一旦隐含条件改变,业务层对象的查询构造算法必须相应修改,但是这种查询条件的改变是隐式约定的,而不是程序代码约束的,因此非常容易出错。
DetachedCriteria可以解决这个问题,即在web层,程序员使用DetachedCriteria来构造查询条件,然后将这个DetachedCriteria作为方法调用参数传递给业务层对象。
而业务层对象获得DetachedCriteria之后,可以在session范围内直接构造Criteria,进行查询。
就此,查询语句的构造完全被搬离到w