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

上传人:gsy****95 文档编号:85124967 上传时间:2023-04-10 格式:PPT 页数:71 大小:794KB
返回 下载 相关 举报
第9章 JSP高级程序设计.ppt_第1页
第1页 / 共71页
第9章 JSP高级程序设计.ppt_第2页
第2页 / 共71页
点击查看更多>>
资源描述

《第9章 JSP高级程序设计.ppt》由会员分享,可在线阅读,更多相关《第9章 JSP高级程序设计.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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页面中,该标签可以替代页面中,该标签可以替代。语法格式如

26、下:语法格式如下:l语法语法1:l语法语法2:defalultValue 属属 性性类类 型型描描 述述引用引用ELvalueObject将要输出的变量或表达式将要输出的变量或表达式可以可以escapeXmlboolean转换特殊字符,默认值为转换特殊字符,默认值为true。例如。例如“”转换为转换为“<”不可以不可以defaultObject如果如果value属性值等于属性值等于NULL,则显示,则显示default属性定义的默认值属性定义的默认值不可以不可以示例c-out.jsp标签标签l用于定义和存储变量,它可以定义变量是在用于定义和存储变量,它可以定义变量是在JSPJSP会话范围

27、内还会话范围内还是是JavaBeanJavaBean的属性中,可以使用该标签在页面中定义变量,的属性中,可以使用该标签在页面中定义变量,而不用在而不用在JSPJSP页面中嵌入打乱页面中嵌入打乱HTMLHTML排版的排版的JavaJava代码。代码。语法格式:标签主体标签主体标签主体标签主体属 性类 型描 述引用ELvalueObject将要存储的变量值将要存储的变量值可以可以varString存储变量值的变量名称存储变量值的变量名称不可以不可以targetObject存储变量值或者标签主体的目标对象,存储变量值或者标签主体的目标对象,可以是可以是JavaBean或或Map集合对象集合对象可以可

28、以propertyString指定目标对象存储数据的属性名指定目标对象存储数据的属性名可以可以scopeString指定变量存在于指定变量存在于JSP的范围,默认值是的范围,默认值是page不可以不可以示例c-set.jsp 标签标签 标签可以从指定的标签可以从指定的JSPJSP范围中移除指定的范围中移除指定的变量,语法格式如下:变量,语法格式如下:/varvar用于指定存储变量值的变量名称;用于指定存储变量值的变量名称;scopescope用于指用于指定变量存在于定变量存在于JSPJSP的范围,可选值有的范围,可选值有pagepage、requestrequest、sessionsessio

29、n、applicationapplication。默认值是。默认值是pagepage。示例c-remove.jsp 标签标签 JSTLJSTL中处理程序异常的标签,它还能够将异常信息中处理程序异常的标签,它还能够将异常信息保存在变量中。保存在变量中。语法格式如下:语法格式如下:=name 存在异常的代码存在异常的代码 /varvar属性可以指定存储异常信息的变量。这是一个可属性可以指定存储异常信息的变量。这是一个可选项,如果不需要保存异常信息,可以省略该属性。选项,如果不需要保存异常信息,可以省略该属性。示例c-catch.jsp 标签标签 可根据不同的条件去处理不同的业务,也就是执行不同的程

30、可根据不同的条件去处理不同的业务,也就是执行不同的程序代码。序代码。语法格式如下:语法格式如下:标签主体标签主体 属 性类 型描 述引用ELtestBoolean条件表达式,这是条件表达式,这是标签必须定义的属性标签必须定义的属性可以可以varString指定变量名,这个属性会指定指定变量名,这个属性会指定test属性的判断结果将存属性的判断结果将存放在那个变量中,如果该变量不存在就创建它放在那个变量中,如果该变量不存在就创建它不可以不可以scopeString存储范围,该属性用于指定存储范围,该属性用于指定var属性所指定的变量的存属性所指定的变量的存在范围在范围不可以不可以示例c-if.j

31、sp 标签标签l可根据不同的条件去完成指定的业务逻辑,如果没有符合可根据不同的条件去完成指定的业务逻辑,如果没有符合的条件会执行默认条件的业务逻辑。的条件会执行默认条件的业务逻辑。标签只能标签只能作为作为 和和 标签的父标签,可以在它标签的父标签,可以在它之内嵌套这两个标签完成条件选择逻辑。之内嵌套这两个标签完成条件选择逻辑。标签主体标签主体(业务逻辑业务逻辑)!-多个多个标签标签-标签主体标签主体(业务逻辑业务逻辑)示例c-choose.jsp 标签标签l 标签可以枚举集合中的所有元素,标签可以枚举集合中的所有元素,也可以循环指定的次数,这可以根据相应的属也可以循环指定的次数,这可以根据相应

