|
- EL脚本语言的配置和支持:
对于一个单个JSP页面,你可以使用定义page指令来设置jsp页面是否支持EL。默认是支持EL(如果要页面不支持EL,请设置为isELIgnored=true; <%@ page isELIgnored="true|false"%> | 对于整个JSP应用程序,要修改WEB.XML配置(tomcat5.0.16默认是支持EL的);
<jsp-property-group></jsp-property-group>?
<description> For config the ICW sample application </description>
<display-name>JSPConfiguration</display-name>
<url-pattern>/jsp/datareset.jsp</url-pattern>
<el-ignored>true< /<ccid_code> el-ignored>
<page-encoding>ISO-8859-1</page-encoding>
<include-prelude>/jsp/prelude.jspf</include-prelude>
<include-coda>/jsp/coda.jspf</include-coda>
</ccid_code></el-ignored>
- 算术运算符演示:
以下是EL运算符列表,其中empty可以检查某个值是否为空 运算符 | 说明 | 运算符 | 说明 | +
| 加
| > 或 gt | 大于 | -
| 减
| <= 或 le | 小于等于 | *
| 乘
| >= 或 ge | 大于等于 | / 或 div
| 除
| && 或 and | 逻辑与 | % 或 mod
| 模(求余)
| || 或 or | 逻辑或 | == 或 =
| 等于
| ! 或 not | 逻辑非 | != 或 !=
| 不等于
| empty | 检查是否为空值 | < 或 lt
| 小于
| a ? b : c | 条件运算符 | EL表达式使用简单,在网页中"${}"表示是EL表达式。${1+1} 显示为 2
EL算术表达式 | 运算结果 | EL 关系运算表达式 | 运算结果 | ${1} | 1 | ${1 < 2} | true | ${1 + 2} | 3 | ${1 lt 2} | true | ${1.2 + 2.3} | 3.5 | ${1 > (4/2)} | false | ${-4 - 2} | -6 | ${4.0 >= 3} | true | ${21 * 2} | 42 | ${4.0 ge 3} | true | ${10%4} | 2 | ${100.0 eq 100} | true | ${10 mod 4} | 2 | ${(10*10) != 100} | false | ${(1==2) ? 3 : 4} | 4 | ${(10*10) ne 100} | false |
- 隐含对象数据演示: EL 表达式定义了11个隐含对象,使用这11个对象可以很方便的读取到session,cookie,HttpHeader,用户提交表单(param)等
隐含对象
| 内容
| applicationScope
| 应用程序范围内的scoped变量组成的集合
| cookie
| 所有cookie组成的集合
| header
| HTTP请求头部,字符串
| headerValues
| HTTP请求头部,字符串集合
| initParam
| 全部应用程序参数名组成的集合
| pageContext
| 当前页面的javax.servlet.jsp.PageContext对象
| pageScope
| 页面范围内所有对象的集合
| param
| 所有请求参数字符串组成的集合
| paramValues
| 所有作为字符串集合的请求参数
| requestScope
| 所有请求范围的对象的集合
| sessionScope
| 所有会话范围的对象的集合
| 下面是获取HTTP访问头部数据和用户提交数据的示例
EL表达式 | 运算结果 | ${header["host"]}
| 这里得到HTTP连接头部的host值 | ${header["accept"]} | 这里获得HTTP头部的accept值 | ${header["user-agent"]} | 这里获得HTTP头部的user-agent值 | 以下可以读取用户提交的信息,假设用户提交信息为 ?name=myname&alies=now.net.cn(这里有两种访问方式,一种是使用[]来进行访问,另外一种是使用" "来进行访问,两种访问效果是一样的。) | ${param["name"] } | ?myname | ${param.name} | ?myname | ${param["alies"] } | ?now.net.cn | ${param.alies} | now.net.cn | ?
- 定义和使用函数 表达式语言允许你定义可在表达式中调用的函数。函数必须作为public类中的public static方法编写。同时要将文件映射到TLD标志库文件中。
为了说明函数的使用,我们举一个简单的例子,把两个数相加。首先要编写求两数之和的Java方法代码,如代码示例3所示,这里定义了一个静态方法,它接收两个字符串参数,把它们解析成整数并返回它们的和。
示例文件:Compute.java
package jsp2.examples.el;import java.util.*;public class Compute {
public static int add(String x, String y) {
int a = 0;
int b = 0;
try {
a = Integer.parseInt(x);
b = Integer.parseInt(y);
}catch(Exception e) {}
return a + b;
}
}
用javac把这段代码编译成功后,下一步就要把函数的签名映射到标签库。代码示例4说明了如何把add函数映射到包含函数实现和函数签名的类。后面将说明把这段代码添加到哪儿。
配置标记库描述文件 函数描述符
<function>
<description>add x and y</description>
<name>add</name>
<function-class>jsp2.examples.el.Compute
</function-class>
<function-signature>int
add(java.lang.String,java.lang.String)
</function-signature>
</function>
现在我们就可以编写一个JSP页面来使用这个函数。代码示例5是包含两个字段的一个表单,用户输入两个数字并按下“求和”按钮,就会调用上面的函数并把两个数相加,结果在同一个页面中显示出来。
代码示例5: math.jsp
<%@ taglib prefix="my"
uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>Functions
Add Numbers
X =
Y =
The sum is: ${my:add(param["x"],param["y"])}
|
|
|