EL表达式:
1.基本格式:${}
2.4种取值范围:pageScope,requestScope,sessionScope,applicationScope
${requestScope.user.name}
3.基本运算:.和[] .用于取属性[]用于取Array,List,Map,Set
${requestScope.map['apple']},${requestScope.list[1]}
4.{}里允许的运算:算术运算,关系运算,逻辑运算,empty/not empty空判断
${1+1}
${user.age<18}
${(user.age>18)&&(user.sex=='男')}
${empty user}判断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核心库常用标签:
引入:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
1.JSTL表达式标签:
<c:out value="${1+1}" default="0"></c:out>
输出
属性:value--表示要显示的值;可以是字符串,也可以是EL表达式
escapeXml--是否转换特殊字符[默认是true]
default--当value中的对象空时的默认显示
<c:set var="" value="" target="" property="" scope=""></c:set>
变量赋值
属性:var--变量名
value--值
target--目标对象,可以是javaBean,集合对象
property--指定到目标对象的属性
scope--变量的作用范围[page(默认),request,session,application]
<c:remove var=""></c:remove>
移除变量
<c:catsh></c:catch>
捕获异常
属性:var--变量,用于存储异常信息
2.条件表达式标签:
<c:if test=""></c:if>
条件判断
属性:test--条件表达式
var--变量表示条件表达式的值
scope--变量范围
<c:choose>
<c:when test="">第一种情况</c:when>
<c:when test="">第二种情况</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:import url=""></c:import>
文件导入
属性:url--被导入资源的路径
charEncoding--被导入文件的编码格式
说明:该标签不仅可导入本站的静态文件还可导入不同站点的资源文件
<c:redirect url=""></c:redirect>
重定向
<c:url></c:url>
生成url地址标签
实验代码:
………………………………………………………………………………………………
Hello JSTL标签: <br>
<h2>表达式标签</h2>
<c:out value="1+1"/><br>
<c:out value="${1+1}"/><br>
<c:out value="${user}" default="显示默认值" /><br>
<c:out value="${user}">显示默认值</c:out><br>
<c:set var="name" value="设置变量"></c:set>
<c:out value="${name}"></c:out><br>
<c:set var="age" value="22"></c:set>
<c:remove var="age"/>
<c:out value="${age}" default="被移除了"></c:out><br>
<c:catch var="exception">
<%
int s=8/0;
%>
</c:catch>
<c:out value="异常是:${exception}"></c:out>
<h2>条件标签</h2>
<c:if test="${empty user}">
user是空对象<br>
</c:if>
<c:if test="${1+1==2}" var="v">
1+1=2
</c:if><br>
<c:out value="条件是:${v}"></c:out><br>
<c:set var="i" value="9"></c:set>
<c:choose>
<c:when test="${i<5}">
i小于5
</c:when>
<c:when test="${i>5}">
i大于5
</c:when>
<c:otherwise>
i等于5
</c:otherwise>
</c:choose>
<h2>循环标签</h2>
<%
List list=new ArrayList();
list.add("list1");
list.add("list2");
list.add("list3");
list.add("list4");
list.add("list5");
list.add("list6");
request.setAttribute("list",list);
%>
<c:out value="${list}"></c:out><br>
<c:forEach items="${list}" var="ite">
${ite} >>
</c:forEach><br>
<c:forEach items="${list}" begin="3" end="5" var="ite">
${ite }>>
</c:forEach><br>
<c:forEach items="${list}" begin="0" step="2" var="ite">
${ite }>>
</c:forEach><br>
<c:forEach items="${list}" var="ite" varStatus="status">
值:${ite }|索引:${status.index }|当前循环计数:${status.count }|是否为第一次循环:${status.first }
|是否为最后一次循环:${status.last }<br>
</c:forEach>
<c:set var="string" value="古都,雪国,千只鹤,山音,湖;伊豆的舞女"></c:set>
<c:forTokens items="${string}" delims=",;" var="ite">
${ite }>>
</c:forTokens>
<h2>URL操作标签</h2>
<!--
<c:import url="http://www.baidu.com" var="baidu">
</c:import>
-->
<iframe src="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>
…………………………………………………………………………………………………