EL和JSTL简化页面中的尖括号
expression language表达式语言
EL的语法:
${ EL表达式 }
"${}" 大括号与引号中间不能由空格
EL的功能:
1.获取数据JSP的四个域
${ pageScope.变量名 }如果没有找到会返回""
...
${ 变量名 }该功能类似于findAttribute(变量名)(从小范围域到大范围域找)
如果变量是一个数组 就用 ${ 数组变量名[0] }...
如果变量是一个集合 就用 ${ 集合名[0] }..
如果是一个Map集合,就用${ 集合名.key名 }有索引就用[] 属性用. ${ 集合名[key名] }
如果属性名中包含特殊字符(.)时 必须使用方括号(例如map中的key包含".")
2.执行运算
执行算数运算,逻辑运算,不能执行位运算
逻辑运算中除了 < > <= >= == 还可以用
lt gt le小于等于 ge大于等于 eq等于
执行关系运算
${ n1<n2 && n2<n3}等价于 and
|| or
! not
执行三元运算
${ n1<n2?"正确":"错误" }
判断一个对象(user)是否为空
${ empty user }
${ not empty user }
3.操作web开发的常用对象(EL的内置对象)
11个常用对象:
pageScope
requestScope
sessionScope
applicationScope
成对出现
param
paramValues
header 获取请求头 ${ header["User-agent"] };
headerValues--获取请求头信息
initParam --获取全局初始化参数(web.xml中配置的全局参数)
cookie --web开发中cookie
${ cookie.cookie名称.value }
*pageContext --web开发中的pageContext(EL中无法直接获得request,通过他可以获取其他8个常用的 JSP内置对象)
${ pageContext.request.remoteAddr }获取当前前访问者的ip
${ pageContext.request.contextPath }获取工程名
4.java中的方法(一般不用)
JSTL: JSP Standard Tag Library
JSP 标准 标签库
1.0 不支持EL
1.1 或者 1.2版本 支持EL
JSTL与EL 可以替换 jsp中的尖括号
JSTL的标签库:
五类标签:
core(核心标签)
fmt(国际化标签)
xml(XML标签)
sql(sql标签)
fn(JSTL提供的函数)
使用JSTL:
引入JSTL相关的jar包
在页面中引入标签库
c.tld中的url
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:if test="条件语句"> 要执行的语句 </c:if>如果满足条件 该标签下的就会执行
JSTL中没有else
<c:if test="" var="变量名" scope="域名"></c:if>
将Test的结果 赋值给变量名,并存储在域名中
<c:set var="" value="" scope=""></c:set>向哪个域中存值
<c:out value=""></c:out>
<c:out value="" default=""></c:out> default有值就直接输出value,没有值就输出default
<c:out value="" escapeXml=""></c:out> 是否转义,默认转义,value中如果时标签就设置为false
<c:forEach>
遍历数组
<c:forEach var="遍历结果" items="${ 要遍历的数组 }">
${ i }
</c:forEach>
遍历集合
<c:forEach var="集合元素" items="${ 集合名称 }">
</c:forEach>
map集合的遍历
<c:forEach var="元素的键值对集合(entry)" items="${ 集合名称 }">
${ entry.key } - ${ entry.value }
</c:forEach>
遍历1-10 1,2,3...
<c:forEach var="i" begin="1" end="10">
${ i }
</c:forEach>
遍历1-10 1,3,5...
<c:forEach var="i" begin="1" end="10" step="2">
${ i }
</c:forEach>
<c:forEach var="i" begin="1" end="10" step="2" varStatus="name">name随便取
varStatus里面有 count个数(从1开始) index 有下标的数据的下标(如果是增强for就是索引从0开始,如果是普通for就是i)
<c:if test="name.count%3==0"
<font color="red"> ${ i } </font>
</c:if>
<c:if test="name.count%3!=0"
${ i }
</c:if>
</c:forEach>
输出从1-10 到第3个就换色
JSTL提供的EL函数库
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
${ fn:函数名 }
${ fn:}
|
|