EL&&JSTL学习笔记
1、El表达式
简化我们的开发
1)、在页面显示域中的属性值
${输入属性名}
2)、要获取对象中的某个属性直接使用.属性名的方式
3)、el表达式如果获取域中的属性,直接写属性名,他会从四个域小到大找。找到即停止
el表达式可以连点操作
4)、el 11个隐含对象 el可以取出自己指定的这11个对象中的数据
${pageScope.attr} ${attr}
四个域对象。是从这四个域对象中取值。map
page域中的数据 pageScope(封装了pageContext域中所有的共享数据(setAttr,getAttr)),他是一个Map
request域中的数据 requetScope(封装了request域中所有的数据(setAttr,getAttr)), 他是一个Map
session域中的数据 sessionScope(封装了session域中所有的数据(setAttr,getAttr)),他是一个Map
application域中的数据 applicationScope(封装了application域中所有的数据(setAttr,getAttr)),他是一个Map
el取出域中属性获取map中的key值,如果没有,"" 如果有 显示相应内容
一个非map对象
pageContext就代表的是jsp隐含对象中的pageContext,取出其他隐含对象
5)、el表达式如何获取stu-x 这些特殊命名的属性(因为会产生歧义)
使用['属性名'] 取map中的数据可以使用. 也可以使用['key']
1、JSTL JSP的标准标签库(里面有 很多的标签可以使用),极大的简化我们的开发
2、使用
1)、导包
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar
2)、在页面导入标签库
page include taglib(导入标签库的指令)
1)、核心标签库 c标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
用来导入标签库 prefix定义标签的前缀<jsp:forward> uri:标签库的唯一识别符
2)、使用核心标签库
1)、<c:out>用于计算一个表达式并将结果输出到当前页面。
value:代表要输出的内容 可以是el表达式
default:表示默认值
escapeXml:表示是否转义特殊字符,默认转义
例:
<c:out value="${user.name}" default="" escapeXml="true"></c:out>
2)、<c:set>用于添加或修改域中的属性
<c:set var="" property="" scope="" target="" value=""></c:set>
1、给域中设置一个属性
var:表示要设置的属性的key
value:表示要设置的属性的value
scope:表示要设置在哪个域中 pageScope
scope="page"
scope="request"
scope="session"
scope="application"
<c:set var="key" value="value" scope="request"></c:set>
2、修改对象的某个属性值
<c:set property="name" target="${user}" value="孙悟空"></c:set>
property:代表要修改的属性名
value:修改后的值
target:代表修改哪个对象
3)、<c:remove>用来域中的属性
<c:remove var="" scope=""/>
var:要移除的属性的key
scope:要移除哪个域中的属性,如果不指定移除哪个域中的属性,那么就全部移除
4)、<c:if>用于实现if语句的判断功能
test:就是判断条件 如果是true执行标签体里面的内容,否则不执行
scope:指定,就是将判断结果保存到指定的域中,方便以后使用
var:指定key值
5)、<c:choose>、<c:when>、<c:otherwise>这是一套组合
<c:otherwise>
<c:choose>:选择,从这里开始进入分支判断。。 swich case
<c:when test="${stu.age >18 }">
当when中的条件满足,执行标签体
</c:when>
<c:otherwise>
否则执行我们这里的标签体
</c:otherwise>
6)、<c:forEach>用来做循环遍历
for(Student stu:stus){
}
begin="" end="" items="" step="" var="" varStatus=""
begin:指定遍历的开始位置
end:指定遍历的结束位置
items:要遍历的东西 list array...
step:步长 ,一次跳过多少
var:指定遍历的当前条目 的变量名
varStatus:遍历状态,里面封装了当前遍历的所有状态信息
varStatus="status",
<th>status.begin</th>开始的索引
<th>status.end</th> 结束的索引
<th>status.step</th>遍历的步长
<th>status.count</th>当前遍历的个数
<th>status.index</th>当前遍历到的索引
<th>status.last</th>是否最后一个
7)、<c:url>
3、JSTL函数库
fn:contains和fn:containsIgnoreCase
eg: fn:contains(string,subString) boolean