32、的属性确定。性确定。标签主体标签主体 属 性类 型描 述引用ELitems数组、集合类、字符串和枚数组、集合类、字符串和枚举类型举类型被循环遍历的对象,多用于数组与被循环遍历的对象,多用于数组与集合类集合类可以可以varString循环体的变量,用于存储循环体的变量,用于存储items指定指定的对象的成员的对象的成员不可以不可以beginint循环的起始位置循环的起始位置可以可以endint循环的终止位置循环的终止位置可以可以stepint循环的步长循环的步长可以可以varStatusString循环的状态变量循环的状态变量不可以不可以示例c-forEach.jsp 标签标签 可以用指定的分隔

33、符将一个字符串分割开,根据分可以用指定的分隔符将一个字符串分割开,根据分割的数量确定循环的次数。割的数量确定循环的次数。标签主体标签主体 属 性类 型描 述引用ELitemsString被循环遍历的对象,多用于数组与集合类被循环遍历的对象,多用于数组与集合类可以可以delimsString字符串的分割字符,可以同时有多个分隔字符字符串的分割字符,可以同时有多个分隔字符不可以不可以varString变量名称变量名称不可以不可以beginint循环的起始位置循环的起始位置可以可以endint循环的终止位置循环的终止位置可以可以stepint循环的步长循环的步长可以可以varStatusString

34、循环的状态变量循环的状态变量不可以不可以示例c-forTokens.jsp标签 可以导入站内或其他网站的静态和动态文件到可以导入站内或其他网站的静态和动态文件到JSP页面中。页面中。语法语法1:c:import url=url context=context var=name scope=page|request|session|application charEncoding=encoding标签主体标签主体语法语法2:c:import url=url varReader=name context=context charEncoding=encoding属 性类型描 述引用ELurlStr

35、ing被导入的文件资源的被导入的文件资源的URL路径路径可以可以contextString上下文路径,用于访问同一个服务器的其他上下文路径,用于访问同一个服务器的其他Web工工程,其值必须以程,其值必须以“/”开头,如果指定了该属性,那开头,如果指定了该属性,那么么url属性值也必须以属性值也必须以“/”开头开头可以可以varString变量名称,将获取的资源存储在变量中变量名称,将获取的资源存储在变量中不可以不可以scopeString变量的存在范围变量的存在范围不可以不可以varReaderString以以Reader类型存储被包含文件内容类型存储被包含文件内容不可以不可以charEnco

36、dingString被导入文件的编码格式被导入文件的编码格式可以可以示例c-import.jsp 标签标签l 标签可以将客户端发出的标签可以将客户端发出的requestrequest请求重定向请求重定向到其他到其他URLURL服务端,由其他程序处理客户的请求。而在这期服务端,由其他程序处理客户的请求。而在这期间可以对间可以对requestrequest请求中的属性进行修改或添加,然后把所请求中的属性进行修改或添加,然后把所有属性传递到目标路径。有属性传递到目标路径。语法语法1:语法语法2:示例c-redirect.jsp 标签标签l用于生成一个用于生成一个URLURL路径的字符串,这个生成的字

37、符串可以赋予路径的字符串,这个生成的字符串可以赋予HTMLHTML的的标记实现标记实现URLURL的连接,或用这个生成的的连接,或用这个生成的URLURL字符串实现网页转发与字符串实现网页转发与重定向等。可搭配重定向等。可搭配 标签动态添加参数信息。标签动态添加参数信息。属 性类型描 述引用ELurlString生成的生成的URL路径信息路径信息可以可以contextString上下文路径,用于访问同一个服务器的其他上下文路径,用于访问同一个服务器的其他Web工程,工程,其值必须以其值必须以“/”开头,如果指定了该属性,那么开头,如果指定了该属性,那么url属性值也必须以属性值也必须以“/”开

