收藏 分享(赏)

第9章 JSP高级程序设计.ppt

上传人:j35w19 文档编号:8833925 上传时间:2019-07-14 格式:PPT 页数:71 大小:794KB
下载 相关 举报
第9章 JSP高级程序设计.ppt_第1页
第1页 / 共71页
第9章 JSP高级程序设计.ppt_第2页
第2页 / 共71页
第9章 JSP高级程序设计.ppt_第3页
第3页 / 共71页
第9章 JSP高级程序设计.ppt_第4页
第4页 / 共71页
第9章 JSP高级程序设计.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、第9章 JSP高级程序设计,JSP高级程序设计,Ajax技术 EL表达式及标签 框架技术,9.1 Ajax技术,Ajax是Asynchronous JavaScript and XML的缩写,意思是异步的JavaScript与XML。Ajax并不是一门新的语言或技术,它是JavaScript、XML、CSS、DOM等多种已有技术的组合,它可以实现客户端的异步请求操作。这样可以实现在不需要刷新页面的情况下与服务器进行通信,从而减少了用户的等待时间。,9.1.1 Ajax的开发模式,在传统的Web应用模式中,页面中用户的每一次操作都将触发一次返回Web服务器的HTTP请求,服务器进行相应的处理(获

2、得数据、运行与不同的系统会话)后,返回一个HTML页面给客户端。,9.1.1 Ajax的开发模式,而在Ajax应用中,页面中用户的操作将通过Ajax引擎与服务器端进行通信,然后将返回结果提交给客户端页面的Ajax引擎,再由Ajax引擎来决定将这些数据插入到页面的指定位置。,9.1.2 Ajax使用的技术,JavaScript脚本语言 JavaScript是一种在Web页面中添加动态脚本代码的解释性程序语言,其核心已经嵌入到目前主流的Web浏览器中。虽然平时应用最多的是通过JavaScript实现一些网页特效及表单数据验证等功能,其实JavaScript可以实现的功能远不止这些。JavaScri

3、pt是一种具有丰富的面向对象特性的程序设计语言,利用它能执行许多复杂的任务,例如,Ajax就是利用JavaScript将DOM、XHTML(或HTML)、XML以及CSS等技术综合起来,并控制它们的行为。因此要开发一个复杂高效的Ajax应用程序,就必须对JavaScript有深入的了解。,9.1.2 Ajax使用的技术,XMLHttpRequest Ajax技术之中,最核心的技术就是XMLHttpRequest,它是一个具有应用程序接口的JavaScript对象,能够使用超文本传输协议(HTTP)连接一个服务器,是微软公司为了满足开发者的需要,于1999年在IE 5.0浏览器中率先推出的。现在

4、许多浏览器都对其提供了支持,不过实现方式与IE有所不同。通过XMLHttpRequest对象,Ajax可以像桌面应用程序一样只同服务器进行数据层面的交换,而不用每次都刷新页面,也不用每次都将数据处理的工作交给服务器来做,这样既减轻了服务器负担又加快了响应速度、缩短了用户等待的时间。,9.1.2 Ajax使用的技术,XMLHttpRequest对象的常用方法 open()方法:open()方法用于设置进行异步请求目标的URL、请求方法以及其他参数信息,具体语法如下:open(“method“,“URL“,asyncFlag,“userName“, “password“); send()方法:se

5、nd()方法用于向服务器发送请求。如果请求声明为异步,该方法将立即返回,否则将等到接收到响应为止。具体语法格式如下:send(content); setRequestHeader()方法:setRequestHeader()方法为请求的HTTP头设置值。具体语法格式如下:setRequestHeader(“label“, “value“);,9.1.2 Ajax使用的技术,abort()方法:abort()方法用于停止当前异步请求。 getAllResponseHeaders()方法:getAllResponseHeaders()方法用于以字符串形式返回完整的HTTP头信息,当存在参数时,表示

