《Java Web开发从入门到实战(IntelliJ IDEA版·微课视频版)》 课件 第7章 EL与JSTL_第1页
《Java Web开发从入门到实战(IntelliJ IDEA版·微课视频版)》 课件 第7章 EL与JSTL_第2页
《Java Web开发从入门到实战(IntelliJ IDEA版·微课视频版)》 课件 第7章 EL与JSTL_第3页
《Java Web开发从入门到实战(IntelliJ IDEA版·微课视频版)》 课件 第7章 EL与JSTL_第4页
《Java Web开发从入门到实战(IntelliJ IDEA版·微课视频版)》 课件 第7章 EL与JSTL_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章EL与JSTL学习目的与要求本章主要介绍表达式语言(ExpressionLanguage,简称EL)和JSP标准标签库(Java

Server

Pages

Standard

Tag

Library,简称JSTL)的基本用法。通过本章的学习,掌握EL表达式语法,掌握EL隐含对象,了解什么是JSTL,掌握JSTL的核心标签库。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

学习目的与要求《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.1EL简介7.2EL语法7.3EL运算符7.4EL隐含对象7.5JSP标准标签库JSTL7.1EL简介EL是JSP2.0规范中增加的,它的基本语法为:${表达式}EL表达式类似于JSP表达式<%=表达式%>,EL语句中的表达式值会被直接送到浏览器显示。通过page指令的isELIgnored属性来说明是否支持EL表达式。isELIgnored属性值为false时,JSP页面可以使用EL表达式;isELIgnored属性值为true时,JSP页面不能使用EL表达式(被当成字符串直接输出)。isELIgnored属性值默认为false。EL表达式语言最大的优势是可以方便地访问JSP的内置对象和JavaBean组件,完成使用<%%>或<%=%>完成的功能,使JSP页面从HTML代码中嵌入Java代码的混乱结构得以改善,提高了程序的可读性和易维护性。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

学习目的与要求《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.1EL简介7.2EL语法7.3EL运算符7.4EL隐含对象7.5JSP标准标签库JSTL7.2.1EL中的常量EL表达式中的常量包括布尔、整型、浮点数、字符串以及NULL等常量。例如:${true}、${200}、${16.7}、${"hello"}、${null}。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.2.2EL中的“[]”与“.”操作符EL使用“[]”和“.”操作符来访问数据,主要使用EL获取对象的属性,包括获取JavaBean的属性值、获取数组中的元素以及获取集合对象中的元素。(1)获取JavaBean的属性值假设在JSP页面中有这样一句话:

<jsp:getPropertyproperty="age"name="user"/>那么,可以使用EL获取user的属性age,代码如下:

${user.age}或

${user["age"]}其中,点运算符前面为JavaBean对象user,后面为该对象的属性age,表示利用user对象的getAge()方法取值并显示在网页上。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.2.2EL中的“[]”与“.”操作符(2)获取数组中的元素假设在JSP页面或Servlet中有这样一段话:

Stringdogs[]={"lili","huahua","guoguo"}; request.setAttribute("array",dogs);那么,在JSP中可以使用EL取出数组中的元素,代码如下:

${array[0]} ${array[1]} ${array[2]}《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.2.2EL中的“[]”与“.”操作符(3)获取集合对象中的元素假设在JSP页面或Servlet中有这样一段话:ArrayList<UserBean>users=newArrayList<UserBean>();UserBeanub1=newUserBean("zhang",20);UserBeanub2=newUserBean("zhao",50);users.add(ub1);users.add(ub2);request.setAttribute("array",users);其中,UserBean有两个属性:name和age,那么在JSP页面中可以使用EL取出UserBean中的属性,代码如下:${array[0].name}${array[0].age}${array[1].name}${array[1].age}《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.2.3EL的错误处理机制EL为JSP页面的错误处理提供了比较友好的处理方式:不提供警告,只提供默认值和错误,默认值是空字符串,错误就是抛出一个异常。EL的错误处理机制,具体如下:1.对于null值直接以空字符串显示,而不是null,运算时也不会发生错误或空指针异常。所以在使用EL访问对象的属性时,不需判断对象是否为null对象。2.在EL中访问一个存在对象的不存在属性,EL表达式会抛出PropertyNotFoundException异常。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

学习目的与要求《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.1EL简介7.2EL语法7.3EL运算符7.4EL隐含对象7.5JSP标准标签库JSTL7.3.1算术运算符《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

算术运算符说

明示

例结

果+加${13+2}15-减${13-2}11*乘${13*2}26/(或div)除${13/2}或${13div2}6.5%(或mod)取模(求余)${13%2}或${13mod2}17.3.2关系运算符《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

关系运算符说

明示

例结

果==(或eq)等于${13==2}或${13eq2}false!=(或ne)不等于${13!=2}或${13ne2}true<(或lt)小于${13<2}或${13lt2}false>(或gt)大于${13>2}或${13gt2}true<=(或le)小于等于${13<=2}或${13le2}false>=(或ge)大于等于${13>=2}或${13ge2}true7.3.3逻辑运算符《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

