12EL表达式 C标签

JSP EL语言定义

EL(Expression Language)目的:为了使JSP写起来更加简单。 表达式语言灵感来自于ECMAScript和XPath表达式语言,它是一种简单的语言,基于可用的命名空间(PageContext属性),嵌套属性和对集合,操作符(算术型,关系型和逻辑型)的访问符,映射到java类中静态方法的可扩展函数以及一组隐式对象。

语法结构:${expression}

[]与.运算符

EL提供"."和"[]"两种运算符存取数据。当要存取的属性名称中包括一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用"[]"。例如:

${user.My-Name}应当改为${user["My-Name"] }

在这里user是一个类的对象,它的属性My-Name必须符合标准JavaBean的规范,即必须为My-Name属性定义相应的getter、setter方法。

${userAction.person.name}表示取userAction中person对象的name属性值,所以person要在userAction中有set/get方法,name在person中也要有set/get方法。

集合(数组,List)

表达式${row[0]} 表明row集合的第一个条目。

如:${ data.arrayobj[0] }表示取data对象中arrayObj集合的第一个元素。

如果要动态取值时,就可以用“[]“来做,而“.“无法做到动态取值。例如:

${sessionScope.user[data]}中data 是一个变量(在sesssion范围内取)

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。

因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。

EL表达式不要使用param作为属性名,如${param}得到的是[email protected]1a40210而不是param属性对应的值。

${param.参数名}的用法:

例如:向被包含的页included2.jsp传递参数:

<jsp:include page="included2.jsp" flush="true">

<jsp:param name="ref1" value="AAA"/>

<jsp:param name="ref2" value="BBB"/>

</jsp:include>

page属性: 相对路径指明被包含的文件

flush属性: 必须用true ,表示页面可刷新。

可以用jsp:param向被包含的动态页即JSP页传递参数(而include指令则不可以),参数以”参数名-值”对的形式传递,被包含的页使用request.getParameter(“参数名称”)可以获取相应参数的值

在included2.jsp通过EL表达式 : $(param.ref1)  相当于  request.getParameter("ref1")取出ref1的值。

request.getParameter();一般是从页面或者客户端获取的内容,

而 request.getAttribute();一般是从服务器段传过来的,可以传到客户端也可以传到服务器里面(即,方法1传到方法2,服务器内部的传输)

表达式 : $(param.name)  相当于  request.getParameter (name)。

Map对象

Map map=new HashMap();

map.put("my", "11mymymy");

map.put("my1", "22mymymy1");

request.setAttribute("map",map);

EL表达式输出:${map.my1}结果为,22mymymy1。

判断对象是否为null

<c:if test="${info!=null }">

Empty操作符(空值检查)

使用empty操作符来决定对象、集合或字符串变量是否为空或null。例如:

${empty para.username}

如果request的参数列表中的username值为null,则表达式的值为true。 EL也可以直接使用比较操作符与null进行比较。如${para.firstname == null}。

//判断是否等于字符串‘产品管理‘

<c:if test="${r2.menuName==‘产品管理‘}">

产品管理

</c:if>

比较操作符  描述

==或eq     相等检查

!=或ne     不等检查

<或lt      小于检查

>或gt      大于检查

<=或le     小于等于检查

>=或ge     大于等于检查

算术运算符(+、-(二元)、*、/、div、%、mod)与逻辑运算符均(and、&&、or、||、!、not)与JAVA语言相同,不再列表。

条件运算符 ?=

${A?B:C } 如果A 为true 则返回B 否则返回 C

例如:

<select >

<option value="1"  ${para.op==1 ? "selected" : ""}>选项一</option>

<option value="2"  ${para.op==2 ? "selected" : "">选项二</option>

</select >

1+2: ${1+2 }<br>

10/5:  ${10/5 }<br>

10 div 5:  ${10 div 5 }<br>

10%3:  ${10 % 3 }<br>

10 mod 3:  ${10 mod 3 }<br>

属性范围在EL中的名称:

Page             pageScope

Request          requestScope

Session          sessionScope

Application      applicationScope

<%=request.getParameter("username")% > 等价于${ para.username }。para:将请求参数名称映射到单个字符串参数值。

EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。

${paramValues}表示返回请求参数的一组值。等同于<%=request.getParameterValues("sampleValue")};