6、以字符串形式返回由该参数指定的HTTP头信息。,9.1.2 Ajax使用的技术,XML 语言:XML是Extensible Markup Language(可扩展的标记语言)的缩写,它提供了用于描述结构化数据的格式。XMLHttpRequest对象与服务器交换的数据,通常采用XML格式,但也可以是基于文本的其他格式。 DOM :DOM是Document Object Model(文档对象模型)的缩写,是表示文档(如HTML文档)和访问、操作构成文档的各种元素(如HTML标记和文本串)的应用程序接口(API)。W3C定义了标准的文档对象模型,它以树形结构表示HTML和XML文档,定义了遍历树和添

7、加、修改、查找树的节点的方法和属性。在Ajax应用中,通过JavaScript操作DOM,可以达到在不刷新页面的情况下实时修改用户界面的目的。,9.1.2 Ajax使用的技术,CSS :CSS是Cascading Style Sheet(层叠样式表)的缩写,用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。在Ajax出现以前,CSS已经广泛地应用到传统的网页中了。在Ajax中,通常使用CSS进行页面布局,并通过改变文档对象的CSS属性控制页面的外观和行为。,9.1.3 搭建Ajax开发框架,例子:AjaxDemo,1 EL简介,Expression Language(表达

8、式语言)在JSP2.0后纳入了标准规范,其目的是方便存取数据. EL可以很方便地访问大多数JSP内置的隐含对象,从而简化编程。 EL简化对JavaBean属性和集合元素的访问。 JSF(Java Server Faces)也已经将EL纳入规范。,1 EL简介,EL表达式的特点: 在EL表达式中可以获得命名空间(PageContext对象); 表达式可以访问一般变量,还可以访问JavaBean类中的属性以及嵌套属性和集合对象; 在EL表达式中可以执行关系、逻辑和算术等运算; 扩展函数可以与Java类的静态方法进行映射; 在表达式中可以访问JSP的作用域(request,session,appli

9、cation以及page)。,2 EL语法,EL的语法很简单,其最大特点是使用方便. 语法形式:$EL表达式 例如:$sessionScope.book.isbn注意EL中只有表达式,没有语句.示例:ELEL01,2.1 .与运算符,EL提供.和两种运算符来存取数据. 以下2种语法形式是含义一样的: $sessionScope.book.isbn $sessionScope.bookisbn 其区别是中允许使用EL变量。 参见示例:ELEL02,2.2 EL变量,EL存取变量的语法:$变量名 其含义是取出某一范围内名称为“变量名”的变量。其查找顺序为:当然也可以直接指定范围来存取,如: ses

10、sionScope.username applicationScope.book.isbn,查找顺序,2.3 EL的保留字,EL保留字如下,进行变量命名时不要使用保留字.,3 EL算术运算符,4 EL关系运算符,5 EL 逻辑运算符,6 EL其他的运算符,empty运算符,判断值为null或空值 $empty A 假如:A 是 null ,结果为true; 否则,若A为空字符串 “”,结果为true; 否则,若A为空数组,结果为true; 否则,若A为空的Collection,结果为true; 否则,结果为false $A ? B : C 条件运算符 括号,7 EL隐含对象,与范围有关的隐含对

11、象 applicationScope sessionScope requestScope pageScope 与输入参数有关的隐含对象 param paramValues,其他隐含对象 cookie header headerValues initParam pageContext,7.1 属性(Attributes)与范围(Scope),与范围有关的隐含对象包括: applicationScope sessionScope requestScope pageScope 需要注意的是使用这4个隐含对象只能获取相关范围中的属性值,相当于getAttribute(name),不能获取其他值。,7.

12、2 与输入参数有关的隐含对象,param和paramValues可以获取request中携带的参数的值。 $param.var 等价于 request.getParamter(“var”) $paramValues.array等价于 request.getParameterValues(“array”);示例:ELEL03index.jsp, result.jsp,7.3 其他隐含对象,cookie 对象 通过EL的cookie对象可以访问cookies中存储的值。 例如:Cookies中设定了一个名为userCountry的值,则可以用 $cookie.userCountry.value来获

