Java Web 开发从入门到实践课件 第9章 - EL表达式和JSTL标签库_第1页
Java Web 开发从入门到实践课件 第9章 - EL表达式和JSTL标签库_第2页
Java Web 开发从入门到实践课件 第9章 - EL表达式和JSTL标签库_第3页
Java Web 开发从入门到实践课件 第9章 - EL表达式和JSTL标签库_第4页
Java Web 开发从入门到实践课件 第9章 - EL表达式和JSTL标签库_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb开发从入门到实践JavaWebDevelopmentFromIntroductiontoPracticeEL表达式和JSTL标签库Chap09提纲EL表达式和JSTL标签库EL表达式(表达式语言)和JSTL标签库是用于在JSP页面中简化动态内容的生成与处理的技术,EL用于直接嵌入Java代码,而JSTL提供了标准化的标签来实现常见的功能。9.1EL表达式9.2JSTL标签库9.3本章小结9.1EL表达式9.1.1EL简介9.1.2EL标签的功能9.1.3EL运算符9.1.4EL隐式对象9.1.1EL简介EL表达式,全称为ExpressionLanguage,是JSP2.0规范中增加的语言,EL的语法格式如下:${表达式}EL以“${”开始,以“}”结束,等价于JSP表达式<%=表达式%>@WebServlet("/ElServlet")

publicclassElServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

req.setAttribute("country","中国");

req.setAttribute("nationalFlag","五星红旗");

req.getRequestDispatcher("index.jsp").forward(req,resp);}

}9.1.1EL简介<%@pagecontentType="text/html;charset=UTF-8"language="java"%> <html> <head> <title>第一个EL表达式的使用</title> </head> <body> 国家:${country}<br> 国旗:${nationalFlag} </body> </html>index.jsp图

9-1

运行结果9.1.2EL标签的功能EL标签具有以下功能。访问JSP中不同域的对象EL标签可以访问page、request、session和application四个作用域中的数据。<styletype="text/css">

table{

border:1pxsolidgray;width:500px;

}

td{

text-align:center;

}

</style>...<%

pageContext.setAttribute("username","Charles");

request.setAttribute("sex","男");

session.setAttribute("age",35);

application.setAttribute("professional","college-teacher");

%>

9.1.2EL标签的功能<center>

<h2>EL表达式的使用</h2>

<table>

<tr>

<th>姓名</th><th>性别</th><th>年龄</th><th>职业</th>

</tr>

<tr>

<td>${username}</td><td>${sex}</td><td>${age}</td><td>${professional}</td>

</tr>

<tr>

<td>${pageScope.username}</td>

<td>${requestScope.sex}</td>

<td>${sessionScope.age}</td>

<td>${applicationSfessional}</td>

</tr>

</table>

</center>...9.1.2EL标签的功能图

9-2

访问作用域数据的运行结果9.1.2EL标签的功能访问JavaBean中的属性和集合元素在JSP表达式中使用EL表达式访问JavaBean中的属性比较方便,EL使用“.”和“[]”操作符来访问数据,可以使用EL获取JavaBean的属性值、数组中的元素和集合对象中的元素,使用EL获取JavaBean的属性值的语法如下:${对象.属性}或者${对象[“属性”]}使用EL获取数组中的元素${数组[下标]}使用EL获取集合对象中的元素${集合[下标].属性}9.1.2EL标签的功能案例:使用EL表达式访问JavaBean中的属性创建一个实体类UserspublicclassUsers{

privateIntegeruserId;

privateStringusername;

privateStringpassword;

privateStringemail;

publicUsers(){}

publicUsers(IntegeruserId,Stringusername,Stringpassword,Stringemail){this.userId=userId;

this.username=username;

this.password=password;

this.email=email;

}...}9.1.2EL标签的功能创建一个Servlet@WebServlet("/UsersServlet")

publicclassUsersServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

Usersuser=newUsers(1,"Charles","123456","charles@126.com");req.setAttribute("user",user);

req.getRequestDispatcher("user.jsp").forward(req,resp);

}

}9.1.2EL标签的功能创建一个JSP页面<table> <tr> <th>用户编号</th> <th>用户名</th> <th>密码</th> <th>email</th> </tr> <tr> <td>${user.userId}</td> <td>${user.username}</td> <td>${user.password}</td> <td>${user.email}</td> </tr></table>9.1.3EL运算符EL标签的运算符大致可以分为:算术运算符、关系运算符、逻辑运算符和其它运算符等。算术运算符算术运算符描述示例运算结果+加${10+5}15-减${10-5}5*乘${10*5}50/(或div)除${10/5}或者${10div5}2%(或mod)取余${10%5}或者${10mod5}0关系运算符关系运算符描述示例运算结果==(或eq)等于${10==5}或${10eq5}false!=(或ne)不等于${10!=5}或${10ne5}true<(或lt)小于${10<5}或${10lt5}false>(或gt)大于${10>5}或${10gt5}true<=(或le)小于或等于${10<=5}或${10le5}false>=(或ge)大于或等于${10>=5}或${10ge5}true表

9-1

EL中算术运算符表

9-2

EL中关系运算符9.1.3EL运算符EL标签的运算符大致可以分为:算术运算符、关系运算符、逻辑运算符和其它运算符等。逻辑运算符其它运算符逻辑运算符描述示例运算结果&&(或and)逻辑与${true&&false}或者${trueandfalse}false||(或or)逻辑或${true||false}或者${trueorfalse}true!(或not)逻辑非${!true}或者${nottrue}false其它运算符描述示例运算结果empty运算符检测一个值是否为null${empty变量}变量不存在返回true,否则返回false?:条件运算符${A?B:C}A为true,返回B,否则返回C表

9-3EL中逻辑运算符表

9-4

