第9章 JSP高级程序设计.ppt
《第9章 JSP高级程序设计.ppt》由会员分享,可在线阅读,更多相关《第9章 JSP高级程序设计.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章 JSP高级程序设计JSP高级程序设计lAjax技术技术lEL表达式及标签表达式及标签l框架技术框架技术9.1 Ajax技术l Ajax是是Asynchronous JavaScript and XML的缩的缩写,意思是异步的写,意思是异步的JavaScript与与XML。Ajax并不是并不是一门新的语言或技术,它是一门新的语言或技术,它是JavaScript、XML、CSS、DOM等多种已有技术的组合,它可以实现客等多种已有技术的组合,它可以实现客户端的异步请求操作。这样可以实现在不需要刷新户端的异步请求操作。这样可以实现在不需要刷新页面的情况下与服务器进行通信,从而减少了用户页面的情
2、况下与服务器进行通信,从而减少了用户的等待时间。的等待时间。9.1.1 Ajax的开发模式l 在传统的在传统的Web应用模式中,页面中用户的每一次操应用模式中,页面中用户的每一次操作都将触发一次返回作都将触发一次返回Web服务器的服务器的HTTP请求,服务请求,服务器进行相应的处理(获得数据、运行与不同的系统器进行相应的处理(获得数据、运行与不同的系统会话)后,返回一个会话)后,返回一个HTML页面给客户端。页面给客户端。用户界面客户端服务器端Web服务器数据存储,后端处理,继承系统HTML+CSS数据HTTP请求HTTP(S)协议传输9.1.1 Ajax的开发模式l 而在而在Ajax应用中,
3、页面中用户的操作将通过应用中,页面中用户的操作将通过Ajax引引擎与服务器端进行通信,然后将返回结果提交给客擎与服务器端进行通信,然后将返回结果提交给客户端页面的户端页面的Ajax引擎,再由引擎,再由Ajax引擎来决定将这些引擎来决定将这些数据插入到页面的指定位置。数据插入到页面的指定位置。用户界面客户端服务器端Web和/或XML服务器数据存储,后端处理,继承系统XML数据HTTP请求HTTP(S)协议传输Ajax引擎JavaScript调用HTML+CSS数据9.1.2 Ajax使用的技术lJavaScript脚本语言脚本语言JavaScript是一种在是一种在Web页面中添加动态脚本代码的
4、解释页面中添加动态脚本代码的解释性程序语言,其核心已经嵌入到目前主流的性程序语言,其核心已经嵌入到目前主流的Web浏览器中。浏览器中。虽然平时应用最多的是通过虽然平时应用最多的是通过JavaScript实现一些网页特效实现一些网页特效及表单数据验证等功能,其实及表单数据验证等功能,其实JavaScript可以实现的功能可以实现的功能远不止这些。远不止这些。JavaScript是一种具有丰富的面向对象特性是一种具有丰富的面向对象特性的程序设计语言,利用它能执行许多复杂的任务,例如,的程序设计语言,利用它能执行许多复杂的任务,例如,Ajax就是利用就是利用JavaScript将将DOM、XHTML
5、(或(或HTML)、)、XML以及以及CSS等技术综合起来,并控制它们的行为。因此等技术综合起来,并控制它们的行为。因此要开发一个复杂高效的要开发一个复杂高效的Ajax应用程序,就必须对应用程序,就必须对JavaScript有深入的了解。有深入的了解。9.1.2 Ajax使用的技术lXMLHttpRequestAjax技术之中,最核心的技术就是技术之中,最核心的技术就是XMLHttpRequest,它,它是一个具有应用程序接口的是一个具有应用程序接口的JavaScript对象,能够使用超对象,能够使用超文本传输协议(文本传输协议(HTTP)连接一个服务器,是微软公司为了)连接一个服务器,是微软
6、公司为了满足开发者的需要,于满足开发者的需要,于1999年在年在IE 5.0浏览器中率先推出浏览器中率先推出的。现在许多浏览器都对其提供了支持,不过实现方式与的。现在许多浏览器都对其提供了支持,不过实现方式与IE有所不同。有所不同。通过通过XMLHttpRequest对象,对象,Ajax可以像桌面应用程序一可以像桌面应用程序一样只同服务器进行数据层面的交换,而不用每次都刷新页样只同服务器进行数据层面的交换,而不用每次都刷新页面,也不用每次都将数据处理的工作交给服务器来做,这面,也不用每次都将数据处理的工作交给服务器来做,这样既减轻了服务器负担又加快了响应速度、缩短了用户等样既减轻了服务器负担又
7、加快了响应速度、缩短了用户等待的时间。待的时间。9.1.2 Ajax使用的技术lXMLHttpRequest对象的常用方法对象的常用方法open()方法:方法:open()方法用于设置进行异步请求目标的方法用于设置进行异步请求目标的URL、请求方法以及其他参数信息,具体语法如下:、请求方法以及其他参数信息,具体语法如下:open(method,URL,asyncFlag,userName,password);send()方法:方法:send()方法用于向服务器发送请求。如果请方法用于向服务器发送请求。如果请求声明为异步,该方法将立即返回,否则将等到接收到响求声明为异步,该方法将立即返回,否则将
8、等到接收到响应为止。具体语法格式如下:应为止。具体语法格式如下:send(content);setRequestHeader()方法:方法:setRequestHeader()方法为方法为请求的请求的HTTP头设置值。具体语法格式如下:头设置值。具体语法格式如下:setRequestHeader(label,value);9.1.2 Ajax使用的技术abort()方法:方法:abort()方法用于停止当前异步请求。方法用于停止当前异步请求。getAllResponseHeaders()方法:方法:getAllResponseHeaders()方法用于以字符串形式返方法用于以字符串形式返回完整
9、的回完整的HTTP头信息,当存在参数时,表示以字符串形头信息,当存在参数时,表示以字符串形式返回由该参数指定的式返回由该参数指定的HTTP头信息。头信息。9.1.2 Ajax使用的技术lXML 语言:语言:XML是是Extensible Markup Language(可扩展(可扩展的标记语言)的缩写,它提供了用于描述结构化数据的格式。的标记语言)的缩写,它提供了用于描述结构化数据的格式。XMLHttpRequest对象与服务器交换的数据,通常采用对象与服务器交换的数据,通常采用XML格式,但也可以是基于文本的其他格式。格式,但也可以是基于文本的其他格式。lDOM:DOM是是Document
10、Object Model(文档对象模型)(文档对象模型)的缩写,是表示文档(如的缩写,是表示文档(如HTML文档)和访问、操作构成文文档)和访问、操作构成文档的各种元素(如档的各种元素(如HTML标记和文本串)的应用程序接口标记和文本串)的应用程序接口(API)。)。W3C定义了标准的文档对象模型,它以树形结构定义了标准的文档对象模型,它以树形结构表示表示HTML和和XML文档,定义了遍历树和添加、修改、查找文档,定义了遍历树和添加、修改、查找树的节点的方法和属性。在树的节点的方法和属性。在Ajax应用中,通过应用中,通过JavaScript操操作作DOM,可以达到在不刷新页面的情况下实时修改
11、用户界面,可以达到在不刷新页面的情况下实时修改用户界面的目的。的目的。9.1.2 Ajax使用的技术lCSS:CSS是是Cascading Style Sheet(层叠样式(层叠样式表)的缩写,用于(增强)控制网页样式并允许将表)的缩写,用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。在样式信息与网页内容分离的一种标记性语言。在Ajax出现以前,出现以前,CSS已经广泛地应用到传统的网页已经广泛地应用到传统的网页中了。在中了。在Ajax中,通常使用中,通常使用CSS进行页面布局,并进行页面布局,并通过改变文档对象的通过改变文档对象的CSS属性控制页面的外观和行属性控制页
12、面的外观和行为。为。9.1.3 搭建Ajax开发框架l例子:例子:AjaxDemo1 EL简介lExpression Language(表达式语言)在(表达式语言)在JSP2.0后后纳入了标准规范,其目的是方便存取数据纳入了标准规范,其目的是方便存取数据.lEL可以很方便地访问大多数可以很方便地访问大多数JSP内置的隐含对象,内置的隐含对象,从而简化编程。从而简化编程。lEL简化对简化对JavaBean属性和集合元素的访问。属性和集合元素的访问。lJSF(Java Server Faces)也已经将也已经将EL纳入规范。纳入规范。1 EL简介lEL表达式的特点:表达式的特点:在在EL表达式中可
13、以获得命名空间(表达式中可以获得命名空间(PageContext对象);对象);表达式可以访问一般变量,还可以访问表达式可以访问一般变量,还可以访问JavaBean类中的类中的属性以及嵌套属性和集合对象;属性以及嵌套属性和集合对象;在在EL表达式中可以执行关系、逻辑和算术等运算;表达式中可以执行关系、逻辑和算术等运算;扩展函数可以与扩展函数可以与Java类的静态方法进行映射;类的静态方法进行映射;在表达式中可以访问在表达式中可以访问JSP的作用域(的作用域(request,session,application以及以及page)。)。2 EL语法lEL的语法很简单,其最大特点是使用方便的语法很
14、简单,其最大特点是使用方便.语法形式:语法形式:$EL表达式表达式例如:例如:$sessionScope.book.isbnl注意注意EL中只有表达式,没有语句中只有表达式,没有语句.l示例:示例:ELEL012.1 .与运算符lEL提供提供.和和两种运算符来存取数据两种运算符来存取数据.l以下以下2种语法形式是含义一样的:种语法形式是含义一样的:$sessionScope.book.isbn$sessionScope.bookisbnl其区别是其区别是中允许使用中允许使用EL变量。变量。l参见示例:参见示例:ELEL02 2.2 EL变量lEL存取变量的语法:存取变量的语法:$变量名变量名l
15、其含义是取出某一范围内名称为其含义是取出某一范围内名称为“变量名变量名”的变量。其查找的变量。其查找顺序为:顺序为:l当然也可以直接指定范围来存取,如:当然也可以直接指定范围来存取,如:sessionScope.usernameapplicationScope.book.isbn变量范围变量范围EL中的名称中的名称pagepageScoperequestrequestScopesessionsessionScopeapplicationapplicationScope查找顺序查找顺序2.3 EL的保留字lEL保留字如下,进行变量命名时不要使用保留字保留字如下,进行变量命名时不要使用保留字.an
16、deqgttrueornelefalsenoltgenullinstanceofemptydivmod3 EL算术运算符运算符运算符说明说明 范例范例结果结果+加加$17+5$17+52222-减减$17-5$17-51212*乘乘$17*5$17*58585/或或divdiv除除$17/5$17/5或或$17 div 5$17 div 53 3%或或modmod模模$17%5$17%5 或或$17 mod 5$17 mod 52 24 EL关系运算符运算符运算符说明说明范例范例结果结果=或或eqeq等于等于$5=5$5=5或或$5$5 eqeq 5 5truetrue!=!=或或nene不等
17、于不等于$5!=5$5!=5或或$5$5 nene 5 5falsefalse 或或ltlt小于小于$35$3 或或gtgt大于大于$35$35 或或$3$3 gtgt 5 5falsefalse=或或lele小于等于小于等于$3=5$3=或或gege大于等于大于等于$3=5$3=5 或或$3$3 gege 5 5 falsefalse5 EL 逻辑运算符运算符运算符说明说明范例范例结果结果&或或andand与与$A&B$A&B或或$A and B$A and B true/falsetrue/false|或或oror或或$A|B$A|B或或$A or B$A or Btrue/falsetr
18、ue/false!或或notnot非非$!A$!A或或$not A$not Atrue/falsetrue/false6 EL其他的运算符lempty运算符,判断值为运算符,判断值为null或空值或空值$empty A 假如:假如:A 是是 null,结果为,结果为true;否则,若否则,若A为空字符串为空字符串“”,结果为,结果为true;否则,若否则,若A为空数组,结果为为空数组,结果为true;否则,若否则,若A为空的为空的Collection,结果为,结果为true;否则,结果为否则,结果为falsel$A?B:C 条件运算符条件运算符l括号括号7 EL隐含对象l与范围有关的隐含对象与
19、范围有关的隐含对象applicationScopesessionScoperequestScopepageScopel与输入参数有关的隐含对象与输入参数有关的隐含对象paramparamValuesl其他隐含对象其他隐含对象cookieheaderheaderValuesinitParampageContext7.1 属性(Attributes)与范围(Scope)l与范围有关的隐含对象包括:与范围有关的隐含对象包括:applicationScopesessionScoperequestScopepageScopel需要注意的是使用这需要注意的是使用这4个隐含对象只能获取相关范围个隐含对象只能
20、获取相关范围中的属性值,相当于中的属性值,相当于getAttribute(name),不能获,不能获取其他值。取其他值。7.2 与输入参数有关的隐含对象lparam和和paramValues可以获取可以获取request中携带的参中携带的参数的值。数的值。$param.var 等价于等价于 request.getParamter(“var”)$paramValues.array等价于等价于request.getParameterValues(“array”);l示例:示例:ELEL03index.jsp,result.jsp7.3 其他隐含对象lcookie 对象对象通过通过EL的的cooki
21、e对象可以访问对象可以访问cookies中存储的值。中存储的值。例如:例如:Cookies中设定了一个名为中设定了一个名为userCountry的值,则的值,则可以用可以用$cookie.userCountry.value来获取它。来获取它。示例:示例:ELEL03el_cookie.jsp7.3 其他隐含对象linitParam对象对象可以用其来读取在可以用其来读取在web.xml中设置的环境中设置的环境(context)参数参数.例如:例如:web.xml中有以下片段:中有以下片段:userid mike 则可以用:则可以用:$initParam.userid 读取该参数,等价于:读取该参
22、数,等价于:String userid=(String)application.getInitParameter(“userid”);示例:示例:ELEL03initparam.jsp1 JSTL概述概述lJSTLJSTL的全称是的全称是JavaServer Pages Standard Tag Library。l通过通过JSTLJSTL,可以取代传统,可以取代传统JSPJSP程序中嵌入程序中嵌入JavaJava代码的做法,大代码的做法,大大提高程序的可维护性。大提高程序的可维护性。l在各种框架技术中,大量使用在各种框架技术中,大量使用JSTLJSTL和各种标签库。和各种标签库。lJSTLJS
23、TL主要包括以下主要包括以下5 5种标签库。种标签库。(1 1)核心标签库)核心标签库l核心标签库主要用于完成核心标签库主要用于完成JSPJSP页面的基本功能,包含页面的基本功能,包含JSTLJSTL的表达式标签、条件标签、循环标签和的表达式标签、条件标签、循环标签和URLURL操作共操作共4 4种标签。种标签。(2 2)格式标签库)格式标签库l格式标签库提供了一个简单的标记集合国际化(格式标签库提供了一个简单的标记集合国际化(I18NI18N)标)标记,用于处理和解决国际化相关的问题,另外,格式标签记,用于处理和解决国际化相关的问题,另外,格式标签库中还包含用于格式化数字和日期的显示格式的标
24、签。库中还包含用于格式化数字和日期的显示格式的标签。1 JSTL概述概述(3 3)SQLSQL标签标签lSQLSQL标签封装了数据库访问的通用逻辑,使用标签封装了数据库访问的通用逻辑,使用SQLSQL标签,可标签,可以简化对数据库的访问。如果结合核心标签库,可以方便以简化对数据库的访问。如果结合核心标签库,可以方便地获取结果集、迭代输出结果集中的数据结果。地获取结果集、迭代输出结果集中的数据结果。(4 4)XMLXML标签库标签库lXMLXML标签库可以处理和生成标签库可以处理和生成XMLXML的标记,使用这些标记可以的标记,使用这些标记可以很方便地开发基于很方便地开发基于XMLXML的的We
25、bWeb应用。应用。(5 5)函数标签库)函数标签库l函数标签库提供了一系列字符串操作函数,用于分解和连函数标签库提供了一系列字符串操作函数,用于分解和连接字符串、返回子串、确定字符串是否包含特定的子串等。接字符串、返回子串、确定字符串是否包含特定的子串等。1 JSTL概述概述JSPJSP指令:指令:taglibtaglib 翻到教材翻到教材P59P59页页 2 2 四种常用标签介绍四种常用标签介绍1表达式标签表达式标签、2条件标签条件标签、3循环标签循环标签、4URL操作标签操作标签、标签标签l将计算的结果输出到将计算的结果输出到JSP页面中,该标签可以替代页面中,该标签可以替代。语法格式如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 JSP高级程序设计 JSP 高级 程序设计
限制150内