EL表达式

EL简介

1.语法结构 
  ${expression}
2.[]与.运算符 
  EL 提供.[]两种运算符来存取数据。
  当要存取的属性名称中包含一些特殊字符,如.?等并非字母或数字的符号,就一定要使用 []。例如:
  ${user.My-Name}应当改为${user["My-Name"]}
  如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
    ${sessionScope.user[data]}中data 是一个变量
3.变量 
  EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
  因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
  假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
  属性范围在EL中的名称
    Page        PageScope
    Request        RequestScope
    Session        SessionScope
    Application     ApplicationScope
   

 

EL隐含对象 

1.与范围有关的隐含对象 
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope和     applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。

例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
  session.getAttribute("username") 取得username的值,
在EL中则使用下列方法
  ${sessionScope.username}

2.与输入有关的隐含对象 
   与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。

例如我们要取得用户的请求参数时,可以利用下列方法:
  request.getParameter(Stringname)
   request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
  ${param.name}
  ${paramValues.name}

3.其他隐含对象 

cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。

header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。

initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid =(String)application.getInitParameter("userid");
    可以使用 ${initParam.userid}来取得名称为userid

pageContext
pageContext取得其他有关用户要求或页面的详细信息。
   ${pageContext.request.queryString}        取得请求的参数字符串
    ${pageContext.request.requestURL}        取得请求的URL,但不包括请求之参数字符串
   ${pageContext.request.contextPath}        服务的web application 的名称
   ${pageContext.request.method}          取得HTTP 的方法(GET、POST)
   ${pageContext.request.protocol}        取得使用的协议(HTTP/1.1、HTTP/1.0)
    ${pageContext.request.remoteUser}        取得用户名称
    ${pageContext.request.remoteAddr}         取得用户的IP 地址
   ${pageContext.session.new}            判断session 是否为新的
   ${pageContext.session.id}              取得session 的ID
    ${pageContext.servletContext.serverInfo}   取得主机端的服务信息

EL运算符 


1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
最常用的表达式:

为空判断:${empty param.name}

例:<c:iftest="${empty getTitle0 }">目前没有新闻!</c:if>

三元运算:${A?B:C}

算数运算:${A*(B+C)} 

EL函数(functions)

语法:ns:function( arg1, arg2, arg3 …. argN)
其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一致
 例:${fn:substring(list.news_title, 0,9)}

    1 EL表达式用${}表示,可用在所有的HTML和JSP标签中 作用是代替JSP页面中复杂的JAVA代码.

2 EL表达式可操作常量 变量 和隐式对象. 最常用的隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话范围内的变量.applicationScope表示应用范围的变量.
   3<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言.
   4 EL语言可显示 逻辑表达式如${true and false}结果是false   

关系表达式如${5>6} 结果是false    

算术表达式如 ${5+5} 结果是10
   5 EL中的变量搜索范围是:page request session application   点运算符(.)和"[ ]"都是表示获取变量的值.区别是[ ]可以显示非词类的变量
 ${uplist[0].lzid == zulist.zname?'selected':'' }

 

使用前在Jsp页面的首部加上以下代码:

 

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

 

下面是JSTL中自带的方法列表以及其描述   

 

函数名 函数说明 使用举例   

fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchString)}">   

fn:containsIgnoreCase 判断字符串是否包含另外一个字符串(大小写无关) <c:if test="${fn:containsIgnoreCase(name, searchString)}">   

fn:endsWith 判断字符串是否以另外字符串结束 <c:if test="${fn:endsWith(filename, ".txt")}">   

fn:escapeXml 把一些字符转成XML表示,例如 <字符应该转为&lt; ${fn:escapeXml(param:info)}   

fn:indexOf 子字符串在母字符串中出现的位置 ${fn:indexOf(name, "-")}   

fn:join 将数组中的数据联合成一个新字符串,并使用指定字符格开 ${fn:join(array, ";")}   

fn:length 获取字符串的长度,或者数组的大小 ${fn:length(shoppingCart.products)}   

fn:replace 替换字符串中指定的字符 ${fn:replace(text, "-", "&#149;")}   

fn:split 把字符串按照指定字符切分 ${fn:split(customerNames, ";")}   

fn:startsWith 判断字符串是否以某个子串开始 <c:if test="${fn:startsWith(product.id, "100-")}">   

fn:substring 获取子串 ${fn:substring(zip, 6, -1)}   

fn:substringAfter 获取从某个字符所在位置开始的子串   

${fn:substringAfter(zip, "-")}   

fn:substringBefore 获取从开始到某个字符所在位置的子串 ${fn:substringBefore(zip, "-")}   

fn:toLowerCase 转为小写 ${fn.toLowerCase(product.name)}   

fn:toUpperCase 转为大写字符 ${fn.UpperCase(product.name)}   

fn:trim 去除字符串前后的空格 ${fn.trim(name)} 

函数 描述

fn:contains(string, substring)

如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)

如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)

如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)

将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

fn:indexOf(string, substring)

返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)

返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

fn:replace(string, before, after)

返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)

返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)

如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)

返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string, substring)

返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)

返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回

fn:trim(string)

去除参数string 首尾的空格,并将其返回

posted @ 2015-04-09 16:27  小鲜肉成长记  阅读(149)  评论(0编辑  收藏  举报