《Java Web应用开发》课件ch08.ppt

上传人(卖家):momomo 文档编号:5787114 上传时间:2023-05-09 格式:PPT 页数:48 大小:878.50KB
下载 相关 举报
《Java Web应用开发》课件ch08.ppt_第1页
第1页 / 共48页
《Java Web应用开发》课件ch08.ppt_第2页
第2页 / 共48页
《Java Web应用开发》课件ch08.ppt_第3页
第3页 / 共48页
《Java Web应用开发》课件ch08.ppt_第4页
第4页 / 共48页
《Java Web应用开发》课件ch08.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、第第8章章 EL表达式语言与表达式语言与 JSTL标签库标签库回顾回顾lJSP 标准动作常用于将标准动作常用于将JavaBean组件传递组件传递给其他网页给其他网页lllgetProperty标准动作的问题(标准动作的问题(1)迭代集合中的元素,依然离迭代集合中的元素,依然离不开不开脚本代码脚本代码public class GoodsDAO public ArrayList getAllGoods()l如何使用如何使用标记,显示标记,显示出每个商品的信息呢?出每个商品的信息呢?l private ArrayList allGoods;getProperty标准动作的问题(标准动作的问题(2)p

2、ublic class Teacher private Student stu;public class Student private String name;如果获得如果获得teacher对象的学生对象的学生stu对象的对象的name属性值?属性值?无法获取对象无法获取对象“属性的属性值属性的属性值”EL表达式语言表达式语言lEL 表达式语言(表达式语言(Expression Language)lJSP 表达式语言的语法表达式语言的语法 l$EL表达式表达式 lEL表达式常用于以下情形:表达式常用于以下情形:l获取或显示某表达式的值获取或显示某表达式的值l配合标签使用配合标签使用EL表达式

3、语言表达式语言l例如:例如:该商品的价格是该商品的价格是$84.5E4 EL表达式语言表达式语言l例如:例如:$true and true$true&false$true and true$true&falsetruefalse$true and true$true&falseEL支持通用的关系运算支持通用的关系运算 操作操作描述描述示例示例结果结果=(eq)是否相等是否相等$5=5true!=(ne)是否不等是否不等$5!=5false(lt)是否小于是否小于$5(gt)是否大于是否大于$5 7false=(ge)是否大于等于是否大于等于$5 ge 6false与范围有关的隐式对象与范围有关

4、的隐式对象 l与范围有关的与范围有关的EL 隐式对象包含以下隐式对象包含以下4个:个:pageScope、requestScope、sessionScope 和和applicationScope。l在在EL中,这中,这4个隐式对象用来取得范围属性值,即个隐式对象用来取得范围属性值,即相当于相当于getAttribute(String name)。l例如:要取得例如:要取得session中储存一个属性中储存一个属性username的的值,可以利用下列方法:值,可以利用下列方法:lsession.getAttribute(username)在在EL中则使用下列方法:中则使用下列方法:l$sessi

5、onScope.username 与范围有关的隐式对象与范围有关的隐式对象 表达式示例表达式示例 变化的背景色变化的背景色 作为背景色属性值作为背景色属性值传递的传递的 EL 表达式表达式按照按照pageScope、requestScope、sessionScope、applicationScope范围范围依次查找依次查找color变量变量$pageScope.colorEL支持的支持的empty运算符运算符 l在在EL中有一个特殊的运算符中有一个特殊的运算符empty,如果操作,如果操作数值为数值为null返回返回true,或者操作数本身是一个空,或者操作数本身是一个空的容器、空的数组或长度

6、为的容器、空的数组或长度为0的字符串等也返回的字符串等也返回true。这里空容器指的是不包含任何元素的容。这里空容器指的是不包含任何元素的容器,空数组表示其大小为器,空数组表示其大小为0的数组。的数组。l例如,判断例如,判断session返回的返回的userName变量是否变量是否为为null:l$empty sessionScope.userName与输入有关的隐式对象与输入有关的隐式对象 l与输入有关的隐式对象有两个:与输入有关的隐式对象有两个:param和和paramValues。l例如,要取得用户的请求参数时,可以利用下例如,要取得用户的请求参数时,可以利用下列方法:列方法:lrequ

7、est.getParameter(String name)lrequest.getParameterValues(String name)l在在EL中则可以使用中则可以使用param和和paramValues两者两者来取得数据:来取得数据:l$param.namel$paramValues.name 实现一个计算器实现一个计算器计算器计算器 +=  JavaBean与与EL表达式表达式l如果如果EL表达式取出的变量是表达式取出的变量是JavaBean对象,还对象,还可以显示其对应的成员属性值,例如,显示可以显示其对应的成员属性值,例如,显示session范围的范围的user

8、对象的对象的name属性值属性值:l$sessionScope.user.name 相当于:相当于:l 相当于:相当于:llEL表达式注意事项表达式注意事项lEL表达式语言的理解非常简单,实用性强。可以表达式语言的理解非常简单,实用性强。可以在在page指令进行设置:指令进行设置:ll表示是否禁用表示是否禁用EL语言,语言,true表示禁止,表示禁止,false表示不禁表示不禁止,止,JSP2.0中默认的启用中默认的启用EL语言。语言。lEL表达式基本能够取代表达式基本能够取代JSP表达式,区别在于:表达式,区别在于:l$表达式表达式中,如果表达式是某个对象(变量),要求中,如果表达式是某个对

9、象(变量),要求来自于某个作用域范围。来自于某个作用域范围。l$表达式表达式中,如果表达式结果为中,如果表达式结果为NULL,不会有任何显,不会有任何显示;示;lEL表达式还经常配合标签使用,如表达式还经常配合标签使用,如JSTL标签。标签。JSTLlJSTL 1.0发布于发布于2002年年6月,月,JSP标准标签库(标准标签库(JSP Standard Tag Library)。l标签库与其他标签库与其他JSP结构相比(如脚本、表达式、声明以结构相比(如脚本、表达式、声明以及隐含对象等)更清晰地分离了业务逻辑和表示细节。及隐含对象等)更清晰地分离了业务逻辑和表示细节。l由由4个定制标签库:个

10、定制标签库:lCore标签标签库提供了定制操作,通过限制了作用域的库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操变量管理数据,以及执行页面内容的迭代和条件操作,它还提供了用来生成和操作作,它还提供了用来生成和操作URL的标签;的标签;lFormat标签库标签库定义了用来格式化数据(尤其是数字定义了用来格式化数据(尤其是数字和日期)的操作,它还支持使用本地化资源束进行和日期)的操作,它还支持使用本地化资源束进行JSP页面的国际化;页面的国际化;lSQL库库定义了用来查询关系数据库的操作;定义了用来查询关系数据库的操作;lXML库库包含一些标签,这些标签用来操作通

11、过包含一些标签,这些标签用来操作通过XML表示的数据。表示的数据。EL与与JSTL JSTL标签标签EL与与JSTL 欢迎您,欢迎您,$sessionScope.person.uname!您尚未登录!您尚未登录!JSTL标签标签JSTL支持的支持的4种标签种标签lCore:核心标签库,是核心标签库,是JSTL中最常用的标签库,支持中最常用的标签库,支持JSP中一些基本操作,如输出、程序流程控制等,中一些基本操作,如输出、程序流程控制等,URI为为http:/ 标签显示值的结果标签显示值的结果 remove 标签用标签用于删除具有作用于删除具有作用域的变量域的变量 set 标签用于标签用于给变量

12、设置值给变量设置值和作用域和作用域使用使用Core核心标签的指令核心标签的指令条件标签条件标签lJSTL 提供条件标签以支持提供条件标签以支持 JSP 页面中的页面中的各种条件,类似于语法中各种条件,类似于语法中“if”、“if-else”和和“if-else-if”判断结构。判断结构。l条件标签包括:条件标签包括:条件标签条件标签ifchoose条件标签条件标签l在在 JSP 页面中使用条件标签。页面中使用条件标签。lif 和和 choose 标签的用法。标签的用法。c:if test=$signalStrength 使用使用 If 和和 Choose 信号断开信号断开 信号打开信号打开 迭

13、代标签迭代标签l迭代标签用于多次计算标签体迭代标签用于多次计算标签体 l迭代标签库中的标签有:迭代标签库中的标签有:forEachforTokens迭代标签迭代标签迭代标签迭代标签c:forEach var=numbering items=“forEach 标签将遍历对象集标签将遍历对象集合并显示合并显示 1 到到 4 之间的数字之间的数字 forTokens 将遍历用所提供的分将遍历用所提供的分隔符分隔的值并显示所有的名称隔符分隔的值并显示所有的名称 Format标签库标签库 lFormat标签库也称标签库也称I18N formatting 标签库,标签库,“I18N”是指单词是指单词“in

14、ternationalization”共共18个字个字母,该标签库用于在母,该标签库用于在JSP页面中做国际化的动作。页面中做国际化的动作。在该标签库中的标签一共有在该标签库中的标签一共有12个,被分为两类,分个,被分为两类,分别是:别是:l国际化核心标签国际化核心标签:、。l格式化标签格式化标签:、。国际化国际化l该示例设置本地环境为中文该示例设置本地环境为中文,将会查找一个名为将会查找一个名为applicationMessage_zh_CN.properties的资的资源配置文件,显示输出资源文件中名为源配置文件,显示输出资源文件中名为message属性值。属性值。格式化格式化fmt:fo

15、rmatDate value=“pattern=yyyy年年MM月月dd日:日:hh时时mm分分ss秒秒/SQL 标签库标签库lSQL 标签库用于从标签库用于从 JSP 页面访问和更新页面访问和更新数据库。数据库。lSQL 标签库具有以下功能:标签库具有以下功能:l传递各种数据库查询传递各种数据库查询l访问查询结果访问查询结果l数据库修改数据库修改l执行各种数据库事务执行各种数据库事务SQL 标签库标签库lSQL 标签库中的标签有:标签库中的标签有:SQL 标签库标签库setDataSourcequerytransactionupdateparamSQL 标签库标签库 select*from

16、guestinfo where country=china order by firstName SQL 标签库标签库 INSERT INTO ProductDetails(ProductName,ProductType,Price,Brand,Description)VALUES(?,?,?,?,?)自定义标签是遵循自定义标签是遵循 格式的标准格式的标准 HTML 标签标签嵌入嵌入 Java 代码代码标签处理程序文件标签处理程序文件前缀前缀自定义标签自定义标签自定义标签自定义标签 标签处理程序的组件标签处理程序的组件标签处理程序标签处理程序(Java 类)类)标签库描述符(提供有关标签和标签

17、库描述符(提供有关标签和库文件的元信息的库文件的元信息的 XML 文件)文件)JSP 实现(包含自定实现(包含自定 义标签的义标签的 JSP 文件)文件)使用标签处理程序实现自定义标签使用标签处理程序实现自定义标签标签处理程序标签处理程序HelloWorld.javapublic class HelloWorld implements Tag private PageContext pageContext;public int doStartTag()throws JspException JspWriter out=pageContext.getOut();try out.println(H

18、ello World);catch(IOException ex)ex.printStackTrace();return SKIP_BODY;public void setPageContext(PageContext arg0)this.pageContext=arg0;标签库描述符标签库描述符mytag.tld 1.0 1.2 mytag HelloWorldTag tag.HelloWorld empty JSP页面调用自定义标签页面调用自定义标签 自定义标签自定义标签l事先将实现某种功能的事先将实现某种功能的Java代码编写成代码编写成“自定自定义标签义标签”,就可以在,就可以在JSP

19、中直接使用这些标签。中直接使用这些标签。l自定义标签主要有两类:自定义标签主要有两类:l空标签空标签l实现实现import javax.servlet.jsp.tagext.Tag接口接口l继承继承import javax.servlet.jsp.tagext.TagSupport类类l正常标签(容器标签)正常标签(容器标签)l实现实现import javax.servlet.jsp.tagext.BodyTag接口接口l继承继承import javax.servlet.jsp.tagext.BodyTagSupport类类标签生命周期标签生命周期标签处理程序标签处理程序GetRequestP

20、arameterpublic class GetRequestParameter extends TagSupport public String value=;public void setValue(String value)this.value=value;public int doStartTag()throws JspException ServletRequest request=pageContext.getRequest();try request.setCharacterEncoding(GBK);String paramValue=request.getParameter(

21、value);JspWriter out=pageContext.getOut();if(paramValue=null|paramValue.length()=0)out.println(无法得到内容无法得到内容);out.println(paramValue);catch(Exception ex)ex.printStackTrace();return SKIP_BODY;标签库描述符标签库描述符mytag.tld 1.0 1.2 mytag getReqParamValue tag.GetRequestParameter empty value true JSP页面调用自定义标签页面调用

22、自定义标签 练习开发自定义标签练习开发自定义标签l标签作用:输出两个数中的最大值。标签作用:输出两个数中的最大值。l编写标签处理程序:编写标签处理程序:MaxTag.javal编写标签库描述符:编写标签库描述符:mytag.tldl在在JSP页面调用自定义标签页面调用自定义标签标签处理程序标签处理程序ToUpper类类public class ToUpper extends BodyTagSupport public void setBodyContent(BodyContent arg0)this.bodyContent=arg0;public int doAfterBody()throws

23、 JspException BodyContent bodyContent=super.getBodyContent();String bodyString=bodyContent.getString();JspWriter out=bodyContent.getEnclosingWriter();try out.println(bodyString.toUpperCase();bodyContent.clear();catch(IOException ex)ex.printStackTrace();return 0;public int doStartTag()throws JspExcep

24、tion return this.EVAL_BODY_BUFFERED;标签库描述符标签库描述符mytag.tld 1.0 1.2 mytag http:/ toUpper tag.ToUpper 练习开发自定义标签练习开发自定义标签l标签作用:循环输出指定次数的字符串标签作用:循环输出指定次数的字符串l编写标签处理程序:编写标签处理程序:Greet.javal编写标签库描述符:编写标签库描述符:mytag.tldl在在JSP页面调用自定义标签页面调用自定义标签自定义标签的优点自定义标签的优点l分离了程序逻辑和表示逻辑分离了程序逻辑和表示逻辑l将将Java代码从代码从HTML中剥离,便于美工维中剥离,便于美工维护页面护页面l减少了减少了JSP页面中的脚本,减少了维护成页面中的脚本,减少了维护成本本l提供了可重用的功能组件提供了可重用的功能组件

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《Java Web应用开发》课件ch08.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|