EL表达式:
1.基本格式:${}
2.4种取值范围:pageScope,requestScope,sessionScope,applicationScope
${requestScope.user.name}
3.基本运算:.和[].用于取属性[]用于取Array,List,Map,Set
${requestScope.map['apple']},${requestScope.list[1]}
4.{}里允许的运算:算术运算,关系运算,逻辑运算,empty/notempty空判断
${1+1}
${user.age<18}
${(user.age>18)&&(user.sex=='男')}
${emptyuser}判断user对象是否为空
5.EL的11个隐含对象
pageContext,param和paramValues,header和headerValues,cookie,initParam和4种取值范围对象
*pageContext可获取jsp的request,response,out,session,config,servletContext等对象
${pageContext.session.uesr}
header
${header.host}
*cookie
${cookie.key}
================================================================================JSTL标签库:
1.核心标签库
a.JSTL表达式标签
b.条件标签
c.循环标签
d.URL操作标签
2.格式标签库(处理国际化,数字和日期格式)
3.SQL标签库(可以访问数据库)
4.XML标签库(可操作XML标记)
5.函数标签库(主要是字符串操作函数)
------------------------------------------------------------
需要掌握的JSTL核心库常用标签:
引入:<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
1.JSTL表达式标签:
<c:outvalue="${1+1}"default="0"></c:out>
输出
属性:value--表示要显示的值;可以是字符串,也可以是EL表达式
escapeXml--是否转换特殊字符[默认是true]
default--当value中的对象空时的默认显示
<c:setvar=""value=""target=""property=""scope=""></c:set>
变量赋值
属性:var--变量名
value--值
target--目标对象,可以是javaBean,集合对象
property--指定到目标对象的属性
scope--变量的作用范围[page(默认),request,session,application]
<c:removevar=""></c:remove>
移除变量
<c:catsh></c:catch>
捕获异常
属性:var--变量,用于存储异常信息
2.条件表达式标签:
<c:iftest=""></c:if>
条件判断
属性:test--条件表达式
var--变量表示条件表达式的值
scope--变量范围
<c:choose>
<c:whentest="">第一种情况</c:when>
<c:whentest="">第二种情况</c:when>
.....
<c:otherwise>其他情况</c:otherwise>
</c:choose>
3.循环标签:
<c:forEach></c:forEach>
循环
属性:items--循环类型
var--循环变量
begin--循环起始位置(从0算起)
end--循环结束位置
sep--每次循环的步长
varStatus--循环状态[索引:index,计数:count,是否是首次循环:first,是否是末次循环:last]
<c:forTokens></c:forTokens>
字符串分割循环
属性:iterms--循环对象
delims--分割字符
var--循环变量
begin,end,step,varStatus同forEach标签
4.URL操作标签:
<c:importurl=""></c:import>
文件导入
属性:url--被导入资源的路径
charEncoding--被导入文件的编码格式
说明:该标签不仅可导入本站的静态文件还可导入不同站点的资源文件
<c:redirecturl=""></c:redirect>
重定向
<c:url></c:url>
生成url地址标签
实验代码:
………………………………………………………………………………………………
HelloJSTL标签:<br>
<h2>表达式标签</h2>
<c:outvalue="1+1"/><br>
<c:outvalue="${1+1}"/><br>
<c:outvalue="${user}"default="显示默认值"/><br>
<c:outvalue="${user}">显示默认值</c:out><br>
<c:setvar="name"value="设置变量"></c:set>
<c:outvalue="${name}"></c:out><br>
<c:setvar="age"value="22"></c:set>
<c:removevar="age"/>
<c:outvalue="${age}"default="被移除了"></c:out><br>
<c:catchvar="exception">
<%
ints=8/0;
%>
</c:catch>
<c:outvalue="异常是:${exception}"></c:out>
<h2>条件标签</h2>
<c:iftest="${emptyuser}">
user是空对象<br>
</c:if>
<c:iftest="${1+1==2}"var="v">
1+1=2
</c:if><br>
<c:outvalue="条件是:${v}"></c:out><br>
<c:setvar="i"value="9"></c:set>
<c:choose>
<c:whentest="${i<5}">
i小于5
</c:when>
<c:whentest="${i>5}">
i大于5
</c:when>
<c:otherwise>
i等于5
</c:otherwise>
</c:choose>
<h2>循环标签</h2>
<%
Listlist=newArrayList();
list.add("list1");
list.add("list2");
list.add("list3");
list.add("list4");
list.add("list5");
list.add("list6");
request.setAttribute("list",list);
%>
<c:outvalue="${list}"></c:out><br>
<c:forEachitems="${list}"var="ite">
${ite}>>
</c:forEach><br>
<c:forEachitems="${list}"begin="3"end="5"var="ite">
${ite}>>
</c:forEach><br>
<c:forEachitems="${list}"begin="0"step="2"var="ite">
${ite}>>
</c:forEach><br>
<c:forEachitems="${list}"var="ite"varStatus="status">
值:${ite}|索引:${status.index}|当前循环计数:${status.count}|是否为第一次循环:${status.first}
|是否为最后一次循环:${status.last}<br>
</c:forEach>
<c:setvar="string"value="古都,雪国,千只鹤,山音,湖;伊豆的舞女"></c:set>
<c:forTokensitems="${string}"delims=",;"var="ite">
${ite}>>
</c:forTokens>
<h2>URL操作标签</h2>
<!--
<c:importurl="http://www.baidu.com"var="baidu">
</c:import>
-->
<iframesrc="http://m.weather.com.cn/m/pn12/weather.htm"width="245"height="110"marginwidth="0"marginheight="0"hspace="0"vspace="0"frameborder="0"scrolling="no"></iframe>
…………………………………………………………………………………………………