ITPub博客

首页 > 应用开发 > Java > EL (Expression Language) 表达式语言 学习

EL (Expression Language) 表达式语言 学习

原创 Java 作者:wyd2002 时间:2007-09-30 11:27:29 0 删除 编辑

EL (Expression Language) 表达式语言
是JSP2.0的正式标准规范之一


要想运行EL,必须先寻找一个可以支持JSP2.0 的 java web容器
先让我们来测试一下你手中的java Web容器是否支持 JSP2.0

来把这个JSP放如你饿web 容器中

index.jsp
-----------
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>





EL Test

servlet 支持 : <%=application.getMajorVersion() %>.<%=application.getMinorVersion() %>




-----------

来访问一下这个页面,如果支持的servlet版本 是在 2.4 或则 2.4以上,那么你的web容器应该是能支持JSP2.0的。
<我的土方法,哈哈。有别的更好的方法识别 ,请大家多多指教>

例如:
${user.firstName}


EL保留字
And Or No Instanceof
eq ne le ge
lt gt empty null
true false div mod

EL保留标识符
pageContext pageScope requestScope sessionScope
applicationSocpe param paramValues header
headerValues cookie initParam


作用域(4个)
page request session application

任何出现在EL表达式中,但不对应于任何EL隐式对象的标识符,都被自动假定为引用存储在某个JSP作用域中的对象。
EL会依次 检查 page ,request , session ,application 这四个作用域。
一旦找到对应的值,马上返回值,不再继续寻找。
如果遍历后没有找到,返回null

EL存取器

点(.)运算符 通常用来访问对象的属性
example:
${user.sex}
${user.birthday.year}

方括号([])运算符 通常用于检索叔祖或集合的元素
example:
${email[1]} 注意,索引从‘0’开始

如果检索的对象是实现Map接口的集合,方括号运算符号使用惯量的键检索存储在衍射中的值
example:
${employee{"id"}}

-----------------------------------------------------------------------------------------

---------------------------------EL的11个隐式对象----------------------------------------
pageContext

pageScope requestScope sessionScope applicationScope

param paramValues

header headerValues

cookie

initParam
-----------------------------------------------------------------------------------------


访问地址:http://www.wangyudong.com:8080/elapp/index.jsp?id=99#123456789

测试结果:
servlet 支持 : 2.4版本

${pageContext.servletContext.serverInfo} : Apache Tomcat/5.0.28
${pageContext.request.requestURL} :
http://www.wangyudong.com:8080/elapp/index.jsp
${pageContext.request.requestURI} : /elapp/index.jsp
${pageContext.request.contextPath} : /elapp
${pageContext.request.queryString} : id=99
${pageContext.request.method} : GET
${pageContext.request.protocol} : HTTP/1.1
${pageContext.request.localAddr} : 127.0.0.1
${pageContext.session.new} : false
${pageContext.request.requestedSessionId} : A9D19BB7273C2C6622E8C8F2174215D7
${pageContext.session.id} : A9D19BB7273C2C6622E8C8F2174215D7

------------------------------------------------------------------------------------------
EL的四个作用域:

页面作用域 pageScope
example:
${pageScope.userName}
${pageScope.password}


请求作用域 requestScope
example:
${requestScope.userName}
${requestScope.password}


会话作用域 sessionScope
example:
${sessionScope.userName}
${sessionScope.password}


应用作用域 applicationScope
${applicationScope.userName}
${applicationScope.password}


-----------------------------------------------------------

param对象 ,请求参数对象

存放 客户发送的请求参数

userName : ${param.userName }
password : ${param.password }

----------------------------------------------------------

paramValues对象 ,Map映射对象,存放的是所有请求参数 的 '名' 和 '值' 的键值对。

可以说为每一个不同名的参数建立一个 Map对象。

userName : ${paramValues.userName[0]}
userName : ${paramValues.userName[1]}


----------------------------------------------------------

header 对象 :存放头部信息的对象

example:
${header["User-Agent"] } //获得用户的浏览器信息

----------------------------------------------------------

cookie对象 : Cookie

附带和Cookie相关的 名值对 的 Map映射

example:
${cookie.JSESSIONID.name} : ${cookie.JSESSIONID.value }


----------------------------------------------------------

iniParam对象 : 初始化参数

web.xml中配置:

wyd
wang yu dong

index.jsp中获得参数
initParam value of wyd : ${initParam["wyd"] }


----------------------------------------------------------
EL显示文字:

${"ssss"}
${'kkkk'}


EL显示数字:

