EL和JSTL

一、表达式语言(Expression Language,EL)

EL表达式: ${表达式}
jsp表达式:<%=表达式 %>

EL基本语法:

1、"[]“和”."运算符

来访问数据。主要获取对象属性,包括JavaBean属性值、数组的元素、集合对象的元素。
对于null值直接以空字符串显示,而不是null。在运算时不会发生错误或空指针。所以使用EL不需要判断是否为null对象。

JavaBean

<!-- 这两种相同 -->
${user.name }
${user.["name"] }

数组

request.setAttribute("array", users);
${array[0] }
${array[1] }

集合:

request.setAttribute("list", users);
${list[0].name }
${list[1].name }

2、算术运算符

加、减、乘、除、取模(求余)

${13+5}		<!-- 18 -->
${13-5}		<!-- 7 -->
${13*5}		<!-- 65 -->
${13/5}		<!-- 2.6 -->	<!-- ${13 div 5} -->
${13%5}		<!-- 3 -->		<!-- ${13 mod 5} -->

3、关系运算符

${13==5}	<!-- false -->	<!-- ${13 eq 5} -->
${13!=5}	<!-- true -->	<!-- ${13 ne 5} -->
${13<5}		<!-- false -->	<!-- ${13 lt 5} -->
${13>5}		<!-- true -->	<!-- ${13 gt 5} -->
${13<=5}	<!-- false -->	<!-- ${13 le 5} -->
${13>=5}	<!-- true -->	<!-- ${13 ge 5} -->

4、逻辑运算符

&&或and,逻辑与
||或or,逻辑或
!或not,逻辑非

5、empty运算符

判断是否为null。如A不存在,则为true。

${empty A}

6、条件运算符

${A?B:C}

EL隐含对象

EL共11个隐含对象。常见的有:pageScope、requestScope、sessionScope、applicationScope、param、paramValues。

1、与作用域相关

如没有指定作用范围,则依次page、request、session、application范围查找。若找到,直接返回,不再继续找下去。如没找到,返回空字符串

${EL隐含对象.关键字对象.属性}

${EL隐含对象.关键字对象}

2、与请求参数相关

${EL隐含对象.参数名}

变量类型作用
pageContextPageContextImpl获取jsp中的九大内置对象
pageScopeMap<String,Objexct>获取pageContext域中的数据
requestScopeMap<String,Objexct>获取Request域中的数据
sessionScopeMap<String,Objexct>获取session域中的数据
applicationScopeMap<String,Objexct>获取application域中的数据
paramMap<String,String>获取请求参数值
paramValuesMap<String,String>获取请求的多个参数值
headerMap<String,String>获取请求头的信息值
headerValuesMap<String,String>获取请求头的多个信息值
cookieMap<String,Cookie>获取当前请求的Cookie信息
initParamMap<String,String>获取在web.xml中配置的上下文参数

二、JSP标准标签库(Java Server Pages Standarded Tag Library,JSTL)

由5个不同功能的标签库组成,包括Core、I18N、XML、SQL、Functions。

1、使用taglib标记定义前缀与uri引用。

如果使用Core标签库或Functions标签库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

2、核心标签库之通用标签

<c:out >

<!-- 这两种相同 -->
<c:out value="value" [default="defaultValue"]/>
<c:out value="value">
	defaultValue
</c:out>

<c:set>在page、request、session、application等范围内设置一个变量,以request为例。

<!-- value赋给变量varName -->
<c:set value="value" var="varName" [scope="request"]/>
<!-- 相当于<%request.setAttribute("varName", "value"); %> -->
<!-- value赋给变量target对象(JavaBean对象)的propertyName属性。如target为null或没有set方法则抛出异常-->
<c:set value="value" target="target" property="propertyName"/>

<c:remove>删除某个变量

<!-- 删除变量varName -->
<c:remove var="varName" scope="request"/>
<!-- 相当于<%request.removeAttribute("varName") %> -->

3、核心标签库之流程控制标签

<c:if>的test表达式为true,则执行主体内容。没有<c:else>标签。

<c:if test="条件表达式">
	主体内容
</c:if>

<c:choose>、<c:when>、<c:otherwise>相当于if-esle语句。 <c:choose>和<c:if>可以相互嵌套使用。

<c:choose>
	<c:when test="条件表达式1">
		主体内容1
	</c:when>
	<c:when test="条件表达式2">
		主体内容2
	</c:when>
	<c:otherwise>
		表达式都不正确时执行的99主体内容
	</c:otherwise>
</c:choose>

4、核心标签库之迭代标签

<c:forEach>实现for循环,相当于foreach语句。还可以指定
begin:开始位置,默认是0
end:结束位置,默认最后一个元素
step:迭代步长,默认是1
varStatus:迭代变量状态,包括count(迭代次数)、index(当前索引)、first(第一个对象)、last(最后一个对象)。

<c:forEach var="变量名" items="数组或集合对象">
	循环体
</c:forEach>

<c:forTokens>用于迭代有分隔符分割的各个成员。也有begin、end、step、varStatus,用法相同。

<c:forTokens var="变量名" items="要迭代的string对象" delims="指定分隔字符串的分隔符">
	循环体
</c:forTokens>

5、函数标签库

在JSP页面中调用JSTL中的函数时,需要使用EL表达式。

基本语法
${fn:函数名(参数1,参数2,…)}
以下只写函数名(参数1,参数2,…)部分。

contains函数判断string是否包含substring子字符串。如真为true,否者false。
containsIgnoreCase函数与contains相同,但不区分大小写。

contains(string, substring)
containsIgnoreCase(string, substring)

endsWith函数判断string是否以suffix字符串结尾

endsWith(string, suffix)

startsWith函数判断string是否以prefix字符串开头

startsWith(string, prefix)

indexOf函数返回substring在string中第一次出现的位置。找不到时返回-1。

indexOf(string, substring)

length函数返回集合或字符串的长度。

length(input)

replace函数将string中的beforestring,全部用afterstring替换。

replace(string, beforestring, afterstring)

join函数将array字符串数组的所有元素合并成一个字符串,并用指定分隔符separator分开

join(array, separator)

split函数将string用指定分隔符separator将string分开成一个子字符串数组。与join相反。

split(string, separator)

substring函数返回string的一个子字符串数组。

substring(string, begin, end)

toLowerCase函数将string全部转成小写。toUpperCase与之相反。

toLowerCase(string)

trim函数将string开头和结尾的空白去掉。

trim(string)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值