例如:

<form action="sampleJsp.jsp" method="post">

<input type="text" name="sampleValue" value="10" />

<input type="text" name="sampleValue" value="11" />

<input type="text" name="sampleValue" value="12" />

<input type="text" name="sampleSingleValue" value="SingleValue"/>

<input type="submit" value="提交"/>

</form>

sampleJsp.jsp 的<body>中有

${paramValues.sampleValue[2]}

${para.sampleSingleValue }

显示结果为12 SingleValue

<%=user.getAddr( ) %> 等价于 ${user.addr}。

使用EL表达式取值时,如果取出的值带有html标记,则html标记会被解释。

注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。

EL表达式不能和struts标签嵌套使用。

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}   取得主机端的服务信息

${pageContext.request.contextPath}取得项目的根目录,相当于<%request.getContextPath()%>

如果使用EL表达式出现下面的异常,则需要将jsp-api.jar放在WEB-INF/lib下,然后重新保存文件既可以了

javax.servlet.jsp.pagecontext cantnot be resolved to a type

**************************

C标签

需要导入的jar包:jstl.jar和standard.jar

需要的标签库:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:out>

<c:out>标签是一个最常用的标签,用于在JSP中显示数据。它的作用是用来替代通过JSP内置对象out或者<%=%>标签来输出对象的值。如:

<c:set value="wowowo" var="test" scope="request"/>

<c:out value="${requestScope.test}" dafault="defaultvalue"/>

<c:out value="C标签"/>

default属性,假若value为null,会显示default的值;假若没有设定default的值,则会显示一个空的字符串。

<c:set>

<c:set>标签用于为变量(page,request,session,application)赋值或对javaBean中变量的属性进行赋值。

将value的值存储到范围为scope的varName变量之中(默认scope的值为page):

<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>

将body内容存储至范围为scope的varName变量之中:

<c:set var="varName" [scope="{page|request|session|application}"]>

body.....

</c:set>

将value的值存储至target对象属性中

<c:set value="value" target="target" property="propertyNmae"/>

将body内容的数据存储至target对象属性中

<c:set target="target" property="propertyNmae">

body....

</c:set>

如:<c:set target="${cust.address}" property="city" value="$"/>

<c:remove>

<c:remove>标签用于删除存在于scope中的变量。

<c:remove var="varName" [scope="{page|request|session|application}"]/>

如:<c:remove var="sampleValue" scope="session"/>

<c:if>

<c:if>仅当所指定的表达式计算为true时才执行其体内的语句。计算结果也可以保存为一个变量中。

没有体,将计算结果保存在var变量中:

<c:if test="booleanExpression"  var="var" [scope="page|request|session|application"]/>

有体:

<c:if test=" booleanExpression ">

JSP elements ...

</c:if>

例如:

<c:if test="${para[‘login_error‘]==1}">

登录失败

</c:if>

<c:choose>

<c:choose>和<c:when>,<c:otherwise>一起实现互斥条件执行,类似于java中的if else。<c:choose>一般作为<c:when>和<c:otherwise>的父标签:

<c:choose>

<c:when test="${row.v_money<10000}">

小于10000

</c:when>

<c:when test="${row.v_money>=10000}&&row.v_money<20000">

大于等于10000,小于等于20000

</c:when>

<c:otherwise>

其它

</c:otherwise>

</c:choose>

<c:forEach>

主要用于对集合进行迭代。

<c:forEach items="collection" [var="var"] [begin="startIndex"] [end="stopIndex"] [step="increment"]>

JSP elements

</c:forEach>

例如:

<c:forEach items="${authorities}" var="athes">

${athes.authority}

</c:forEach>

另外迭代固定的次数:

<c:forEach [var="var"] begin="startIndex" end="stopIndex" [step="increment"]>

JSP elements

</c:forEach>

例如:

<c:forEach var="st" begin="1" end="3">

${st}//将输出3次

</c:forEach>