${123}
${22.9865}

EL显示布耳值
${true}
${false}

----------------------------------------------------------

EL算术运算

-----------------------------------------------------------------------------------
算术运算符 说明 范例 结果
-----------------------------------------------------------------------------------
+ 加法 ${123+456} 579
- 减法 ${123-456} -333
* 乘法 ${123*456} 56088
/ or div 除法 ${123/456}或${123 div 456} 0.2697368
% or mod 求余 ${123%456}或%{123 mod 456} 123
-----------------------------------------------------------------------------------

关系运算
-----------------------------------------------------------------------------------
关系运算符 说明 范例 结果
-----------------------------------------------------------------------------------
== 或 eq 等于 ${123==456} 或 ${123 eq 456} false
-----------------------------------------------------------------------------------
!= 或 ne 不等于 ${123!=456} 或 ${123 ne 456} false
-----------------------------------------------------------------------------------
< 或 lt 小于 ${123<456} 或 ${123 lt 456} true
-----------------------------------------------------------------------------------
> 或 gt 大于 ${123>456} 或 ${123 gt 456} false
-----------------------------------------------------------------------------------
<= 或 le 小于等于 ${123<=456} 或 ${123 le 456} true
-----------------------------------------------------------------------------------
>= 或 ge 大于等于 ${123>=456} 或 ${123 ge 456} false
-----------------------------------------------------------------------------------


逻辑运算
-----------------------------------------------------------------------------------
逻辑运算符 说明 范例(A=true B=false) 结果
-----------------------------------------------------------------------------------
&& 或 and 逻辑于 ${A&&B} 或 ${A and B} false
-----------------------------------------------------------------------------------
|| 或 or 逻辑或 ${A||B} 或 ${A or B} true
-----------------------------------------------------------------------------------
! 或 not 逻辑非 ${!A} 或 ${not A} false
-----------------------------------------------------------------------------------

验证运算
-----------------------------------------------------------------------------------
验证运算符 说明 范例 结果
-----------------------------------------------------------------------------------
${empty null} true
-------------------------------------------
empty 是否为空 ${empty ""} true
-------------------------------------------
${empty "123"} false
-----------------------------------------------------------------------------------

EL函数

1,写EL标签脚本类。

下面是类的内容,
注意:
1,类一定是public的
2,类中的方法一定是public static的
_________________

package wyd.jsp.el.tag;

public class MathFunction {
/**
* PI是 圆周率
*/
private static final double PI=3.1415926;

/**
*
* @param radius 圆半径
* @return 圆周长
*/
public static double girthOfCircle(double radius){
double grith=0;

grith=PI * 2 * radius;

return grith;

}

/**
*
* @param radius 圆周长
* @return 圆面积
*/
public static double areaOfCircle(double radius){
double area=0;
area= PI * radius * radius;

return area;
}

}
_________________

2,写标签定义文件 *.tld文件

下面是"wyd_math.tld" 文件的内容

并且我选择的保存文件路径是"WEB-INF/tlds/wyd_math.tld"

—————————————————

http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
1.0
/http://www.wangyudong.com



girth
wyd.jsp.el.tag.MathFunction
double girthOfCircle(double)




area
wyd.jsp.el.tag.MathFunction
double areaOfCircle(double)

—————————————————

3,现在配置到web.xml中

我的配置好的web.xml文件
—————————————————




index.jsp




http://www.wangyudong.com/tld/math
/WEB-INF/tlds/wyd_math.tld


—————————————————

解释:
taglib-uri : 随便给一串字符串来标记它,到时候jsp文件 应用到该标记的时候可以找到它
taglib-location : 是标记存在的描述文件 *.tld 文件存在的位置 。"/" 开头 表明从一个应用 'application'的根目录下寻找

4,在JSP中应用EL 自定义标签;

我的jsp文件: "el.jsp"
————————————————————————
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="GBK"%>
<
%@page isELIgnored="false"%>
<%@ taglib prefix="wyd" uri="
http://www.wangyudong.com/tld/math"%>



EL TEST






R=100的圆的周长 : ${ wyd:girth(100) }

R=100的圆的面积 : ${ wyd:area(100)}




————————————————————————


5,访问的结果出来了

result:
----------


R=100的圆的周长 : 628.31852
R=100的圆的面积 : 31415.926000000003


----------

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2007的国庆就快到了,祝天下学习JAVA的朋友能永远快乐,天天进步

END
———————————————————————————

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11082357/viewspace-974113/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    7
  • 访问量
    118063