EL中其它运算符9.1.4EL隐式对象与作用域相关的隐式对象与作用域相关的隐式对象有pageScope、requestScope、sessionScope和applicationScope。分别对应JSP隐含变量page、request、session和application。与请求参数相关的隐式对象与请求参数相关的隐式对象有param和paramValues。param可以取某一个参数,paramValues可以取参数集合中的变量值。它等价于JSP中的request.getParameter(Stringname)和request.getParameterValues(Stringname)。获取数据的格式如下:${EL隐式对象.参数名}9.1.4EL隐式对象案例:param和paramValues的使用form.jsp<formmethod="post"action="el.jsp">

姓名:<inputtype="text"name="name"/><br/>

爱好:<inputtype="checkbox"name="hobby"value="swimming">swimming<inputtype="checkbox"name="hobby"value="travel">travel

<inputtype="checkbox"name="hobby"value="game">game

<br/>

<inputtype="submit"value="提交">

</form>9.1.4EL隐式对象form.jsp<formmethod="post"action="el.jsp">

姓名:<inputtype="text"name="name"/><br/>

爱好:<inputtype="checkbox"name="hobby"value="swimming">swimming<inputtype="checkbox"name="hobby"value="travel">travel

<inputtype="checkbox"name="hobby"value="game">game

<br/>

<inputtype="submit"value="提交">

</form>9.1.4EL隐式对象el.jsp<body> 姓名:${}<br/> 爱好:${paramValues.hobby[0]}${paramValues.hobby[1]}${paramValues.hobby[2]}</body>图

9-4

提交表单数据9.1.4EL隐式对象图9-5

使用param和paramValues获取表单数据9.2JSTL标签库9.2.1JSTL标签概述和入门实例9.2.2JSTL和Core标签库9.2JSTL标签库JSTL(JavaServerPages

StandardTagLibrary,JSP标准标签库)是Apache对EL表达式的扩展,JSTL是标签语言,可以嵌入Java代码到HTML中,使用标签的形式完成业务逻辑等功能,为页面设计人员和程序开发人员的分工协作提供了便利。9.2.1JSTL标签概述和入门实例JSTL概述JSTL是一组比HTML标签更强大的功能标签。使用JSTL可以取代在传统JSP程序中嵌入Java代码的做法,大大提高了开发效率。使用JSTL标签具有以下优点。(1)良好的可读性和可维护性。业务逻辑和界面分离,提高代码的可读性和可维护性。(2)业务逻辑封装。业务逻辑封装到JSTL中,方便代码重用,从而提高开发效率。(3)简化开发过程。使用少量的JSTL代码,就可以完成大量的Java代码完成的功能。9.2.1JSTL标签概述和入门实例案例:JSTL标签库的基本使用配置JSTL图

9-6

复制JSTL相关的jar包1、添加Jar包9.2.1JSTL标签概述和入门实例图

9-7确认加入jar包9.2.1JSTL标签概述和入门实例2、JSP页面引入JSTL标签库引入Core核心标签库,prefix是标签前缀,uri是JSTL中c.tld文件声明的uri地址<%@taglibprefix="c"uri="/jsp/jstl/core"%>引入Functions函数标签库<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>9.2.1JSTL标签概述和入门实例编写一个JSP页面<body> <c:outvalue="第一个JSTL案例">这里是默认值</c:out><br/> 字符串"helloworld!"以"he"开始吗?${fn:startsWith("helloworld!","he")}</body>图

9-8运行结果9.2.2JSTL和Core标签库<c:set>标签、<c:out>标签与<c:if>标签<c:setvalue="表达式"var="名称"[scope="page|request|session|application"]></c:set><c:outvalue="表达式"[escapeXml="true|false"]></c:out><c:iftest="判断条件"[var="page|request|session|application"]>

条件为值时执行语句

</c:if>9.2.2JSTL和Core标签库案例:<c:set>、<c:out>和<c:if>的使用<c:setvalue="${1+2}"var="result"scope="request"></c:set>

<c:outvalue="${result}"escapeXml="true"></c:out><br/><c:iftest="${result>2}"var="request">

结果大于2

</c:if>图

9-9JSTL的Core标签库的使用(一)9.2.2JSTL和Core标签库<c:choose>标签、<c:when>标签和<c:otherwise>标签<c:choose>

<c:whentest="表达式1">表达式1为真时执行的语句</c:when>

<c:whentest="表达式2">表达式2为真时执行的语句</c:when>

[<c:otherwise>表达式都为假时执行的语句</c:otherwise>]

</c:choose>案例:<c:choose>标签的使用<c:setvalue="90"var="score"></c:set>

<c:choose>

<c:whentest="${score>=90}">优秀</c:when>

<c:whentest="${score>=80}">良好</c:when>

<c:whentest="${socre>=60}">及格</c:when>

<c:otherwise>不及格</c:otherwise>

</c:choose>9.2.2JSTL和Core标签库<c:forEach>标签<c:forEachitems="要迭代的集合"var="变量名"begin="迭代初始值"end="迭代终值"step="迭代步长"varStatus="每个对象的状态"> 标签体</c:forEach><c:forEach>标签属性含义如下。(1)items:用来迭代的集合。可以是数组、Java集合(List和Map)。(2)var:用来存放当前迭代到的成员值。类型为String。(3)begin:指迭代开始。类型为整数。如果有items,那么从items[begin]开始迭代,如果没有items,那么从begin开始迭代。(4)end:指迭代结束。类型为整数。如果有items,那么迭代到items[end],如果没有items,那么迭代到end。(5)step:指迭代的步长。(6)varStatus:存放当前迭代的索引号(index)、当前迭代的次数(count)、是否第一次迭代(first)和最后一次迭代的状态(last)。9.2.2

温馨提示

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

评论

0/150

提交评论