逻辑运算符说

明示

例结

果&&(或and)逻辑与如果A为true,B为false,则A&&B(或AandB)false||(或or)逻辑或如果A为true,B为false,则A||B(或AorB)true!(或not)逻辑非如果A为true,则!A(或notA)false7.3.4empty运算符empty运算符用于检测一个值是否为null,例如,变量A不存在,则${emptyA}返回的结果为true。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.3.5条件运算符EL中的条件运算符是“?:”,例如,${A?B:C},如果A为true,计算B并返回其结果,如果A为false,计算C并返回其结果。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

学习目的与要求《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.1EL简介7.2EL语法7.3EL运算符7.4EL隐含对象7.5JSP标准标签库JSTL7.4.1与作用范围相关的隐含对象与作用范围有关的EL隐含对象有:pageScope、requestScope、sessionScope和applicationScope,分别可以获取JSP内置对象pageContext、request、session和application中的数据。如果在EL中没有使用隐含对象指定作用范围,则会依次从page、request、session、application范围查找,找到就直接返回,不再继续找下去,如果所有范围都没有找到,就返回空字符串。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.4.1与作用范围相关的隐含对象比如,在JSP页面或Servlet中有这样一段话:ArrayList<UserBean>users=newArrayList<UserBean>();UserBeanub1=newUserBean("zhang",20);UserBeanub2=newUserBean("zhao",50);users.add(ub1);users.add(ub2);request.setAttribute("array",users);其中,UserBean有两个属性:name和age,那么在request有效的范围内可以使用EL取出UserBean的属性,代码如下:${requestScope.array[0].name}${requestScope.array[0].age}${requestScope.array[1].name}${requestScope.array[1].age}《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.4.2与请求参数相关的隐含对象与请求参数相关的EL隐含对象有param和paramValues。获取数据的格式如下:

${EL隐含对象.参数名}比如,input.jsp的代码如下:<formmethod="post"action="param.jsp"> <p>姓名:<inputtype="text"name="username"size="15"/></p> <inputtype="submit"value="提交"/></form>那么,在param.jsp页面中可以使用EL获取参数值,代码如下:<%request.setCharacterEncoding("UTF-8");%><body><h2>EL隐含对象param、paramValues</h2>姓名:${param.username}</br>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.4EL隐含对象【例7-1】编写1个Servlet,在该Servlet中使用request对象存储数据,然后从该Servlet转发到show.jsp页面,在show.jsp页面中显示request对象的数据。首先,运行Servlet,在IE地址栏中输入:http://localhost:8080/ch7/saveServlet,程序运行结果如图7.1所示。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

学习目的与要求《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.1EL简介7.2EL语法7.3EL运算符7.4EL隐含对象7.5JSP标准标签库JSTL7.5JSP标准标签库JSTLJSTL规范由Sun公司制定,Apache的Jakarta小组负责实现。JSTL标准标签库由5个不同功能的标签库组成,包括Core、I18N、XML、SQL以及Functions,本节只是简要介绍了JSTL的Core和Functions标签库中几个常用的标签。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.1配置JSTL1.复制JSTL的标准实现在Tomcat的\webapps\examples\WEB-INF\lib目录下,找到“taglibs-standard-impl-1.2.5-migrated-0.0.1.jar”和“taglibs-standard-spec-1.2.5-migrated-0.0.1.jar”文件,然后复制到Web项目的WEB-INF\lib目录下。具体做法是:在WEB-INF目录下创建lib目录,将JAR包复制到lib中,然后右键选择Add

as

Library,添加为项目依赖。2.使用taglib标记定义前缀与uri引用如果使用Core核心标签库,首先需要在JSP页面中使用taglib标记定义前缀与uri引用,代码如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>如果使用Functions函数标签库,首先需要在JSP页面中使用taglib标记定义前缀与uri引用,代码如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.2核心标签库之通用标签1.<c:out>标签<c:out>用来显示数据的内容,与<%=表达式%>或${表达式}类似。格式如下:<c:outvalue="输出的内容"[default="defaultValue"]/>或<c:outvalue="输出的内容"> defaultValue</c:out><c:outvalue="${param.data}"default="没有数据"/><br><c:outvalue="${param.nothing}"/><br><c:outvalue="这是一个字符串"/>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.2核心标签库之通用标签2.<c:set>标签

设置作用域变量可以使用<c:set>在page、request、session、application等范围内设置一个变量。格式如下:<c:setvalue="value"var="varName"[scope="page|request|session|application"]/>

设置JavaBean的属性使用<c:set>设置JavaBean的属性时,必须使用target属性进行设置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.2核心标签库之通用标签3.<c:remove>标签如果要删除某个变量,则可以使用<c:remove>标签。例如:<c:removevar="userName"scope="session"/>相当于<%session.removeAttribute("userName")%>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.3核心标签库之流程控制标签1.<c:if>标签<c:if>标签实现if语句的作用,具体语法格式如下:

<c:iftest="条件表达式">

主体内容

</c:if>其中,条件表达式可以是EL表达式,也可以是JSP表达式。如果表达式的值为true,则会执行<c:if>的主体内容,但是没有相对应的<c:else>标签。如果想在条件成立时执行一块内容,不成立时执行另一块内容,则可以使用<c:choose>、<c:when>及<c:otherwise>标签。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.3核心标签库之流程控制标签2.<c:choose>、<c:when>及<c:otherwise>标签<c:choose>、<c:when>及<c:otherwise>标签实现if/elseif/else语句的作用。具体语法格式如下:

<c:choose> <c:whentest="条件表达式1">

主体内容1 </c:when> <c:whentest="条件表达式2">

主体内容2 </c:when> <c:otherwise>

表达式都不正确时,执行的主体内容

</c:otherwise></c:choose>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.3核心标签库之流程控制标签【例7-2】编写一个JSP页面ifelse.jsp,在该页面中使用<c:set>标签把两个字符串设置为request范围内的变量。使用<c:if>标签求出这两个字符串的最大值(按字典顺序比较大小),使用<c:choose>、<c:when>及<c:otherwise>标签求出这两个字符串的最小值。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.4核心标签库之迭代标签1.<c:forEach>标签<c:forEach>标签可以实现程序中的for循环。语法格式如下:

<c:forEachvar="变量名"items="数组或Collection对象">

循环体

</c:forEach>其中,items属性可以是数组或Collection对象,每次循环读取对象中的一个元素,并赋值给var属性指定的变量,之后就可以在循环体使用var指定的变量获取对象的元素。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.4核心标签库之迭代标签ArrayList<UserBean>users=newArrayList<UserBean>();UserBeanub1=newUserBean("zhao",20);UserBeanub2=newUserBean("qian",40);UserBeanub3=newUserBean("sun",60);UserBeanub4=newUserBean("li",80);users.add(ub1);users.add(ub2);users.add(ub3);users.add(ub4);request.setAttribute("usersKey",users);《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

<c:forEachvar="user"items="${requestScope.usersKey}"><tr><td>${}</td><td>${user.age}</td></tr></c:forEach>7.5.4核心标签库之迭代标签有些情况下,需要为<c:forEach>标签指定begin、end、step和varStatus属性。begin为迭代时的开始位置,默认值为0;end为迭代时的结束位置,默认值是最后一个元素;step为迭代步长,默认值为1;varStatus代表迭代变量的状态,包括count(迭代的次数)、index(当前迭代的索引,第一个索引为0)、first(是否是第一个迭代对象)和last(是否是最后一个迭代对象)。<c:forEachvar="x"varStatus="status"begin="0"end="10"step="2">

<tr>

<td>${x}</td>

<td>${x*x}</td>

<td>${status.index}</td>

</tr></c:forEach>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.4核心标签库之迭代标签2.<c:forTokens>标签<c:forTokens>用于迭代字符串中由分隔符分隔的各成员,它是通过java.util.StringTokenizer实例来完成字符串的分隔,属性items和delims作为构造StringTokenizer实例的参数。语法格式如下:<c:forTokensvar="变量名"items="要迭代的String对象"delims="指定分隔字符串的分隔符">

循环体</c:forTokens><c:forTokensitems="陈恒:梁艺多:董宗然:赵静"delims=":"var="name">

${name}<br></c:forTokens>《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

7.5.5核心标签库之URL标签JSTL中提供了<c:url>、<c:redirect>、<c:import>等与URL操作相关的标签。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

1.<c:url><c:url>标签用于在JSP页面中构造一个URL地址,其语法格式如下:<c:urlvalue="指定要构造的URL" [var="varName"][scope="{page|request|session|application}"] [context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:url>其中,value指定要构造的URL;var指定构造的URL保存到范围域中的属性名称;scope指定构造的URL结果保存到哪个范围域中;context指定URL地址所属的同一Web容器下的Web应用上下文;<c:param>标签向指定URL地址传递的参数;[]表示可选。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

2.<c:redirect><c:redirect>标签用于执行response.sendRedirect()方法的功能,将当前访问请求重定向到其他资源,其语法格式如下:<c:redirecturl="重定向的URL地址"[context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:redirect>其中,url指定重定向的目标资源的URL地址;context指定重定向地址所属的同一Web容器下的Web应用上下文;<c:param>标签向指定URL地址传递的参数;[]表示可选。《JavaWeb开发从入门到实战(微课视频版)(IntelliJIDEA版)》陈恒

主编,清华大学出版社,2024

3.<c:import><c:import>标签用于在JSP页面中导入一个URL地址指向的资源内容,可以是一个静态或动态文件,可以是当前应用或任何其他资源,其语法格式如下:<c:importurl="url" [var="varName"][scope="{page|request|sess

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论