38、头开头可以可以varString变量名称,将获取的资源存储在变量中变量名称,将获取的资源存储在变量中不可以不可以scopeString变量的存在范围变量的存在范围不可以不可以contextStringurl属性的相对路径属性的相对路径可以可以示例c-url.jsp 标签标签 只用于为其他标签提供参数信息,它与本节中的其只用于为其他标签提供参数信息,它与本节中的其他他3 3个标签组合可以实现动态定制参数。个标签组合可以实现动态定制参数。示例c-redirect.jsp及c-url.jsp3 3自定义标签自定义标签 使用自定义标签可以加快使用自定义标签可以加快WebWeb应用开发的速度,应用开发的

39、速度,提高代码重用性,使得提高代码重用性,使得JSPJSP程序更加容易维护。引入程序更加容易维护。引入自定义标签后的自定义标签后的JSPJSP程序更加清晰、简洁、便于管理程序更加清晰、简洁、便于管理维护以及日后的升级。维护以及日后的升级。3 3自定义标签自定义标签 自定义标签就是一个自定义标签就是一个扩展的扩展的JavaJava类类,它是运行一,它是运行一个或者两个接口的个或者两个接口的JavaBeanJavaBean。当多个同类型的标签。当多个同类型的标签组合在一起时就形成了一个组合在一起时就形成了一个标签库标签库,这时候还需要,这时候还需要为这个标签库中的属性编写一个描述性的为这个标签库中

40、的属性编写一个描述性的配置文件配置文件,这样服务器才能通过页面上的标签查找到相应的处这样服务器才能通过页面上的标签查找到相应的处理类。理类。自定义标签的构成自定义标签的构成(1)实现自定义标签的)实现自定义标签的Java类文件类文件l自定义标签的开发主要就是标签处理程序的开发。其开发有自定义标签的开发主要就是标签处理程序的开发。其开发有固定的规范,即开发时需要实现特定接口的固定的规范,即开发时需要实现特定接口的JavaJava类,开发标类,开发标签的签的JavaJava类时,必须实现类时,必须实现TagTag或者或者BodyTagBodyTag接口类(它们存储接口类(它们存储在在javax.s

41、ervlet.jsp.tagextjavax.servlet.jsp.tagext包下)。包下)。lBodyTagBodyTag接口是继承了接口是继承了TagTag接口的子接口,如果创建的自定义接口的子接口,如果创建的自定义标签不带标签体,则可以实现标签不带标签体,则可以实现TagTag接口,如果创建的自定义标接口,如果创建的自定义标签包含标签体,则需要实现签包含标签体,则需要实现BodyTagBodyTag接口。接口。(2)自定义标签的)自定义标签的TLD文件文件l自定义标签的自定义标签的TLDTLD文件包含了自定义标签的描述文件包含了自定义标签的描述信息,它把自定义标签与对应的处理程序关联

42、起信息,它把自定义标签与对应的处理程序关联起来。一个标签库对应一个标签库描述文件,一个来。一个标签库对应一个标签库描述文件,一个标签库描述文件可以包含多个自定义标签声明。标签库描述文件可以包含多个自定义标签声明。l自定义标签的自定义标签的TLDTLD文件的扩展名必须是文件的扩展名必须是.tldtld。该。该文件存储在文件存储在WebWeb应用的应用的WEB-INFWEB-INF目录下或者子目录目录下或者子目录下。下。3 自定义标签自定义标签 A tag library exercising SimpleTag handlers.1.2 1.2 examples 描述性文字描述性文字 showD

43、ate com.ShowDateTag empty value true .tld文件描述3 自定义标签自定义标签标 签 名 称说 明description标签的说明(可省略)标签的说明(可省略)display-name供工具程序显示用的简短名称(可省略)供工具程序显示用的简短名称(可省略)icon供工具程序使用的小图标供工具程序使用的小图标name标签的名称,在同一个标签库内不可以有同名的标签,该元素指定的名称可以被标签的名称,在同一个标签库内不可以有同名的标签,该元素指定的名称可以被JSP页面页面作为自定义标签使用作为自定义标签使用tag-class映射类的完整名称,用于指定与映射类的完整

44、名称,用于指定与name子标签对应的映射类的名称子标签对应的映射类的名称tei-class标签设计者定义的标签设计者定义的javax.servlet.jsp.tagext.TagExtraInfo的子类,用来指定返回变量的信息的子类,用来指定返回变量的信息(可省略)(可省略)body-contentBody内容的类型,其值可以为内容的类型,其值可以为empty、scriptless、tagdependent其中之一,其值为其中之一,其值为emply时,表示时,表示body必须是空;其值为必须是空;其值为tagdependent时,表示时,表示body的内容由标签的实现自行的内容由标签的实现自行

