EL表达式与JSTL
EL语言表达式(一)【语法和特点】

EL语⾔表达式(⼀)【语法和特点】
⼀、基本语法规则:
EL表达式语⾔以“${”开头,以"}"结尾的程序段,具体格式如下:
${expression}
其中expression:表⽰要指定输出的内容和字符串以及EL运算符组成的表达式。
⼆、EL语⾔表达式的特点:
(1)EL语法简单,⽅便
(2)EL可以与JSTL结合使⽤,也可以和JavaScript语句结合使⽤。
(3)EL可以⾃动转换类型。
(4)EL既可以访问⼀般的变量,也可以访问JavaBean中的属性和嵌套属性、集合对象。
(5)EL中可以执⾏算术运算、逻辑运算、关系运算和条件运算等。
(6)EL中可以获得命名空间(PageContext对象,他是页⾯中所有其他内置对象的最⼤范围的集成对象,通过它可以访问其他内置对象)。
(7)EL中在进⾏除法运算时,如果除数是0,则返回⽆穷⼤Infinity,⽽不返回错误。
(8)EL中可以访问JSP的作⽤域(request、session、application以及page)
(9)扩展函数可以与Java类的静态⽅法进⾏映射。
三、EL中保留的关键字
and eq gt
instanceof div or
le false empty
not lt ge。
JSP中JSTL提供的函数标签EL表达式操作字符串的方法

(3)去空格:
trim("原字符串")----去掉字符串前后的空格----例:${fn:trim(" Hello,Word! ")}
(4)替换字符:
replace("原字符串","要替换的字符","替换后的字符")----替换字符----例:${fn:replace("Hello,Word!","Word","你好")}
因此JSTL内置了几个用于字符串操作的方法,可以直接在表达式中使用,大大的简化了代码,提供代码的可读性。在JSTL的表达是中要使用一个函数,其格式如下
${fn:methodName(args....)}
在使用这些函数之前必须在JSP中引入标准函数的声明
<%@ taglib prefix="fn" uri="/jsp/jstl/functions" %>
----${fn:contains("Hello,Word","Hello") }
containsIgnoreCase("字符串1","字符串2")返回boolean----判断一个字符串是否包含另一个字符串,不区分大小写
----${fn:containsIgnoreCase("Hello,Word","w") }
JSP中JSTL提供的函数标签EL表达式操作字符串的方法
首先在jsp页面导入标签
<%@ taglib prefix="fn" uri="/jsp/jstl/functions"%>
el+表达式

EL表达式语言EL语言是JSTL输出(输入)一个JA V A表达式的表示形式。
在JSTL中,EL语言只能在属性值中使用。
EL语言只能通过建立表达式${exp1}来进行调用。
在属性值中使用表达式有三种方式。
1、value属性包含一个表达式<some:tag value="${expr}"/>在这种情况下,表达式值被计算出来并根据类型转换规则赋值给value 属性。
比如:<c:out value="${username}" />中的${username}就是一个EL,它相当于JSP语句<%=reques t.getAttribute(“username”)%>或<%=session.getAttribute(“username”)%>2、value属性包含一个或多个属性,这些属性被文本分割或围绕<some:tag value="some${expr}${expr}text${expr}"/>在这种情况下,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值给value属性3、value属性仅仅包含文本<some:tag value="sometext"/>在这种情况下,字符串型属性value将根据类型转换规则转换为标签所希望的类型。
EL语言的操作符取得某个对象或集合中的属性值为了获得集合中的属性,EL支持以下两种操作1.使用.操作符来获得有名字的属性。
例如表达式${ername}表明对象user的username属性2.使用[]操作符来获得有名字或按数字排列的属性。
表达式${user["username"]}和表达式${user. username }含义相同表达式${row[0]} 表明row集合的第一个条目。
实验四:EL表达式和JSTL标签库的使用复习进程

实验四:EL表达式和JSTL标签库的使用一、实验的目的(1)掌握EL表达式的使用。
(2)掌握JSTL标签库的使用。
二、实验内容与要求(1)学习EL表达式的原理和使用。
(2)了解JSTL标签库的原理及使用。
(3)EL实例的调试。
(4)JSTL实例的调试。
三、实验主要步骤1. EL表达式实例程序的调试(1)源代码el.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'el.jsp' starting page</title></head><body>45+36=${45+36}<br/><%=pageContext.getAttributesScope("info") %><br/>${info}<br/>ID:${user.id}<br/>ID:${er.id}<br>ID:${user[id]}<br/>name:${}<br/>age:${user.age}<br/>salary:${user.salary}空么?= ${empty user }><br/>Age>20:${user.age>=20 }<br/>ID is empty:${empty user.id }<br/></body></html>(2)源代码employeemain.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib uri="/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>员工管理主菜单</title></head><body><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td width="14%">编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="emp" items="${emplist}"><tr><td width="14%"><a href="toview.do?id=${emp.stu_id}">${emp.stu_name }</a></td> <td width="14%">${emp.stu_id}</td> <td width="14%">${emp.sex}</td><td width="14%">${emp.province}</td><tdwidth="14%">${emp.area}</td><td width="14%">${emp.nation}</td><td width="20%"><a href="toModofy.do?id=${emp.stu_id}">修改</a><a href="toDelete.do?id=${emp.stu_id}">删除</a></td></tr> </c:forEach></table></body></html>运行结果截图:2. JSTL标签库的使用程序实例的调试(1)源代码fmt02.jsp<%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><title>JSTL日期格式案例</title></head><body><h1>JSTL日期格式标记</h1><hr><jsp:useBean id="now" class="java.util.Date"></jsp:useBean><fmt:setLocale value="zh_CN"/>full格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br> long格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>medium格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="medium"timeStyle="medium"/><br>default格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/> <br>short格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br> <hr></body></html>运行结果截图:(2)源代码jstl01.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>JSTL应用</title></head><body><h1>c:forTokens标记使用</h1><hr/><c:set var="infos" value="10,30,40,50,60" /><c:forTokens items="${infos}" delims="," var="info" varStatus="status"><c:out value="${status.index}" />-<c:out value="${status.count}" />-<c:out value="${info}" /><br/></c:forTokens><hr/></body></html>运行截图:(3)源代码sql01.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>使用JSTL SQL标记</title></head><body><sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/student" user="root" password="root" var="infoData" scope="request" /><sql:query sql="select * from stuinfo" dataSource="${infoData}" var="emplist"scope="request"> </sql:query><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td >编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="row" items="${emplist.rows}"><tr><td width="14%"><a href="toview.do?id=${row.stu_id}">${row.stu_name }</a></td> <td width="14%">${row.stu_id}</td><td width="14%">${row.sex}</td><td width="14%">${row.province}</td><td width="14%">${row.area}</td><td width="14%">${row.nation}</td><td width="20%"><a href="toModofy.do?id=${row.empid}">修改</a><a href="toDelete.do?id=${row.empid}">删除</a></td></tr></c:forEach></table><hr/></body></html>运行截图:四、结论与体会EL表达式的目的是使用简洁的语法来替代jsp的表达式脚本<%=表达式%>,在jsp页面中输出动态的内容。
实验内容:使用EL及JSTL

XXXX 大学计算机学院实验报告计算机学院2017 级软件工程专业 5 班指导教师XXX 学号姓名XXX 2019 年10 月30 日成绩实验内容或上机调试程序实验:使用EL表达式和JSTL实现将文本框中的内容输出到页面的功能,在此页面的文本框中输入内容,单击页面提交按钮之后,输入框以及按钮消失,文本框中输入的内容显示到页面(操作及显示效果均在同一页面完成)①核心代码如下所示:<!-- 表单 --><c:set value="1"var="visitContent"property="visitContent"/><!-- 表单提交后,表单内输入框如果为null,就隐藏输入框 --><c:if test="${erName==null}"><form action="${pageContext.request.contextPath}/index.jsp">userName:<input type="text"name="userName"><br/>userPassword:<input type="text"name="userPassword"><input type="submit"value="提交"><input type="reset"value="重置"></form></c:if><hr/><!-- 使用EL表达式显示输入框中的内容 -->userName:${erName} <br/>userPassword:${erPassword}②完成效果如下所示:图表单提交之前的效果实验内容或上机图表单提交后前的效果调试程序。
el和jstl实验总结 -回复

el和jstl实验总结-回复实验总结:el和jstl在Java Web开发中的应用引言:在Java Web开发中,为了简化页面的开发和编写,提高开发效率,EL表达式(Expression Language)和JSTL标签库(JSP Standard Tag Library)被广泛应用。
本文将以实验总结的形式,深入探讨EL表达式和JSTL标签库在Java Web开发中的应用和使用方法,并提供一些实际案例,以便读者更好地理解和应用这两个技术。
第一部分:EL表达式(Expression Language)的应用1. EL表达式的概述:EL表达式是一种用于在JSP页面中处理和访问服务器端数据的简单而强大的语言。
它提供了一种简洁和易于理解的方式来获取和展示数据。
2. EL表达式的语法:介绍EL表达式的基本语法,包括变量访问、属性访问、方法调用等。
3. EL表达式的内置对象:介绍EL表达式内置的一些对象和方法,如pageContext、request、response、session等,以及它们的常用用法。
4. EL表达式的运算符:介绍EL表达式中常用的运算符,如四则运算、逻辑运算、比较运算等。
5. EL表达式的应用案例:通过实际案例,展示EL表达式在Java Web开发中的应用,如获取用户输入、计算表单数据、展示数据库查询结果等。
第二部分:JSTL标签库(JSP Standard Tag Library)的应用1. JSTL标签库的概述:JSTL是一组自定义标签,通过标签的方式提供了一种简洁和易于维护的方式来处理和展示JSP页面中的数据。
2. JSTL标签库的分类:介绍JSTL标签库的分类,如核心标签库、格式化标签库、数据库标签库等。
3. JSTL核心标签库的常用标签:介绍JSTL核心标签库中常用的标签,如<c:if>、<c:forEach>、<c:choose>等,以及它们的常用用法。
第06章:EL表达式和JSTL

从最小的属性范围中查 找key属性,如果找到, 则不再继续查找
属性值key=${key};<br>
request范围内的key=${requestScope.key};<br> session范围内的key=${sessionScope.key};<br> session范围内的key1=${key1}; 直接从指定的属性范围 内查找属性名为key的属 性值
set 标签用于给变量 设置值和作用范围
插入使用核心标签的指令
<%@ taglib uri="/jsp/jstl/core" prefix="c"%>
<body> <c:set var= "example" value="${100+1}" scope="session" />
${er[1]} 得到集合中第二位的对象
EL表达式的简单应用
输出姓名显示
<% Map names = new HashMap(); names.put("one","LiYang"); names.put("two","WangHua"); request.setAttribute("names",names); %> 姓名:${names.one}<br/> 姓名:${names["two"] }<br/>
通用标签
<c:set>含有的属性包括value、var、scope、target和property等,这
el的语法格式

el的语法格式EL(Expression Language)是一种用于在JSP页面中进行表达式评估和计算的简洁和简单的语法。
它是JavaServer Pages规范的一部分,主要用于在JSP中访问和操作JavaBean、容器对象和其他JSP元素。
EL语法由一系列表达式组成,这些表达式用于在JSP页面中获取、设置和操作变量的值。
它可以从多个对象中提取值,并可以进行条件、算术和逻辑运算。
以下是EL语法的一些相关参考内容。
1. 变量访问:- 使用`${}`表示一个EL表达式。
- `${variable}`可以获取名称为variable的变量的值。
- `${object.property}`可以获取对象的属性值。
- `${array[index]}`可以获取数组的指定索引处的元素值。
2. 算术运算符:- 使用`+`、`-`、`*`、`/`和`%`进行加、减、乘、除和取模运算。
- 示例:`${1 + 2}`返回`3`。
3. 比较运算符:- 使用`==`、`!=`、`>`、`<`、`>=`、`<=`进行相等、不等、大于、小于、大于等于和小于等于的比较。
- 示例:`${5 > 3}`返回`true`。
4. 逻辑运算符:- 使用`&&`、`||`和`!`进行逻辑与、逻辑或和逻辑非的运算。
- 示例:`${true && false}`返回`false`。
5. 条件运算符:- 使用`?:`进行条件表达式的判断。
- 示例:`${(5 > 3) ? "greater" : "smaller"}`返回`greater`。
6. 内置对象:- `${pageContext}`:用于访问PageContext对象。
- `${out}`:用于访问JspWriter对象。
- `${session}`:用于访问HttpSession对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EL和JSTL主要内容✓EL表达式✓JSTL标签库1.EL表达式EL表达式又称为表达式语言(Expression Language),它是JSP中一个很重要的组成部分。
在JSP页面中使用EL表达式,可以简化对变量和对象的访问。
EL表达式的语法非常的简单,所有的EL表达式都是以“${”开始,以“}”结束,比如${name}。
EL表达式会将表达式中的结果在页面上输出,就像使用JSP的表达式结构或使用out内置对象进行输出一样。
EL表达式对运算符支持使用EL表达式进行算术运算,在EL表达式中支持+、-、*、/、%运算,示例如下:代码演示:EL表达式算术运算<%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>EL表达式算术运算</title></head><body>12 + 15 = ${12+15}<br>12 * 15 = ${12*15}<br>12 - 15 = ${12-15}<br>12 / 15 = ${12/15}<br>12 % 15 = ${12%15}<br></body></html>图1 EL表达式算术运算结果在EL表达式中还可以支持关系运算符操作,示例如下:代码演示:EL表达式关系运算符<body>12==15 ${12==15}<br>12<15 ${12<15}<br>12>15 ${12>15}<br>12<=15 ${12<=15}<br>12>=15 ${12>=15}<br>12!=15 ${12!=15}</body>EL表达式除了支持普通的关系运算符外,还可以使用字符来表示关系运算符,下面的写法和上面使用普通关系运算符表示的顺序一一对应:代码演示:EL表达式关系运算符<body>12==15 ${12 eq 15}<br>12<15 ${12 lt 15}<br>12>15 ${12 gt 15}<br>12<=15 ${12 le 15}<br>12>=15 ${12 ge 15}<br>12!=15 ${12 ne 15}</body>图2 EL表达式关系运算符结果EL表达式中同样支持逻辑运算:代码演示:EL表达式逻辑运算<body>${12 < 15 && 12 < 15 }<br>${12 < 15 and 12 < 15 }<br>${12 < 15 || 12 > 15 }<br>${12 < 15 or 12 >15 }<br>${!(12 < 15) }<br>${not (12 < 15) }</body>从上面的代码中可以看出EL表达式中不仅支持&&、||、!方式的逻辑运算符,同样也支持and、or、not方式的逻辑运算符。
在EL表达式中也可以小括号来提升运算符的优先级。
EL表达式中还可以使用empty运算符检测一个值是否为null或者为空。
代码演示:EL表达式empty运算符<body><%List list = new ArrayList();list.add("tom");pageContext.setAttribute("str", null);pageContext.setAttribute("list", list);%>${empty str } ①${empty list} ②</body>代码解析:①判断内容是否为null②判断集合list中是否有元素图3 EL表达式empty运算符EL表达式中还支持三元表达式方式的条件选择运算,例如:代码演示:EL表达式条件选择<body>${12 < 15 ? 'yes':'no' } ①</body>代码解析:①注意在EL表达式中的字符串需要使用单引号引起来。
EL访问对象EL表达式的方便性不仅仅体现在对这些算术或关系运算的支持,它还可以很方便的访问对象。
例如在上面讲empty运算符时,使用EL表达式可以访问pageContext空间中的对象。
EL表达式不仅可以访问pageContext中的对象,还可以访问request、session、application 中的对象。
代码演示:EL表达式访问对象<body><%pageContext.setAttribute("name","tom");request.setAttribute("age","22");session.setAttribute("address","中国");application.setAttribute("score","75.5");%>${name}<br>${age}<br>${address}<br>${score}<br></body>图4 EL表达式访问对象从上面的例子中,可以看出访问对象只需要在EL表达式中写对象的名称即可。
EL表达式默认会从pageContext、reqest、session、application中并按照此顺序寻找名称匹配的对象,如果找不到,则不显示任何内容。
还可以指定从哪个空间中获取对象。
代码演示:EL表达式从指定空间内访问对象<body><%pageContext.setAttribute("name","tom");request.setAttribute("age","22");session.setAttribute("address","中国");application.setAttribute("score","75.5");%>${}<br> ①${requestScope.age}<br> ②${sessionScope.address}<br> ③${applicationScope.score}<br> ④</body>代码解析:①从pageContext中获取对象,pageScope代表pageContext空间。
②从request中获取对象,requestScope代表request空间。
③从session中获取对象,sessionScope代表session空间。
④从application中获取对象,applicationScope代表application空间。
如果空间内存放时一个自定义类的对象,会出现什么样的结果呢?代码演示:User类package com.zhaolongedu.vo;public class User {private String name;private String address;public String getName() {return name;}public void setName(String name) { = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return name + "来自" + address;}}代码演示:使用EL表达式访问User类对象<body><%User user = new User();user.setAddress("巴西");user.setName("小黑");pageContext.setAttribute("user",user);%>${user}</body>图5 EL表达式访问自定义类对象通过上面的例子可以看出如果直接输出自定义类的对象,EL表达式将会访问类的toString方法并将返回值进行输出。
当然我们还可以很方便的使用EL表达式获得对象的属性值:代码演示:EL表达式获取对象属性值<body><%User user = new User();user.setAddress("巴西");user.setName("小黑");pageContext.setAttribute("user",user);%>${}<br> ①${user.address }<br></body>代码解析:①通过点“.”运算符来获取对象user中的name属性的值。
再次需要注意要访问的属性名不一定是和对象的属性名相同,而是要和get方法的方法名去掉“get”后的名字相同。
图6 使用EL表达式访问对象属性在访问属性时不仅可以使用点“.”运算符,还可以使用“[]”将属性包含其中。
代码演示:使用EL表达式访问对象属性<body><%User user = new User();user.setAddress("巴西");user.setName("小黑");pageContext.setAttribute("user",user);%>${user["name"]}<br>${user["address"] }<br></body>注意在使用“[]”包含属性时需要将属性使用双引号引起来。