begin,开始位置。end,结束位置。items,被迭代的集合对象(Collection,Iterator,Map,Enumeration,数组)

step,步长(每次迭代时索引的递增值默认是1)

var,保存当前值。

varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。该变量包含的属性如下:

current:当前这次迭代的(集合中的)项。

index:当前这次迭代从0开始的迭代索引。

count:当前这次迭代从1开始的迭代计数。

first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。

last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。

begin:begin属性的值。

end:end属性的值

step:step属性的值

遍历数组

<% String[] words = { "foo", "bar", "baz"};

pageContext.setAttribute("words", words);

%>

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

<H2>Key Words:</H2>

<UL> <c:forEach var="word“ items="${words}">

<LI><c:out value="${word}"/> </c:forEach>

</UL>

***************************

EL表达式函数

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

需要写上的标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

需要导入的jar包:jstl.jar和standard.jar

fn:contains(string, substring)

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

<c:if test="${fn:contains(name, searchString)}">

fn:containsIgnoreCase(string, substring)

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

<c:if test="${fn:containsIgnoreCase(name, searchString)}">

fn:endsWith(string, suffix)

如果参数 string 以参数suffix结尾,返回true。如:<c:if test="${fn:endsWith(filename, ".txt")}">

fn:escapeXml(string)

将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回。如< ${fn:escapeXml(para:info)}

fn:indexOf(string, substring)

返回参数substring在参数string中第一次出现的位置。如:${fn:indexOf(name, "-")}

fn:join(array, separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。如:${fn:join(array, ";")}

fn:length(item)

返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。如:${fn:length(shoppingCart.products)}

fn:replace(string, before, after)

返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果。如: ${fn:replace(text, "-", "?")}

fn:split(string, separator)

返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素。如:${fn:split(customerNames, ";")}

fn:startsWith(string, prefix)

如果参数string以参数prefix开头,返回true,如<c:if test="${fn:startsWith(product.id, "100-")}">

fn:substring(string, begin, end)

返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符。如:${fn:substring(zip, 6, -1)}

fn:substringAfter(string, substring)

返回参数substring在参数string中后面的那一部分字符串。如:${fn:substringAfter(zip, "-")}

fn:substringBefore(string, substring)

返回参数substring在参数string中前面的那一部分字符串。如:${fn:substringBefore(zip, "-")}

fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回。如:${fn:toLowerCase(product.name)}

fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回。如:${fn:toUpperCase(product.name)}

fn:trim(string)

去除参数string 首尾的空格,并将其返回。如:${fn:trim(name)}

JSTL的fmt标签

需要写上的标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

格式化输出日期和日期型字符串。

<fmt:formatDate value="${isoDate}" type="both"/>

2009-5-31 23:59:59

<fmt:formatDate value="${date}" type="date"/>

2009-4-1

<fmt:formatDate value="${isoDate}" type="time"/>

23:59:59

<fmt:formatDate value="${isoDate}" type="date" dateStyle="default"/>

2009-5-31

<fmt:formatDate value="${isoDate}" type="date" dateStyle="short"/>

04-5-31

<fmt:formatDate value="${isoDate}" type="date" dateStyle="medium"/>

2009-5-31

<fmt:formatDate value="${isoDate}" type="date" dateStyle="long"/>

2009年5月31日

<fmt:formatDate value="${isoDate}" type="date" dateStyle="full"/>

2009年5月31日 星期一

<fmt:formatDate value="${isoDate}" type="time" timeStyle="default"/>

23:59:59

<fmt:formatDate value="${isoDate}" type="time" timeStyle="short"/>

下午11:59

<fmt:formatDate value="${isoDate}" type="time" timeStyle="medium"/>

23:59:59

<fmt:formatDate value="${isoDate}" type="time" timeStyle="long"/>

下午11时59分59秒

<fmt:formatDate value="${isoDate}" type="time" timeStyle="full"/>

下午11时59分59秒 CDT

<fmt:formatDate value="${date}" type="both" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/>

星期四, 四月 1, 2009 13:30:00 -0600

<fmt:formatDate value="${isoDate}" type="both" pattern="d MMM yy, h:m:s a zzzz/>

31 五月 04, 11:59:59 下午 中央夏令时

日期格式(2008年5月5日22点00分23秒)

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日HH点mm分ss秒" />

保留两位小数

<fmt:formatNumber value="123.123456789" pattern="0.00"/>

格式数字(45,678.234)

<fmt:formatNumber type="number" value="45678.2345" />

格式百分比(23%)

<fmt:formatNumber type="percent" value="0.2345" />

<fmt:formatNumber value="12" type="currency" pattern="$.00"/> -- $12.00

<br/>

<fmt:formatNumber value="12" type="currency" pattern="$.0#"/> -- $12.0

<br/>

<fmt:formatNumber value="1234567890" type="currency"/> -- $1,234,567,890.00(那个货币的符号和当前web服务器的 local 设定有关)

<br/>

<fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/> -- 123,456.79  (30变为30.0)

<br/>

<fmt:formatNumber value="123456.7" pattern="#,#00.0#"/> -- 123,456.7

<br/>

<fmt:formatNumber value="123456.7" pattern="#,#00.00#"/> -- 123,456.70

<br/>

<fmt:formatNumber value="12" type="percent" /> -- 1,200%type 可以是currency、 number、 和percent

<br/>

<fmt:formatNumber value="12.345" pattern="#.##" />  -- 12.34

时间: 2024-10-11 17:29:29

12EL表达式 C标签的相关文章

OGNL表达式struts2标签“%,#,$”

一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言.OGNL有如下特点: 1.支持对象方法调用,形式如:objName.methodName(): 2.支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路)]@[方法名 |  值名],例如: @java.lang.String@format('foo %s', 'bar')或@tutorial.

