EL表达式与JSTL标签库
来源:互联网 发布:金融行业数据分析报告 编辑:程序博客网 时间:2024/06/07 06:10
JSTL标签库由标签库和EL表达式两部分组成,JSP2.0最重要的特性之一就是表达式语言EL(Expression Language),EL在JSP2.0及其更高版本,JSP容器已经能够独立的解释EL表达式。
EL表达式
EL表达式主要作用:
- 获取数据:从各种类型的Web作用域中检索JAVA对象,获取数据,包括访问JavaBean的属性、List集合、Map集合、数组等。
- 执行运算:支持关系运算、逻辑运算和算术运算。
- 获取Web开发常用对象:EL表达式定义了一些隐式对象,利用隐式对象可以获取Web常用对象的引用。
EL表达式可以返回任意类型的值,如果EL表达式的结果是一个带有属性的对象,则可以利用 [ ] 或 . 运算符来访问其属性,即通过 getter 方法获取其属性,[ ]是比较规范的形式,且当属性是变量时,只能使用 [] 。
${pageContext.request}${pageContext["request"]}
取值规则:
对于 ${expr-a[expr-b]} 形式EL表达式,取值方法如下:
(1)先计算 expr-a 得到 value-a。
(2)如果 value-a 为null,则返回null。
(3)然后计算 expr-b 得到 value-b。
(4)如果 value-b 为null,则返回null。
(5)如果 value-a 为 java.util.List,则要进行以下处理:
- 强制 value-b 为 int,如果不是,则抛出异常。
- 如果 value-a.get(value-b) 抛出IndexOutBoundsException,则返回null。
- 返回 value-a.get(value-b) 的值。
(6)如果 value-a 为 java.util.Map,则会查看 value-b 是否为Map中的一个key,如果是,则返回 value-a.get(value-b),如果不是,则返回null。
(7)如果 value-a 不是一个集合,那么,value-a 必须是一个JavaBean,value-b必须强制为String类型,如果 value-b 是 value-a 的一个可读属性,会调用该属性的getter方法返回值。反之,会抛出异常。
El表达式的运算符
算术运算符:+、-、*、/、%(mod)
逻辑运算符:&&(and)、||(or)、!(not)
关系运算符:==(eq)、!=(ne)、>(gt)、>=(ge)、<(lt)、<=(le)
empty运算符:用来检测作用域中是否有该变量存在,然后在判断该变量是否为null或空字符串。${empty name}
EL表达式的隐式对象
在EL中,提供了11个隐式对象用来访问Web开发中常用的JSP对象来获取数据。
pageContext、param、header、headerValues、cookie、initParam、pageScope、requestScope、sessionScope、applicationScope
pageContext:表示当前JSP页面的javax.servlet.jsp.PageContext,它可以访问其它JSP的对象。
${pageContext.request.method}${pageContext.request.contextPath}${pageContext.request.requestURL}
param:用于获取请求参数值,param表示包含所有请求参数的Map
${param.username}
paramValues:用于获取一个请求参数的多个值,paramValues表示包含所有请求参数的Map,每个key的值是一个字符串数组。
${paramValues.hobbys[0]}
header:用于获取请求标题,header表示包含所有请求标题的Map。
//accept-language不是一个有效的Java变量名header["accept-language"]header.connection
headerValues:用于获取请求标题的多个值,与header不同的时返回一个字符串数组。
${headerValues["accept-language"][0]}
cookie:用于获取Cookie对象,获取名为JSESSIONID的Cookie对象及值
${cookie.JSESSIONID}${cookie.JSESSIONID.value}
initParam:用于获取Web应用程序上下文参数的值。
${initParam.contextConfigLoaction}
pageScope、requestScope、sessionScope和application分别从page、request、session、application 4个作用域中获取存储在其中的属性值。
${pageScope.username}${requestScope.username}${sessionScope.username}${application.username}
JSTL标签库
JSTL中的标签分为5大类:
Core 标签库
Core标签库,又被称为核心标签库,该标签库中一共有14个标签,被分为4类,分别是:
多用途核心标签:<c:out>、<c:set>、<c:remove>、<c:catch>
条件控制标签:<c:if>、<c:choose>、<c:when>、<c:otherwise>
循环控制标签:<c:forEache>、<c:forTokens>
URL相关标签:<c:import>、<c:url>、<c:redirect>、<c:param>
<c:out>
<c:out value="{sessionScope.username}" default="游客"/>
<c:set>
<c:set var="username" value="admin" scope="page"/><!--设置pageScope中Uesr对象的username属性--><c:set target="${pageScope.user}" property="username" value="guest"/>
<c:remove>
<c:remove var="username" scope="page"/>
<c:catche>
<c:catch var="err"> <% int i = 5/0; %></c:catch>${err}
<c:if>
<c:if test="${param.loginname=='admin' && param.password=='123'}" var="islogin" scope="request"> ${requestScope.islogin},登录成功</c:if>
<c:choose>、<c:when>和<c:otherwise>
<c:choose> <c:when test="${param.loginname=='admin' && param.password=='123'}"> 登录成功 </c:when> <c:otherwise> 登录失败 </c:otherwise></c:choose>
<c:forEach>
<c:forEach begin="1" end="5" step="2" varStatus="vs"> 索引:${vs.index} 计数:${vs.count} 是否为第一个元素:${vs.first} 是否为最后一个元素:${vs.last}</c:forEach><!--遍历List集合--><c:forEach items="${requestScope.bookList}" var="book"> ${book.id} ${book.name}</c:forEach><!--遍历Map集合--><c:forEach items="${requestScope.bookMap}" var="entry"> ${entry.key} ${entry.value}</c:forEach>
<c:forTokens>
<c:forTokens items="a,b,c,d" delims="," var="s"> ${s}</c:forTokens>
<c:import>
<!--包含另一个页面--><c:import url="title.jsp"/>
<c:url>
<c:url value="index.jsp" var="myurl" context="/myproject" scope="page"></c:url>
fmt、fn、x、sql标签库并不常用,在此不做详细介绍
fmt标签
requestEncoding
setLocale
timeZone
setTimeZone
bundle
setBundle
message
param
formatNumber
parseNumber
formatDate
parseDate
fn标签
contains
containsIgnreCase
endsWith
escapeXml
indexOf
join
length
replace
split
startsWith
substring
substringAfter
substringBefore
toLowerCase
toUpperCase
trim
x标签
choose
out
if
forEach
otherwise
param
parse
set
transform
when
sql标签
transaction
query
update
param
dateParam
setDataSource
- EL表达式与JSTL标签库
- EL表达式与JSTL标签库
- EL表达式与JSTL标签库示例
- JSTL标签库与EL表达式
- EL表达式与JSTL标签库
- EL表达式与JSTL标签
- JSTL标签与EL表达式
- JSTL标签与EL表达式
- EL表达式与JSTL标签
- EL表达式、JSTL标签库
- JSTL标签库+EL表达式
- java中的El表达式 与jstl标签库
- EL表达式与JSTL(C)标签
- 【JavaWeb】EL表达式与JSTL标签
- EL表达式与JSTL标签的使用
- EL表达式与JSTL(C)标签
- EL表达式与JSTL(C)标签
- JSTL标签与EL表达式xaing
- ADIS16448 配置
- 创业公司快速搭建立体化监控之路(WOT2016)
- ubuntu安装HDF5链接库(基于VFH描述子的聚类识别与6自由度位姿估计编译问题)
- H2数据类型
- Python中的装饰器(decorator)
- EL表达式与JSTL标签库
- python爬虫scrapy框架基础知识
- Linux中的In命令
- java web 中servlet原理以及创建方法详解内含众多知识点
- 巧用CAS解决数据一致性问题
- 利用Python数据可视化工具plotly从数据库读取数据制作本地图表应用实例
- 多角度分析,休闲食品即将成为第四餐?
- 【Shell】linux shell将字符串分割成数组
- Spring Cloud Eureka REST 接口