1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > EL表达式与JSTL标签库

EL表达式与JSTL标签库

时间:2020-12-13 13:52:45

相关推荐

EL表达式与JSTL标签库

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。