13、取它。示例:ELEL03el_cookie.jsp,7.3 其他隐含对象,initParam对象 可以用其来读取在web.xml中设置的环境(context)参数. 例如:web.xml中有以下片段: userid mike 则可以用: $initParam.userid 读取该参数,等价于: String userid = (String)application.getInitParameter(“userid”); 示例:ELEL03initparam.jsp,1 JSTL概述,JSTL的全称是JavaServer Pages Standard Tag Library。 通过JSTL,可以

14、取代传统JSP程序中嵌入Java代码的做法,大大提高程序的可维护性。 在各种框架技术中,大量使用JSTL和各种标签库。,JSTL主要包括以下5种标签库。 (1)核心标签库 核心标签库主要用于完成JSP页面的基本功能,包含JSTL的表达式标签、条件标签、循环标签和URL操作共4种标签。 (2)格式标签库 格式标签库提供了一个简单的标记集合国际化(I18N)标记,用于处理和解决国际化相关的问题,另外,格式标签库中还包含用于格式化数字和日期的显示格式的标签。,1 JSTL概述,(3)SQL标签 SQL标签封装了数据库访问的通用逻辑,使用SQL标签,可以简化对数据库的访问。如果结合核心标签库,可以方便

15、地获取结果集、迭代输出结果集中的数据结果。 (4)XML标签库 XML标签库可以处理和生成XML的标记,使用这些标记可以很方便地开发基于XML的Web应用。 (5)函数标签库 函数标签库提供了一系列字符串操作函数,用于分解和连接字符串、返回子串、确定字符串是否包含特定的子串等。,1 JSTL概述,JSP指令:taglib 翻到教材P59页,2 四种常用标签介绍,1表达式标签 、 2条件标签 、 3循环标签 、 4URL操作标签 、,标签,将计算的结果输出到JSP页面中,该标签可以替代。语法格式如下: 语法1:语法2:defalultValue,示例c-out.jsp,标签,用于定义和存储变量,

16、它可以定义变量是在JSP会话范围内还是JavaBean的属性中,可以使用该标签在页面中定义变量,而不用在JSP页面中嵌入打乱HTML排版的Java代码。,语法格式:,标签主体标签主体 ,示例c-set.jsp,标签,标签可以从指定的JSP范围中移除指定的变量,语法格式如下:var用于指定存储变量值的变量名称;scope用于指定变量存在于JSP的范围,可选值有page、request、session、application。默认值是page。,示例c-remove.jsp,标签,JSTL中处理程序异常的标签,它还能够将异常信息保存在变量中。语法格式如下:存在异常的代码var属性可以指定存储异常信

17、息的变量。这是一个可选项,如果不需要保存异常信息,可以省略该属性。,示例c-catch.jsp,标签,可根据不同的条件去处理不同的业务,也就是执行不同的程序代码。语法格式如下:标签主体,示例c-if.jsp,标签,可根据不同的条件去完成指定的业务逻辑,如果没有符合的条件会执行默认条件的业务逻辑。标签只能作为和标签的父标签,可以在它之内嵌套这两个标签完成条件选择逻辑。标签主体 (业务逻辑) 标签标签主体 (业务逻辑),示例c-choose.jsp,标签,标签可以枚举集合中的所有元素,也可以循环指定的次数,这可以根据相应的属性确定。标签主体,示例c-forEach.jsp,标签,可以用指定的分隔符

18、将一个字符串分割开,根据分割的数量确定循环的次数。标签主体,示例c-forTokens.jsp,标签,可以导入站内或其他网站的静态和动态文件到JSP页面中。 语法1:语法2: c:import url=“url“ varReader=“name“ context=“context“ charEncoding=“encoding“,示例c-import.jsp,标签,标签可以将客户端发出的request请求重定向到其他URL服务端,由其他程序处理客户的请求。而在这期间可以对request请求中的属性进行修改或添加,然后把所有属性传递到目标路径。 语法1:语法2: ,示例c-redirect.js

