黑马程序员技术交流社区
标题:
【石家庄校区】就业班_JavaEE_day18_EL_JSTL
[打印本页]
作者:
风中的消逝
时间:
2018-5-21 15:49
标题:
【石家庄校区】就业班_JavaEE_day18_EL_JSTL
本帖最后由 小石姐姐 于 2018-6-7 10:31 编辑
就业班_JavaEE_day18_EL_JSTL
el表达式
一 概述
用来替换<%=…%> ; 格式:${…} ; EL不显示null ;
二 el表达式作用
1. 获取4个域中的值
${pageContext.xxx} ${requestContext.xxx} ${sessionContext.xxx} ${applicationContext.xxx}
${xxx} 全域查找,一般用这个。
以什么名字存 就以什么名字取 存的什么类型 取的就是什么类型。
2 运算操作
${ + - * / %}
${ > >= < <= == != } gt ge lt le eq
${ && || ! } and or not
empty not empty
3 操作web对象(11个)
pageScope ${pageScope.name}等同与pageContext.getAttribute(“name”)
requestScope ${requestScope.name}等同与request.getAttribute(“name”)
sessionScope ${sessionScope.name}等同与session.getAttribute(“name”)
applicationScope ${applicationScope.name}等同与application.getAttribute(“name”)
param; ${param.name}与request.getParameter("name")方法相同
paramValues; ${paramValues.name}与request.getParameterValues("name")方法相同 返回的是数组
header; ${header.name}与request.getHeader("name")
headerValues; ${headerValues.name}与request.getHeaders("name")
initParam; 对应web.xml文件中的<context-param>
cookie; Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。
pageContext; 可以通过pageContext得到其它对象。
实际:
${cookie.xxx.value} 取xxxcookie的value
${pageContext.request.contextPath} 取项目名称
三 表达式格式
*操作List和数组:${list[0]}、${arr[0]};
*操作bean的属性:${person.name}、${person[‘name’]},对应person.getName()方法;
*操作Map的值:${map.key}、${map[‘key’]},对应map.get(key)。
四 EL函数库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
${fn:length(arr) } 主要是一些操作字符串和数组集合的方法。
jstl
一概述
JSTL依赖EL ; JSTL是标签语言 ; 不是JSP内置的标签,需要我们自己导包;
二 核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
1 url 输出url地址,会带上项目名并且会根据需要对参数中的中文进行URI编码
<c:url value="/AServlet">
<c:param name="username" value="abc"/>
<c:param name="password" value="123"/>
</c:url>
2 if
<c:if test="${not empty a}"> 判断a变量不为null,没有指定域,表示全域
<c:out value="${a }"/>
</c:if>
3 choose 相当于if elseif else
<c:choose>
<c:when test="${score > 100 || score < 0}"> 错误的分数:${score }</c:when>
<c:when test="${score >= 90 }"> A级 </c:when>
<c:when test="${score >= 80 }">B级</c:when>
<c:when test="${score >= 70 }">C级</c:when>
<c:when test="${score >= 60 }">D级</c:when>
<c:otherwise>E级</c:otherwise>
</c:choose>
4 forEach
<c:forEach var="i" begin="1" end="10"> 设置循环变量i,初始值为1,遍历到10。
<c:set var="sum" value="${sum + i}" /> 设置sum的值为sum + i
</c:forEach>
遍历集合或者数组
<c:forEach var="item" items="${ns }">
<c:out value="${item }"/>
</c:forEach>
遍历Map
<c:forEach var="item" items="${stu }">
<c:out value="${item.key }: ${item.value }"/><br/>
</c:forEach>
varStatus属性
<c:forEach var="item" items="${ns }" varStatus="vs"> 把循环状态赋给vs
<c:if test="${vs.first }">第一行:</c:if> [如果是第一行,那么${vs.first}为true]
<c:if test="${vs.last }">最后一行:</c:if> [如果是最后一行,那么${vs.last}为true]
<c:out value="第${vs.count }行: "/> [返回行数,从1开始]
<c:out value="[${vs.index }]: "/> [返回行数,从0开始]
</c:forEach>
注意 遍历集合时items="${ns }" }后面不要有空格。
四 格式化标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
格式化时间
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
格式化数字
<fmt:formatNumber value="${d1 }" pattern="0.00" />
保留两位小数,如果大于两位,四舍五入,如果小于两位,那么使用0补足两位。
<fmt:formatNumber value="${d2 }" pattern="#.##" />
最多显示两位,如果小于两位,那么有几位保留几位,不会用0补足。大于两位,只保留两位,并四舍五入.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2