45、解读,通常是用在解读,通常是用在body内容是别的语言时,例如内容是别的语言时,例如SQL语句语句variable声明一个由标签返回给调用网页的声明一个由标签返回给调用网页的EL变量(可省略)变量(可省略)attribute声明一个属性(可省略)声明一个属性(可省略)dynamic-attributes此标签是否可以有动态属性,默认值为此标签是否可以有动态属性,默认值为false;若为;若为true,则,则TagHandler必须实现必须实现javax.servlet.jsp.tagext.DynamicAttrbutes的接口的接口example此标签的使用范例(可省略)此标签的使用范例(可

46、省略)tag-extension提供此标签额外信息给程序(可省略或多于一个此标签)提供此标签额外信息给程序(可省略或多于一个此标签)在JSP文件中引用自定义标签JSP文件中,可以通过下面的代码引用自定义标签:文件中,可以通过下面的代码引用自定义标签:上上面面语句中的语句中的uri和和prefix说明如下说明如下。(1)uri属性属性uri属性指定了属性指定了tld文件在文件在Web应用中的存放位置,此位置可应用中的存放位置,此位置可以采用以下两种方式指定以采用以下两种方式指定。在在uri属性中直接指明属性中直接指明tld文件的所在目录和对应的文件名,文件的所在目录和对应的文件名,例如下面的代码

47、:例如下面的代码:在JSP文件中引用自定义标签 通过在通过在web.xml文件中定义一个关于文件中定义一个关于tld文件的文件的uri属性,属性,让让JSP页面通过该页面通过该uri属性引用属性引用tld文件,这样可以向文件,这样可以向JSP页面页面隐藏隐藏tld文件的具体位置,有利于文件的具体位置,有利于JSP文件的通用性。例如在文件的通用性。例如在Web.xml中进行以下配置中进行以下配置:showDateUri /WEB-INF/showDate.tld在在JSP页面中就可应用以下代码引用自定义标签:页面中就可应用以下代码引用自定义标签:(2)prefix属性属性prefix属性规定了如

48、何在属性规定了如何在JSP页面中使用自定义标签,即使页面中使用自定义标签,即使用什么样的前缀来代表标签,使用时标签名就是在用什么样的前缀来代表标签,使用时标签名就是在tld文件中文件中定义的定义的段中的段中的属性的取值,它要和前缀属性的取值,它要和前缀之间用冒号之间用冒号“:”隔开。隔开。l自定义标签开发示例luserDefineTag.jspluserDefineTag2.jsp在JSP文件中引用自定义标签9.3 框架技术l采用合适的开发框架可以很好地提高开发效率。采用合适的开发框架可以很好地提高开发效率。lSSH(Struts、Spring、Hibernate)框架技术框架技术Struts

49、框架lStruts是是Apache软件基金会(软件基金会(ASF)赞助的一个开源项目。)赞助的一个开源项目。它最初是它最初是Jakarta项目中的一个子项目,并在项目中的一个子项目,并在2004年年3月成为月成为ASF的顶级项目。它通过采用的顶级项目。它通过采用Java ServletJSP技术,实技术,实现了基于现了基于Java EE Web应用的应用的Model-View-ControllerMVC设计模式的应用框架设计模式的应用框架Web Framework,是,是MVC经典设计模式中的一个经典产品。经典设计模式中的一个经典产品。l2006年,年,WebWork与与Struts这两个优秀

50、的这两个优秀的Java EE Web框框架(架(Web Framework的团体,决定合作共同开发一个新的,的团体,决定合作共同开发一个新的,整合了整合了WebWork与与Struts优点,并且更加优雅、扩展性更强优点,并且更加优雅、扩展性更强的框架,命名为的框架,命名为“Struts 2”,原,原Struts的的1.x版本产品称为版本产品称为“Struts 1”。至此,。至此,Struts项目并行提供与维护两个主要版项目并行提供与维护两个主要版本的框架产品本的框架产品Struts 1与与Struts 2。Struts框架Spring框架lSpring是一个开源框架,它由是一个开源框架,它由R

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