黑马程序员技术交流社区
标题:
EL表达式&JSTL标准标签库
[打印本页]
作者:
哥.兜裡有煙
时间:
2018-1-26 11:42
标题:
EL表达式&JSTL标准标签库
本帖最后由 哥.兜裡有煙 于 2018-1-26 11:57 编辑
EL的概述
1.什么是EL?
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让 Jsp的代码更加简化。
2.为什么学习EL?
简化JSP的代码,而且减少
<% %>
3.使用EL表达式
语法:
${ EL表达式 }
4.EL的功能:
4.1 获取数据:(JSP的四个域)
4.2 执行运算:
4.3 操作WEB开发的常用的对象:
4.4 调用Java中方法:--很少用
.
EL获取数据:
1.前提:
数据必须存储在域对象中
2.格式:
2.1 普通数据 :
${ 名字 }
2.2 有索引数据 :
${ 名字[索引] }
2.3 有属性数据 :
${ 名字.属性 }
2.4 属性特殊 :
${ 名字["属性"] }
EL执行运算:
1.
EL
执行算数运算
${ n1 + n2 + n3 }
2.
EL
执行逻辑运算
${ n1<n2 && n3 < n4 } -- ${ n1<n2 and n3 < n4 }
${ n1<n2 || n3 < n4 } -- ${ n1<n2 or n3 < n4 }
${ !(n1 < n2) } -- ${ not(n1<n2) }
3.
EL
执行关系运算
${ n1 < n2 } -- ${ n1 lt n2 } <!-- less than -->
${ n1 > n2 } -- ${ n1 gt n2 } <!-- great than -->
${ n1 <= n2 } -- ${ n1 le n2 } <!-- less equal -->
${ n1 >= n2 } -- ${ n1 ge n2 } <!-- great equal -->
${ n1 == n2 } -- ${ n1 eq n2 } <!-- equal -->
4.
EL
执行三元运算
${ n1 < n2 ? "正确":"错误" }
5.empty运算(判断为不为空)
${ user == null } --
${ empty user }
${ user != null } --
${ not empty user }
EL
操作
WEB
开发的常用对象
11
个
1.
pageScope, requestScope, sessionScope, applicationScope
- 获取JSP中域中的数据
2.
param, paramValues
- 接收参数.
${ param.id }
${ param.name }
${ paramValues.hobby[0] }
${ paramValues.hobby[1] }
3.
header, headerValues
- 获取请求头信息
${ header["User-Agent"] }
4.
initParam
- 获取全局初始化参数
${ initParam.username }
5.
cookie
- WEB开发中
cookie
//获取cookie对象
${ cookie.名字.value }
6.
pageContext
- WEB开发中的
pageContext
.//获取其他的对象
IP地址:${ pageContext.request.remoteAddr }
工程路径:${ pageContext.request.contextPath }
JSTL
JSTL的概述:
1.什么是JSTL:
JSP的标准标签库
2.为什么学习JSTL:
JSTL和EL结合 替换页面中<%%>
3.JSTL版本:
3.1 JSTL1.0
:不支持EL表达式.
3.2 JSTL1.1 和 1.2
:支持EL表达式.
4.JSTL的标签库:包含了五类标签.
core(核心标签),
fmt(国际化标签),
xml(XML标签),
sql(SQL标签),
fn(JSTL提供EL函数库
5.使用JSTL:
5.1 引入JSTL的相关的jar包.
5.1.1
jstl.jar
5.1.2
standard.jar
5.2 在页面中引入标签库.<%@ taglib uri=”” prefix=”” %>
JSTL
的核心标签的用法
1. <c:if>标签
< c : if test = "n1 > n2 ">
这是您第一次访问本网站,欢迎您!
</c:if>
test: 表达式 (判断条件)
中间为: 要输出的内容
判断条件成立:中间要输出的内容会输出,显示内容
判断条件不成立:中间的输入内容不会输出,不显示
2.<c:forEach>标签
2.1 遍历数组
<%
String[] arrs = {"李旭华","李冠希","董阳阳"};
pageContext.setAttribute("arrs", arrs)
%>
<c:forEach var="i" items="${ arrs }">
${ i }
</c:forEach>
2.2 遍历List集合
<%
List list = new ArrayList();
list.add("李旭华");
list.add("李冠希");
list.add("董阳阳");
pageContext.setAttribute("list", list);
%>
<c:forEach var="i" items="${ list }">
${ i }
</c:forEach>
2.3 遍历Map集合
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aaa","李旭华");
map.put("bbb","李冠希");
map.put("ccc","董阳阳");
pageContext.setAttribute("map", map);
%>
<c:forEach var="entry" items="${ map }">
${ entry.key }-${ entry.value }
</c:forEach>
2.4 遍历从1到10
<c:forEach var="i" begin="1" end="10" step="2">
${ i }
</c:forEach>
2.5 遍历从100到300
<c:forEach var="i" begin="100" end="300" step="5" varStatus="status">
<c:if test="${ status.count % 3 == 0 }">
<font color="red">${ i }</font>
</c:if>
<c:if test="${ status.count % 3 != 0 }">
${ i }
</c:if>
</c:forEach>
8895DFD39CC14376B6EA2F1379BF894F.jpg
(54.5 KB, 下载次数: 25)
下载附件
2018-1-26 11:40 上传
JSTL的提供EL的函数库
${ fn:contains("Hello World","Hello") }
${ fn:length("HelloWorld") }
${ fn:toLowerCase("ABCDE") }
<c:forEach var="i" items='${ fn:split("a-b-c-d","-") }'>
${ i }
</c:forEach>
在使用<c:forEach>标签时,需要注意如下几点说明:
如果指定 begin 属性,其值必须大于或等于零;
如果指定步长(step 属性),其值必须大于或等于 1;
作者:
Yin灬Yan
时间:
2018-1-27 19:45
我来占层楼啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2