java攻城师之路--复习java web之jsp入门_El表达式_JSTL标签库

JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP支持HTML语法,生成HTML方便. JSP技术与Servlet 技术区别和关系?JSP和Servlet技术都是用来动态生成网页的,Servlet不支持HTML语法,生成网页麻烦,JSP支持HTML语法,生成网页方便,JSP运行时翻译Servlet 执行的.JSP 就是 Servlet . JSP运

EL表达式--自定义标签库

EL(Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. EL表达式函数,主要功能是完成对数据的修改,统一化格式: 开发步骤 : 1.开发函数处理类,处理类就是普通的类:每个函数对应类中的一个静态方法: 2. 建立TLD文件,定义表达式函数 3.在WEB.XML文件中配置:(可省略) 4.在JSP页面内导入并且使用 案例说明 1.开发函数处理类 packag

EL表达式 JSTL标签

1.声明EL表达式 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> 2.常用的EL表达式 1)从四个域中通过key找到简单数据并显示出来.表达式代码: ${name}      <!-- 类比于<%=pageContext.findAttribute("name") %> --> 四个域的寻找顺序是 page,request,sess

JSP常用标签——JSTL标签和EL表达式

一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复率较高的代码块支持复用,提高效率) 书写JSP页面时可读性更强(长得很像xml,方便前端查看和参与开发) 用事实告诉你为什么使用JSTL: 实现: 但是,使用JSTL效果如下: 3.JSTL环境搭建 JSTL的下载: 下载地址:http://archive.apache.org/dist/jakar

JSP标签语法、JSTL标签库、EL表达式辨析

<一.JSP > JSP 语法语法格式: <% 代码片段 %>或者<jsp:scriptlet> 代码片段</jsp:scriptlet> JSP声明 <%! declaration; [ declaration; ]+ ... %><%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %> 或者<jsp:declara

java jstl标签

转自:http://blog.csdn.net/liushuijinger/article/details/9143793 JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管理格式化.XML 操作以及数据库访问. 目前也有不少人在用JSTL,今天我们就一起学习一下JSTL的核心标签. 在JSP页面引入核心标签库的代码为:<%@ taglib prefix="c"

jstl标签 core fmt fn函数使用参考(为第一篇的补充,更为实用)

JSTL标签 参考手册 前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由J

jstl标签库

<c:> 核心标签库  ========================================================================== JSTL 核心标签库(C标签)标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect <c:forE