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表达式
EL表达式总结EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。
表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性。
点号操作符允许你使用一个Map键或一个bean性质名来访问值,例如,使用${foo.bar}可以得到bar的值,在此,bar是Map foo的Map键名,或者是bean foo的一个性质。
放在点号操作符右边的东西必须遵循Java的标识符命名规则!(换句话说,必须以一个字母、下划线或美元符开头,第一个字符后面可以有数字,但不能有其他字符)。
点号右边只能放合法的Java标识符。
例如,${foo.1}键就不可以。
[]操作符比点号功能更强大,因为利用[]可以访问数组和List,可以把包含命名变量的表达式放在中括号里,而且可以做任意层次的嵌套,只要你受得了。
例如,如果musicList是一个ArrayList,可以用${musicList[0]}或${musicList[“0”]}来访问列表的第一个值。
EL并不关心列表索引加不加引号。
如果中括号里的内容没有用引号引起来,容器就会进行计算。
如果确实放在引号里,而且不是一个数组或List的索引,容器就会把它看作是性质或键的直接命名。
除了一个EL隐式对象(PageContext)外,其他EL隐式对象都是Map。
从这些隐式对象可以得到任意4个作用域中的属性、请求参数值、首部值、 cookie值和上下文初始化参数。
非映射的隐式对象是pageContext,它是PageContext对象的一个引用。
不要把隐式EL作用域对象(属性的Map)与属性所绑定的对象混为一谈。
换句话说,不要把requestScope隐式对象与具体的JSP隐式对象 request混淆。
访问请求对象只有一条路,这就是通过pageContext隐式对象来访问(不过,想从请求得到的一些东西通过其他EL隐式对象也可以得到,包括param/paramValues、header/headerValues和cookie)。
EL表达式与JSTL
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及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}②完成效果如下所示:图表单提交之前的效果实验内容或上机图表单提交后前的效果调试程序。
第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等,这
第09章 使用EL与JSTL
${msg}
</body> </html>
5
EL也是既可以直接写在HTML的标签内部, 也可以写在某个标签的属性中,例如: <% String s="index.jsp"; request.setAttribute("url", s); %>
<a href="${url}">这是一个超级链接,链接到首页</a> 实际输出: <a href="index.jsp">这是一个超级链接,链接到首页</a>
</body>
18
使用“.”操作符输出JavaBean类型对象的信息
19
“[ ]”操作符
如果从作用域中取出的对象不是映射类型 (Map)或者不是JavaBean的类型,需要使 用“[ ]”操作符处理。
“[ ]”操作符可以处理: 映射类型(Map)对象 JavaBean类型对象 数组类型对象 列表类型(List)对象 (EL3.jsp) (EL4.jsp) (EL5.jsp) (EL6.jsp)
${'a' < 'b'} ${"hip" > "hit"} ${'4' > 3}
false
true false true
10
空运算符
空运算符(empty)用来判断参数是不是null、 空字符串、空数组、空Map或者空集合,如 果是则返回true,否则返回false
EL表达式 ${empty null} ${empty ""} 结果 true true
el表达式详解
在Spring 中,所有逻辑处理单元返回的结果数据,都将作为Attribute 被放
置到HttpServletRequest 对象中返回(具体实现可参见Spring 源码中
org.springframework.web.servlet.view.InternalResourceView.
4) 条件标签>
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得
其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得
这些值。
3)initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
属性范围在EL中的名称
EL表达式2
第一种EL表达式讲解EL表达式:1. EL表达式用于获取数据,在JSP页面中使用${标识符}。
通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。
如果域对象中不存在标识符所对应的对象,则返回结果为””(注意,不是null)。
如:${test}的功能为pageContext.findAttribute(“test”);findAttribute查找顺序:pageContext\request\session\applation。
2. 可以使用${customerBean.address}的形式来访问JavaBean对象的属性。
如:${}的功能为pageContext.findAttribute(“student”).getName();3. 结合JSTL标签,EL表达式也可轻松获取各种集合中的元素。
如:<cc:forEach var="temp" items="${listobj}"><cc:out value="${temp}"></cc:out></cc:forEach>4. EL表达式也可使用类如${1==1}的形式进行简单的逻辑判断。
如:<cc:if test="${user==null}">JSTL标签库:1. JSTL是sun公司开发的一套标签库,使用JSTL可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。
2. 在页面中使用JSTL标签需完成以下2个步骤:a) 导入jstl.jar和standerd.jar这两个JSTL的jar文件。
b) 在JSP页面中使用<%@ tablib url=“”prifix=“”%>元素导入标签库。
3. JSTL标签库中常用标签:<c:foreach var=“” items=“”><c:if test=“”>下午我们独立完成网站的登录功能:用户注册、登录(自动生成验证码、自动登录),下面粘贴出典型的代码片段:1. 登录部分,用于生成验证码功能的Servlet:import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Identify extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//取出随机数,并放到session中用于验证String id = Identifior.getRandom();request.getSession().setAttribute("identify", id);//使用AWT的BufferedImage将验证码以图片格式写出到网页上BufferedImage bi = new BufferedImage(60, 25, BufferedImage.TYPE_3BYTE_BGR);Graphics g = bi.getGraphics();g.setColor(Color.YELLOW);g.setFont(new Font("宋体", Font.BOLD, 23));g.drawString(id, 0, 24);ImageIO.write(bi, "jpg", response.getOutputStream());}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}取随机数据,然后转成十六进制并返回前四位:/*** 用于生成随机数验证码* @author Administrator**/public class Identifior {private static Random random = new Random();/*** 取随机数* @return*/public static String getRandom(){return Integer.toHexString(random.nextInt()).substring(0, 4);}}校验用户登录功能的Servlet(包含自动登录):import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.dom4j.DocumentException;import erBean;import erDaoXml;public class LoginServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = null;String password = null;String oid = null;String id = null;boolean isauto = false;//是否存在Cookie,如果存在刚查找用户信息Cookie[] cookies = request.getCookies();for(int i=0; i < cookies.length && (name == null || password==null); i++){ if(cookies[i].getName().equals("name")){name = cookies[i].getValue();isauto = true;}if(cookies[i].getName().equals("password")){password = cookies[i].getValue();isauto = true;}}//取出用户名和密码参数if(!isauto){name = request.getParameter("name");password = request.getParameter("password");oid = (String) request.getSession().getAttribute("identify");id = request.getParameter("identify");}//创建DAO,并根据用户名和密码查找用户。
菜鸟教程el表达式
菜鸟教程el表达式EL表达式是JavaServer Pages(JSP)技术中的一种表达式语言,它可以在JSP页面中嵌入Java代码,实现动态数据的显示和处理。
EL表达式的语法简单易懂,使用方便,是JSP开发中不可或缺的一部分。
EL表达式的语法格式为${expression},其中expression是一个表达式,可以是变量、方法、属性等。
EL表达式可以用于获取请求参数、访问JavaBean属性、调用JavaBean方法等操作。
例如,${ername}可以获取请求参数中名为“username”的值,${}可以获取名为“user”的JavaBean的name属性值。
EL表达式还支持运算符和函数,可以进行算术运算、逻辑运算、比较运算等操作。
例如,${1+2}可以计算1+2的值,${empty list}可以判断list是否为空,${fn:length(list)}可以调用函数fn:length获取list的长度。
EL表达式的优点在于它可以简化JSP页面的代码,使页面更加清晰、易于维护。
使用EL表达式可以避免在JSP页面中编写大量的Java代码,减少代码量,提高开发效率。
此外,EL表达式还可以与JSTL标签库一起使用,实现更加强大的功能。
EL表达式的缺点在于它可能会导致安全问题。
由于EL表达式可以访问JavaBean的属性和方法,如果不加以限制,可能会导致恶意用户获取敏感信息或执行恶意代码。
因此,在使用EL表达式时,需要注意安全问题,对访问权限进行限制,避免安全漏洞的出现。
EL表达式是JSP开发中不可或缺的一部分,它可以简化代码、提高开发效率,但也需要注意安全问题。
在实际开发中,需要根据具体情况选择合适的EL表达式使用方式,确保代码的安全性和可维护性。
El表达式详解
El表达式详解在 JSP 页⾯中,使⽤标签库代替传统的 Java ⽚段语⾔来实现页⾯的显⽰逻辑已经不是新技术了,然⽽,由⾃定义标签很容易造成重复定义和⾮标准的实现。
鉴于此,出现了 JSTL ( JSP Standard Tag Library )。
⼤多数JSP 页⾯逻辑提供了实现的 JSTL 技术,该技术本⾝就是⼀个标签库。
Sun 公司 Java 规范标准的 JSTL 由 apache jakarta 组织负责维护。
作为开源的标准技术,它⼀直在不断地完善。
JSTL 的发布包有两个版本: Standard-1.0 Taglib 、 Standard-1.1 Taglib ,它们在使⽤时是不同的。
q Standard-1.0 Taglib ( JSTL1.0 )⽀持 Servlet2.3 和 JSP1.2 规范, Web 应⽤服务器 Tomcat4 ⽀持这些规范,⽽它的发布也在 Tomcat 4.1.24 测试通过了。
q Standard-1.1 Taglib ( JSTL1.1 )⽀持 Servlet2.4 和 JSP2.0 规范, Web 应⽤服务器 Tomcat5 ⽀持这些规范,它的发布在 Tomcat 5.0.3 测试通过了。
q 核⼼标签库:包含 Web 应⽤的常见⼯作,⽐如:循环、表达式赋值、基本输⼊输出等。
q 国际化标签库:⽤来格式化显⽰数据的⼯作,⽐如:对不同区域的⽇期格式化等。
q 数据库标签库:可以做访问数据库的⼯作。
q XML 标签库:⽤来访问 XML ⽂件的⼯作,这是 JSTL 标签库的⼀个特点。
q 函数标签库:⽤来读取已经定义的某个函数。
此外, JSTL 还提供了 EL 表达式语⾔( Expression Language )来进⾏辅助的⼯作。
JSTL 库由标签库和 EL 表达式语⾔两个部分组成。
EL 在 JSTL 1.0 规范中被引⼊,当时⽤来作为 Java 表达式来⼯作,⽽该表达式必须配合 JSTL 的标签库才能得到需要的结果。
jstl 数值型加法运算
jstl 数值型加法运算JSTL(JSP Standard Tag Library)是用于在JSP页面上进行数据处理和逻辑控制的标准标签库。
在JSTL中进行数值型加法运算可以通过使用 `<c:set>` 标签和 EL(Expression Language)来实现。
首先,我们可以使用 `<c:set>` 标签来创建一个变量并将数值赋给它,然后使用EL表达式来对这个变量进行加法运算。
例如:jsp.<c:set var="num1" value="10" />。
<c:set var="num2" value="5" />。
<c:set var="result" value="${num1 + num2}" />。
在这个例子中,我们首先使用 `<c:set>` 标签分别创建了两个变量 `num1` 和 `num2`,并分别赋予了它们数值 10 和 5。
然后,我们使用 `<c:set>` 标签再创建一个变量 `result`,并使用EL表达式 `${num1 + num2}` 对 `num1` 和 `num2` 进行加法运算,将结果赋给 `result` 变量。
除了使用 `<c:set>` 标签外,也可以直接在输出表达式中进行加法运算,例如:jsp.<%= 10 + 5 %>。
在这个例子中,`<%= %>` 用于输出表达式的结果,而 `10 +5` 则是进行了加法运算的部分。
总的来说,在JSTL中进行数值型加法运算可以通过 `<c:set>` 标签结合EL表达式来实现,也可以直接在输出表达式中进行加法运算。
希望这些信息能够帮助到你。
el表达式的用法2--遍历Map
JAVA标签库JSTL-EL表达式介绍使用配置手册Java JSTL 2010-09-18 15:40:36 阅读107 评论4 字号:大中小订阅JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。
但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL目前的最新版本为1.02,最终发布版为1.0。
JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。
标签库目前支持四种标签:Core支持JSP中的一些基本的操作;XML processing支持XML文档的处理;I18N capable formatting支持对JSP页面的国际化;Database access (SQL)支持JSP对数据库的操作。
版本要注意1.0.x和1.1.x两个版本,目前最新版分别为1.0.6和1.1.21.1版比1.0版多了fn标签库(常用的字符串操作在里面,特别是length、substring、等用于显示的函数)各个版本都可以在apache网站下载得到使用中注意的问题在仅支持JSP1.2规范的容器中,只能使用jstl 1.0版,所以fn就不能用了,很不爽。
${1 + 2}必面都要写在<c:out value='${1 + 2}' />里。
在支持JSP2.0规范的容器中,可以直接使用el表达式。
一些BUG在websphere 6.0(6.0.2.13版以前)中,有fn:length函数的BUG。
只有打补丁了。
在websphere 中,如<c:out value='${var == 0 ? "非" : "是" }' />这样的句子会出问题,tomcat下刚运行很好。
4.EL和JSTL
迭代forEach标签的使用
示例: <% List l=new ArrayList(); l.add(1); l.add(2); l.add(3); l.add(4); l.add(5); request.setAttribute("list",l);
%>
<c:forEach var="li" items="${requestScope.list}" begin="2" end="4" step="1" varStatus="a"> 值${li },索引${a.index },数量${a.count },是否是第一个${a.first },是否是最 后一个,${st } <br/> </c:forEach>
FALSE表示不禁止.JSP2.0中默认的启用EL语言.
EL取值方法
EL支持以下两种操作 1. 使用.操作符来获得有名字的属性。
${ername}表明获取user的username属性
2. 使用[]操作符来获得有名字或按数字排列的属性。 ${user["username"]}和表达式${ername }含义相同
EL和JSTL
1. EL 2. JSTL
EL
E L(Expression Language) 目的:为了使JSP写起来更加简单。 不使用java来访问java对象或变量的一种方法。
语法: ${EL表达式} 美元符号+大括号
<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.
el标签用法
el标签用法一、EL表达式基本用法1. 在JSP页面中输出变量值- 在JSP中,如果有一个JavaBean,例如一个名为 `User` 的类,里面有一个属性 `name`,在JSP页面中设置了这个JavaBean。
在JSP页面中就可以这样使用EL表达式来获取这个属性的值:- 假设在JSP中有 `<% User user = new User();user.setName("John"); pageContext.setAttribute("user", user); %>`,那么在页面中可以用 `${}`,这就像是打开了一个魔法盒子,直接就能看到里面的宝贝(变量的值),多么方便呀!就像你知道有个宝藏藏在某个地方,用EL表达式就能轻松找到它。
- 再比如,如果有一个List类型的变量 `fruits`,里面存放着各种水果的名字,在JSP页面中设置了这个变量。
如果想获取列表中的第一个元素,可以用 `${fruits[0]}`。
这就好比从一篮子水果中,你可以轻松地用手(EL表达式)拿出最上面的那个水果(第一个元素)。
2. 进行简单的运算- EL表达式可以进行数学运算。
例如,如果有两个变量 `num1` 和`num2`,在JSP页面中分别被设置为5和3。
那么 `${num1 + num2}` 就会得到8。
这就像你有5个苹果和3个苹果,用EL表达式一下子就能算出总共有多少个苹果,是不是很神奇呢?- 也可以进行比较运算。
如果有一个变量 `age`,在JSP页面中被设置为18。
那么 `${age >= 18? '成年人' : '未成年人'}`,就像一个智能的判断器,根据年龄的值来判断是成年人还是未成年人。
这可比我们自己在JSP中写一堆Java代码来判断要简洁得多呀!3. 访问对象的属性和方法(有限制的方法调用)- 对于对象的属性访问,如前面提到的JavaBean的属性访问。
EL表达式与JSTL标签map遍历varStatus属性下标使用
EL表达式与JSTL标签map遍历varStatus属性下标使⽤在JSP页⾯开发中,JSTL标签库迭代标签<c:forEach>为我们迭代遍历数组集合提供了⼀种选择。
遍历过程中varStatus属性为我们遍历集合提升了很⼤操作空间。
贴⼀下具体使⽤:需求:有⼀map集合,⽣成标准table,三个元素⼀换⾏<c:forEach var="entry" items="${map}" begin="0" end="${fn:length(map)}" varStatus="status"><c:choose><c:when test="${(status.index)%3==0}"><tr><td>${entry.key}:${entry.value}</td></c:when><c:when test="${fn:length(map) == status.count || (status.index)%3==2}"><td>${entry.key}:${entry.value}</td></tr></c:when><c:otherwise><td>${entry.key}:${entry.value}</td></c:otherwise></c:choose></c:forEach>说明:1、items:是集合,⽤EL表达式;2、var:变量名,存放items ,代表集合中每⼀条数据3、varStatus: 显⽰循环状态的变量,通过下⾯⼏个属性,可以⽅便使⽤迭代索引值,进⾏特殊判断业务:①index:从0开始; 显⽰当前迭代的索引值②count:元素位置,从1开始; 显⽰当前迭代显⽰的⾏位置。
el表达式foreach用法跳出循环
el表达式foreach用法跳出循环在EL表达式中,没有直接提供跳出循环的语句或关键字。
EL表达式主要用于在JSP页面中访问和操作数据,它不支持像Java中的控制流语句。
如果你需要在JSP页面中实现类似跳出循环的功能,你可以考虑使用JSTL (JavaServer Pages Standard Tag Library)中的标签库。
JSTL提供了用于控制流程的标签,例如`<c:forEach>`标签用于循环遍历集合或数组,并且提供了`<c:break>`标签来跳出循环。
下面是一个示例,演示如何使用JSTL标签库中的`<c:forEach>`和`<c:break>`标签来实现跳出循环的功能:```jsp<% taglib prefix="c" uri=" %><c:forEach var="item" items="${list}"><c:if test="${condition}"><c:break /></c:if><!-- 处理每个项的逻辑 --></c:forEach>```在上面的示例中,`<c:forEach>`标签用于遍历名为`list`的集合或数组。
在循环体内,使用`<c:if>`标签来判断是否满足跳出循环的条件。
如果条件满足,则使用`<c:break>`标签来跳出循环。
请注意,上述示例中的`${list}`和`${condition}`是EL表达式的示例,你需要根据你的实际情况替换为相应的变量或表达式。
实验7-表达式语言与JSTL
实验7(1)表达式语言的使用一、实验目的1. 了解表达式语言的功能;2. 掌握表达式语言的使用。
二、实验原理表达式语言(EL)是JSP 2.0新增的功能。
它是一种简洁的数据访问语言,通过它可以在JSP页面中方便地访问应用程序数据,无需使用JSP表达式(<%=和%>)。
EL的目标是使动态网页的设计、开发和维护更加容易。
EL的特点是访问数据可以使用点(.)运算符或方括号([])运算符;可以访问隐含对象;有自己的运算符构造表达式;可以使用Java语言编写的函数等。
三、实验容与步骤(一)表达式语言运算符的使用下面的JSP页面operator.jsp演示了EL运算符的使用:<% page contentType="text/html;charset=gb2312" %><html><head><title>JSP 2.0 Expression Language - Basic Arithmetic</title></head><body><h1>JSP 2.0 表达式语言- 基本算术运算符</h1><hr>该例说明了基本的表达式语言的算术运算符的使用,其中包括加(+),减(-), 乘(*),除(/ 或div), 取余(% 或mod)。
<br><blockquote><code><table border="1"><thead><td><b>EL 表达式</b></td><td><b>结果</b></td></thead><tr><td>\${1}</td> <td>${1}</td> </tr><tr> <td>\${1 + 2}</td> <td>${1 + 2}</td> </tr><tr> <td>\${1.2 + 2.3}</td> <td>${1.2 + 2.3}</td> </tr><tr> <td>\${1.2E4 + 1.4}</td> <td>${1.2E4 + 1.4}</td> </tr><tr> <td>\${-4 - 2}</td> <td>${-4 - 2}</td> </tr><tr> <td>\${21 * 2}</td> <td>${21 * 2}</td> </tr><tr> <td>\${3/4}</td> <td>${3/4}</td> </tr><tr> <td>\${3 div 4}</td> <td>${3 div 4}</td> </tr><tr> <td>\${3/0}</td> <td>${3/0}</td> </tr><tr> <td>\${10%4}</td> <td>${10%4}</td> </tr><tr> <td>\${10 mod 4}</td> <td>${10 mod 4}</td> </tr><tr> <td>\${(1==2) ? 3 : 4}</td> <td>${(1==2) ? 3 : 4}</td> </tr></table></code></blockquote></body></html>图7.1 operater.jsp页面的运行结果(二)访问作用域变量编写一个名为EmployeeBean的JavaBean,其中包括3个属性eno表示雇员号、ename表示雇员名和ecompany表示雇员公司名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EL表达式与JSTLEL语法EL的语法很简单,他最大的特点就是使用上很方便例:${er.sex}所有EL都是以 ${ 为起始、以} 为结尾的。
上述EL范例的意思是:从Session取得用户的性别。
如果使用之前JSP代码的写法如下:<%User user = (User)session.getAttribute("user");String sex = user.getSex( );%>两者相比较之下,可以发现EL的语法比传统JSP代码更为方便、简洁。
EL提供 . 和 [ ] 两种运算符来存取数据,[ ]可以访问集合或者是数组的元素、Bean的属性。
下列两者所代表的意思是一样的,但是需要保证要取得对象的那个的属性有相应的setXxx()和getXxx()方法才行。
例:${er.sex}等于${er["sex"]}. 和 [ ] 也可以同时混合使用,如下:${sessionScope.shoppingCart[0].price}返回结果为shoppingCart中第一项物品的价格。
在EL中,字符串既可以使用"abc",可以使用'abc'。
EL运算符EL的算术运算符和Java中的运算符的大致相同,优先级也相同。
注意:'+' 运算符不会连接字符串了,他只用于加法运算。
EL关系运算符有以下六个运算符关系运算符说明范例结果= = 或 eq | 等于 |${ 5 = = 5 } 或 ${ 5 eq 5 } | true!= 或 ne | 不等于 |${ 5 != 5 } 或 ${ 5 ne 5 } | false< 或 lt | 小于 |${ 3 < 5 }或 ${ 3 lt 5 } | true> 或 gt | 大于 |${ 3 > 5 }或 ${ 3 gt 5 } | false<= 或 le | 小于等于 |${ 3 <= 5 }或 ${ 3 le 5 } | true>= 或 ge | 大于等于 |${ 3 >= 5 }或 ${ 3 ge 5 } | falseempty运算符Empty运算符主要用来判断值是否为null或空的,例如:${ empty }接下来说明Empty运算符的规则:{empty} A如果A为null时,返回true如果A不存在时,返回true如果A为空字符串时,返回true如果A为空数组时,返回true如果A为空的Map时,返回true如果A为空的Collection时,返回true否则,返回false注意:在使用EL关系运算符时,不能够写成:${param.password1} = = ${param.password2}或者${ ${param.password1 } = = ${ param.password2 } }而应写成${ param.password1 = = param.password2 }使用EL从表单中取得数据与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
一般而言,我们在取得用户的请求参数时,可以利用下列方法:request.getParameter(String name)request.getParameterValues(String name)在EL中则可以使用param和paramValues两者来取得数据。
${}${}可以取得所有同名参数的值${paramValues.hobbies[0]}可以通过指定下标来访问特定的参数的值这里param的功能和request.getParameter(String name)相同,而paramValues 和request.getParameterValues(String name)相同。
如果用户填了一个form,form名称有为username的文本框,则我们就可以使用${ername}来取得用户填入文本框的值。
EL函数EL中使用函数要写一个要使用到方法的类,然后在配置xxx.tld文件,然后在JSP中使用时和JSP的自定义标签相似。
xxx.tld中的配置<function><name>reverse</name><!--函数名--><function-class>jsp2.examples.el.Functions</function-class><!--函数所在的类--><function-signature>ng.Stringreverse( ng.String )</function-signature><!--函数原型,也就是函数的返回值类型,函数名,参数表,注意一定要写类型的全名--></function>使用EL函数的写法${sn:upper('abc')}注意:在定义EL函数时,都必须为公开静态(public static)EL的隐含对象EL也可以使用内置对象中设置的属性,需要使用特定的EL内置对象属性范围 | 在EL中的对象Page | pageScopeRequest | requestScopeSession | sessionScopeApplication | applicationScopeEL中使用内置对象的属性${er}等价于<%request.getAttribute("user")%>如果不写出特定的范围,那就会在不同的范围间进行搜索了例:{user}(user是在request范围 request.setAttribute("user",user))也就等于${er}<%request.getAttribute("user")%>EL的隐含对象对象类型说明PageContext | javax.servlet.ServletContext |表示此JSP的PageContext-----------------------------------------------------------------------------------PageScope | java.util.Map |取得Page范围的属性名称所对应的值-------------------------------------------------------------------------------------RequestScope | java.util.Map |取得Request范围的属性名称所对应的值-------------------------------------------------------------------------------------sessionScope | java.util.Map |取得Session范围的属性名称所对应的值-------------------------------------------------------------------------------------applicationScope | java.util.Map |取得Application范围的属称所对应的值-------------------------------------------------------------------------------------param | java.util.Map |如同ServletRequest.getParameter(String | |name)返回String类型的值----------------------------------------------------------------------------------------paramValues | java.util.Map |如同ServletRequest.getParameterValues | |(String name)。
返回String []类型的值-----------------------------------------------------------------------------------------header | java.util.Map |如同ServletRequest.getHeader(Stringname) | |返回String类型的值------------------------------------------------------------------------------------------headerValues | java.util.Map |如同ServletRequest.getHeaders(Stringname) | |。
返回String []类型的值------------------------------------------------------------------------------------------cookie | java.util.Map |如同HttpServletRequest.getCookies( )------------------------------------------------------------------------------------------initParam | java.util.Map |如同ServletContext.getInitParameter(String | |name)。
返回String类型的值-------------------------------------------------------------------------------------------cookie对象所谓的cookie是一个小小的文本文件,它是以key、value的方式将Session Tracking的内容记录在这个文本文件内,这个文本文件通常存在于浏览器的暂存区内。
JSTL并没有提供设定cookie的动作,因为这个动作通常都是后端开发者必须去做的事情,而不是交给前端的开发者。
如果我们在cookie中设定一个名称为userCountry的值,那么可以使用${erCountry}来取得它。