EL表达式必须依赖于JSP才能生存下去
作用:减少<%%>(java代码)在页面上的显示,利于代码的维护
EL的基本语法:
往浏览器中输出内容
${1}
${“11”}
${'111’}
算术运算符
${4+1}
${4-1}
${4*1}
${4/1}
注意:EL表达式中的+号没有拼接作用
<%=1+2+”3”%>
${1+2+”3”}
<%=1+2+”a”%>
${1+2+”a”}
关系运算符
${1>8}
逻辑运算符
${1==1 && 1<3}
//逻辑运算符的特殊写法
${true && false} -- ${true and false}
${true || false} -- ${true or false}
${!true} -- ${not true}
empty关键字:判断是否为null
${empty “”}<br>
${empty null}<br>
eq关键字
${“aa” eq “aa”}
EL表达式的取值问题
EL表达式只能从四大作用域中取数据(pageContext,requset,session,application),目前只讲requset
<%
int a = 100;
%>
${a/2}
取值不到,因为EL表达式只能从JSP的四大作用域当中获取变量
<%
int a = 100;
request.setAttribute(“wy”,a);
%>
${wy/2}
注意:
1.EL表达式不能调用方法
2.EL表达式不能在html中使用,JSP中的EL表达式有可能会出现失效的问题
解决:在第一行加上一个属性 isELIgnored="false" 即可
JSTL核心标签库
使用步骤:
1.在页面的顶部导入标签库
taglib::标签库
uri:链接
提示:URL与RUI的区别
如:
URL(完整路径): http://zhidao.baidu.com/question/68016373.html --资源的真名
URI(绝对路径): /question/68016373.html --资源的名称
RUI包含URL
prefix:前缀,一般使用c
2.在页面上使用c标签
<c:out value=””></c:out> //输出,可以防止JS代码执行
等同于 ${“aaa”}
例:
<c:out value=”<script>alert(‘攻击脚本’);</script>”></c:out>
${“<script>alert(‘攻击脚本’);</script>”}
<c:set var=”” value=”” scope=””><c:set> //在JSP页面上定义变量
例:
<c:set var=”name” value=”李四” scope=”page”><c:set>
等同于 pageContext.setAttribute(“name”,”李四”);
<c:if test=””></c:if> //if逻辑判断
例:
<c:set var=”sex” value=”男”></c:set>
<c:if test=”${sex == ‘男’}”>
男人
</c:if>
<c:if test=”${sex eq ‘女’}”>
女人
</c:if>
注意: c:if 标签没有else标签
<c:choose></c:choose> //switch
<c:when test=””></c:when> //case
<c:otherwise></c:otherwise> //default
例:
<c:set var=”sex” value=”男”></c:set>
<c:when test=”${sex == ‘男’}”>
男人
</c:when>
<c:when test=”${sex eq ‘女’}”>
女人
</c:when>
<c:otherwise”>
妖
</c:otherwise>
<c:forEach var=”” items=”” varStatus=””></c:forEach>
var:数据组当中的每个元素
items:数组的名称(必须使用EL表达式)
varStatus:数组的信息 如:varStatus = vs
vs.index 循环的索引(从0开始)
vs.count 循环的次数(从1开始)
vs.first 是否是第一个
vs.last 是否是最后一个
例1:
<%
String [] arr = {“男人”,”女人”,”妖怪”};
pageContext.setAttribute(“arr”,arr);
%>
<c:forEach var=”e” items=”${arr}” varStatus=”vs”>
${e}--${vs.index}--${vs.count}--${vs.first}--${vs.last}
</c:forEach>
例2:
<c:forEach begin="1" end="10" var="i" step="3">
${i }
<c:forEach>
注意:JSP页面中表单单行变色的问题
<c:forEach items="${list}" var="u" varStatus="vs">
<tr bgcolor="${vs.count%2 == 0 ? "red":"blue"}">
<td>${u.id}</td>
<td>${u.name}</td>
</tr>
</c:forEach>
格式化
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
例1:时间格式化:
serlvet:
req.setAttribute("date",new Date());
JSP
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss">
例2:数字格式化(千分位)
serlvet:
req.setAttribute("number",111223444.56644);
JSP
<fmt:formatNumber value="${number}" pattern="##,###.##"> //##,###.##数字格式化的格式,每个系统的要求不一样,一般公司会有统一的格式