19、p,标签,用于生成一个URL路径的字符串,这个生成的字符串可以赋予HTML的标记实现URL的连接,或用这个生成的URL字符串实现网页转发与重定向等。可搭配标签动态添加参数信息。,示例c-url.jsp,标签,只用于为其他标签提供参数信息,它与本节中的其他3个标签组合可以实现动态定制参数。,示例c-redirect.jsp及 c-url.jsp,3自定义标签,使用自定义标签可以加快Web应用开发的速度,提高代码重用性,使得JSP程序更加容易维护。引入自定义标签后的JSP程序更加清晰、简洁、便于管理维护以及日后的升级。,3自定义标签,自定义标签就是一个扩展的Java类,它是运行一个或者两个接口的J

20、avaBean。当多个同类型的标签组合在一起时就形成了一个标签库,这时候还需要为这个标签库中的属性编写一个描述性的配置文件,这样服务器才能通过页面上的标签查找到相应的处理类。,自定义标签的构成,(1)实现自定义标签的Java类文件 自定义标签的开发主要就是标签处理程序的开发。其开发有固定的规范,即开发时需要实现特定接口的Java类,开发标签的Java类时,必须实现Tag或者BodyTag接口类(它们存储在javax.servlet.jsp.tagext包下)。 BodyTag接口是继承了Tag接口的子接口,如果创建的自定义标签不带标签体,则可以实现Tag接口,如果创建的自定义标签包含标签体,则

21、需要实现BodyTag接口。,(2)自定义标签的TLD文件 自定义标签的TLD文件包含了自定义标签的描述信息,它把自定义标签与对应的处理程序关联起来。一个标签库对应一个标签库描述文件,一个标签库描述文件可以包含多个自定义标签声明。 自定义标签的TLD文件的扩展名必须是.tld。该文件存储在Web应用的WEB-INF目录下或者子目录下。,3 自定义标签,A tag library exercising SimpleTag handlers.1.21.2examples描述性文字showDate com.ShowDateTagempty value true ,.tld文件描述,3 自定义标签,在

22、JSP文件中引用自定义标签,JSP文件中,可以通过下面的代码引用自定义标签:,上面语句中的uri和prefix说明如下。,(1)uri属性 uri属性指定了tld文件在Web应用中的存放位置,此位置可以采用以下两种方式指定。, 在uri属性中直接指明tld文件的所在目录和对应的文件名,例如下面的代码:,在JSP文件中引用自定义标签, 通过在web.xml文件中定义一个关于tld文件的uri属性,让JSP页面通过该uri属性引用tld文件,这样可以向JSP页面隐藏tld文件的具体位置,有利于JSP文件的通用性。例如在Web.xml中进行以下配置:,showDateUri/WEB-INF/show

23、Date.tld ,在JSP页面中就可应用以下代码引用自定义标签:,(2)prefix属性 prefix属性规定了如何在JSP页面中使用自定义标签,即使用什么样的前缀来代表标签,使用时标签名就是在tld文件中定义的段中的属性的取值,它要和前缀之间用冒号“:”隔开。,自定义标签开发示例 userDefineTag.jsp userDefineTag2.jsp,在JSP文件中引用自定义标签,9.3 框架技术,采用合适的开发框架可以很好地提高开发效率。 SSH(Struts、Spring、Hibernate)框架技术,Struts框架,Struts是Apache软件基金会(ASF)赞助的一个开源项目

24、。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java ServletJSP技术,实现了基于Java EE Web应用的Model-View-ControllerMVC设计模式的应用框架Web Framework,是MVC经典设计模式中的一个经典产品。 2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。至

25、此,Struts项目并行提供与维护两个主要版本的框架产品Struts 1与Struts 2。,Struts框架,Spring框架,Spring是一个开源框架,它由Rod Johnson创建,从2003年初正式启动。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架。,Spring框架,Hibernate技术,Hi

26、bernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 Hibernate提出了对象-关系映射(ORM)模式,通过ORM模式,可以实现运用面向对象的编程思想操作关系型数据库。,Hibernate技术,Hibernate的核心接口一共有5个,分别为:Session

27、、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。,JSF框架,JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发

28、人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。 JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。,JSF框架,JSF框架,例子HelloJSF,关于框架,对于技术人员来说,Java世界并没有所谓的终极解决方案和框架,Java程序员仍然不得不直面无数的Java框架,埋头苦学!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报