一、el表达式
1、概述:jsp的内置表达式语言,用来替代<%=..%>
${el表达式}
2、作用:
1)获取数据
a、获取简单属性
${属性名}:依次从pageContext,request,session,application查找指定属性,
若查找到返回值,结束该次查找,若查找不到,返回""
b、获取复杂数据
获取数组中的数据
${域中的名称[index]}
获取list中的数据
${域中的名称[index]}
获取map中的数据
${域中的名称.键名}
c、获取Javabean属性值
${域中javabean名称.bean属性}
2)执行运算
a、四则运算
+:只能进行加法运算,字符串形式数字可以进行加法运算
b、关系逻辑运算符
b、empty
判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空
${empty list}
c、取反 not empty
d、三元运算符
${ 3>4?"yes":"no" }
3、el的11个内置对象
PageContext 表示此JSP的PageContext
在jsp页面中获取项目名 ${pageContext.request.contextPath}
PageScope 取得Page范围的属性名称所对应的值
RequestScope 取得Request范围的属性名称所对应的值
sessionScope 取得Session范围的属性名称所对应的值
applicationScope 取得Application范围的属性名称所对应的值
param 如同ServletRequest.getParameter(String name)。回传String类型的值
paramValues 如同ServletRequest.getParameterValues(String name)。回传String[]类型的值
header 如同ServletRequest.getHeader(String name)。回传String类型的值
headerValues 如同ServletRequest.getHeaders(String name)。回传String[]类型的值
initParam 如同ServletContext.getInitParameter(String name)。回传String类型的值
cookie 如同HttpServletRequest.getCookies()
java中Cookie的api
getName():获取cookie的名称
getValue():获取cookie的value值
二、jstl表达式
1、概述:jsp标准的标签库语言,用来替代java脚本
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c/fmt/fn" %>
2、分类
1)core:核心类库
a:c:if 判断
<c:if test="${el表达式}">满足的时候输出的内容</c:if>
例如:判断登录
<c:if test="${not empty name }">
${name}欢迎你!
</c:if>
<c:if test="${empty name }">
你尚未登陆请重新登陆<a href="${pageContext.request.contextPath}/login.jsp">点击登陆</a>
</c:if>
b:c:forEach 循环
格式1:
<c:forEach begin="从那里开始" end="到那里结束" step="步长" var="给变量起个名字" varStatus="循环状态变量">
${i }--${vs.count }--${vs.current }<br>
//count:记录次数 从1开始 current:当前遍历的内容 index: 索引 从0开始
</c:forEach>
例: <c:forEach begin="1" end="20" step="2" var="i" varStatus="vs">
${i }--${vs.count }--${vs.current }<br>
</c:forEach>
格式2:
<c:forEach items="${el获取域中的容器}" var="n">
${n}
</c:forEach>
例: <c:forEach items="${map}" var="en">
${en.key }-- ${en.value }<br/>
</c:forEach>
c:c:url 自动补项目路径,自动url重写
<a href='<c:url value="/foreach.jsp" />'>foreach.jsp</a>
相当于:<a href="${pageContext.request.contextPath}/foreach.jsp">foreach.jsp</a>
2)fmt:国际化
<fmt:formatDate value="要显示的日期" type="DATE/TIME/BOTH" dateStyle="FULL/LONG/MEDIUM/SHORT/DEFAULT"
timeStyle="FULL/LONG/MEDIUM/SHORT/DEFAULT" pattern="自定义格式模式" timeZone="显示日期的时区"
var="存储格式化日期的变量名" scope="存储格式化日志变量的范围" />
3)xml/sql:已过时
4)函数库:
fn:contains(string,substring) 是否包含
fn:containsIgnorrCase(string,substring) 忽略大小写
fn:endsWith(string,suffix) 是否以suffix结尾
fn:startsWith(string,prefix) 是否以prefix开头
fn:substring(string,begin,end) 返回字串 以begin开始end结束
fn:substringAfter(string,substring)
fn:substringBefore(string,substring)
fn:toLowerCase(string) 变小写
fn:toUpperCase(string) 变大写
fn:trim(string) 去除首尾空格
fn:escapeXml(string) xml/html转换
fn:indexOf(string,substring) 返回第一次出现的索引
fn:join(array,separator) 返回字串,用separator代替array里的分隔符
fn:length(item) 返回长度
fn:replace(string,before,after) 替换
fn:split(string,separator) 以separator为分隔符分割string 返回数组
转载于:https://blog.51cto.com/378213986/2072158