完美登录程序--JSTL标签与EL表达式
<body> ${} </body>
从pageContext中获取数据 从session中获取数据 从ServletContext中获取数据
• 如果不显示指定获取数据所在的范围,如
• 默认从pageScope开始寻找,经过requestScope,sessionScope最 后到applicationScope.假如在过程中找到myBean则返回该对 象,否则返回null
Servlet & JSP 技术
• 登录程序——JSTL标签与EL表达式 • 姜晓刚 jiang.xiaogang@
本次课程目标
> EL表达式 > JSTL标签 > 标准标签
2
EL表达式
• EL表达式全称:Expression Language • EL表达式的语法十分简单,以${启始,}结束,中间部 分为表达式部分 • 不同Scriptlet的表达式,EL表达式更方便和简洁 • EL表达式可以用于
• 如果属性名是以变量形式存放,那么也必须使用[ ]
<body> <%String data=“name”; pageContext.setAttribute(“data",data); %> ${requestScope.myBean[data]} </body>
requestScope
• requestScope是指定从request中获取数据 • 除此之外还有
EL表达式结果的类型转换
<%@ page language="java" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> <% String null_msg=null; String number_msg="10"; pageContext.setAttribute("null_msg",null_msg); pageContext.setAttribute("number_msg",number_msg); %> ${null_msg+10}<br> ${number_msg+20}<br> ${number_msg+“30"} </body> </html>
• 而使用EL表达式则简单很多
<body> ${} </body>
• 也可以使用下面的形式
<body> ${requestScope.myBean[“name”]} </body>
关于.和[ ]
• 如果对象是个容器,那么可以使用[ ]作为索引器
<body> ${requestScope.beanArray[0].name} </body>
> > > >
获取页面表单提交的参数 进行数学与逻辑运算计算出结果 获取属性中的对象 获取JavaBean的属性值
EL表达式操作对象
• 一个用于存放数据的对象需要显示在页面上,前 面我们可以通过Scriptlet取得
<body> <%=((MyBean)request.getAttribute(“myBean”)).getName()%> </body>
通过EL表达式获取表单参数-register.jsp
<%@ page language="java" pageEncoding="GBK"%> <%@ taglib uri="/jsp/jstl/core" prefix="c"%> <%@ taglib uri="/jsp/jstl/fmt" prefix="f" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <f:requestEncoding value="GBK"/> </head> <body> <h1 align="center">注册信息</h1> <p>姓名:${}</p> <p>密码:${param.pwd}</p> <p>性别:${param.sex}</p> <p>年龄:${param.age}</p> <p>爱好: <c:forEach items="${paramValues.hobby}" var="hb"> ${hb}     </c:forEach> </p> <p>简介:${param.txt}</p> </body> </html>
EL表达式的数学和逻辑运算
<%@ page language="java" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title></title></head> <body> <table border="1"> <tr><th>EL表达式</th><th>结果</th></tr> <tr><td>\${1+1}</td><td>${1+1}</td></tr> <tr><td>\${24-2.4}</td><td>${24-2.4}</td></tr> <tr><td>\${9*9}</td><td>${9*9}</td></tr> <tr><td>\${80/9}或\${81 div 9}</td><td>${80/9},${81 div 9}</td></tr> <tr><td>\${21%8}或\${21 mod 8}</td><td>${21%8},${21 mod 8}</td></tr> <tr><td>\${5==5}或\${5 eq 4}</td><td>${5==5},${5 eq 4}</td></tr> <tr><td>\${5!=5}或\${5 ne 4}</td><td>${5!=5},${5 ne 4}</td></tr> <tr><td>\${3<5}或\${5 lt 3}</td><td>${3<5},${5 lt 3}</td></tr> <tr><td>\${3>5}或\${5 gt 3}</td><td>${3>5},${5 gt 3}</td></tr> <tr><td>\${3<=5}或\${5 le 3}</td><td>${3<=5},${5 le 3}</td></tr> <tr><td>\${3>=5}或\${5 ge 3}</td><td>${3>=5},${5 ge 3}</td></tr> <tr><td>\${true && flase}或\${true and true}</td><td>${true && flase},${true and true}</td></tr> <tr><td>\${true || flase}或\${true or true}</td><td>${true || flase},${true or true}</td></tr> <tr><td>\${!true}或\${not false}</td><td>${!true},${not }</td></tr> <tr><td>\${2>1?"语句1":"语句2"}</td><td>${2>1?"语句1":"语句2"}</td></tr> <tr><td>\${empty object}</td><td>${empty object}</td></tr> </table> </body> </html>
EL表达式
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Tip3: EL表达式-功能介绍 Tip3: EL表达式- 表达式
如果EL表达式: “${表达式}”中不是标识符, 而是一个表达式的话,EL表达式中可以执行 基本的关系运算、逻辑运算和算术运算。 在EL表达式中我们也可以使用 ${beanName.address.country}的形式来访问 JavaBean对象中的属性对象中的属性,以及 可以使用${list[0]}的形式来访问有序集合中的 元素。
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Tip17:EL函数-fn:trim Tip17:EL函数- 函数
fn:trim函数删除一个字符串的首尾的空格,并返回删 除空格后的结果字符串,它接收一个字符串类型的参 数。需要注意的是,fn:trim函数不能删除字符串中间 位置的空格。 • 例如,fn:trim(" www.it ") 的返回值为字 符串“www.it ”。
Tip13: 开发EL Function注意事项 Tip13:
编写完标签库描述文件后,需要将它放置到<EL应用 程序的主目录>\WEB-INF目录中或WEB-INF目录下的 除了classes和lib目录之外的任意子目录中。 TLD文件中的<uri> 元素用指定该TLD文件的URI,在 JSP文件中需要通过这个URI来引入该标签库描述文 件。 <function>元素用于描述一个EL自定义函数,其中:
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Tip10: 运算符 Tip10:
算术运算符和其它运算符:empty运算符用于检查变量是否为 null或“空”,结果是布尔类型,这个运算符主要配合JSTL使用。
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表达式总是用大括号括起,而且前面有一个美元符($)前缀:${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}②完成效果如下所示:图表单提交之前的效果实验内容或上机图表单提交后前的效果调试程序。
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等,这
JSTL的用法
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。
在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。
JSTL标签库可分为5类:❑核心标签库❑I18N格式化标签库❑SQL标签库❑XML标签库❑函数标签库本章将对这些内容一一讲述。
9.1 核心标签库JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
使用这些标签能够完成JSP页面的基本功能,减少编码工作。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签。
在JSP页面引入核心标签库的代码为:<%@ taglib prefix="c" uri="/jsp/jstl/core" %>下面将按照功能分类,分别讲解每个标签的功能和使用方式。
9.2.1 表达式控制标签表达式控制分类中包括<c:out>、<c:set>、<c:remove>、<c:chtch>4个标签,现在分别介绍它们的功能和语法。
1.<c:out>标签【功能】:用来显示数据对象(字符串、表达式)的内容或结果。
在使用Java脚本输出时常使用的方式为:<% out.println(“字符串”)%><%=表达式%>在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
第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表达式使用之类switch语句
el表达式使用之类switch语句el表达式主要用于JavaWeb开发中的JSP页面中,用于在页面上动态展示数据。
在el表达式中,可以使用类似于switch语句的功能来实现多条件判断。
本文将以el表达式使用之类switch语句为主题,进行详细的解释。
一、el表达式简介1. el表达式是什么?el表达式是一种用于在JSP页面中动态访问数据的语法标记,它可以在JSP页面中直接引用Java代码中的变量和对象,并将其显示在页面上。
2. el表达式的语法规则el表达式的基本语法是{表达式},其中表达式可以是变量、属性、方法等。
二、el表达式的使用1. 引入el表达式的方式要在JSP页面中使用el表达式,需要在页面中引入el表达式的标准库。
可以通过在JSP页面的头部引入如下代码:jsp<%@ page language="java" contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri=" %>引入标准库后,就可以开始使用el表达式了。
2. el表达式中的变量使用el表达式可以直接访问Java中的变量。
比如,有一个名为name的String 型变量,在JSP页面中可以通过{name}来展示其值。
3. el表达式中的属性使用el表达式可以直接访问Java对象的属性。
比如,有一个名为person的Person对象,包含name和age两个属性,在JSP页面中可以通过{}和{person.age}来展示其属性值。
4. el表达式中的方法使用el表达式可以直接调用Java对象的方法。
比如,有一个名为person的Person对象,包含一个getName()方法,在JSP页面中可以通过{person.getName()}来展示其返回值。
