EL与自定义标签.doc
文本预览下载声明
九、EL(Expression Language表达式语言)
EL:表达式语言,EL的作用就是替换掉JSP页面中存在的大量的java代码。在我们JSP页面中,最好的情况下是没有java代码片段,而是使用大量的JSP标签或者表达式语言来进行一个页面的输出,为了使JSP写起来更加简单。
1、EL的语法
${expr}
\${expr} 转义 输出
? EL 语法很简单,它最大的特点就是使用上很方便
? ${sessionScope.user.sex} session.setAttrribute(“user”,user)
? 所有EL都是以 ${ 为起始、以} 为结尾的。上述
EL范例的意思是:从Session的范围中,取得
? 用户的性别。假若依照之前JSP Scriptlet的写法
如下:
? User user =
(User)session.getAttribute(user);
? String sex = user.getSex( );
2、[ ]与.运算符
? EL 提供 . 和 [ ] 两种运算符来存取数据。
下列两者所代表的意思是一样的
? ${sessionScope.user.sex} 等于
? ${sessionScope.user[sex]}
? . 和 [ ] 也可以同时混合使用,如下:
? ${sessionScope.shoppingCart[0].pric
e}
? 回传结果为shoppingCart中第一项物品的
价格。
两者差异:
? (1) 当要存取的属性名称中包含一些特殊字
符,如 . 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:
? ${user.My-Name }
? 上述是不正确的方式,应当改为:
? ${user[My-Name] }
? 我们来考虑下列情况:
? ${sessionScope.user[data]}
? 此时,data 是一个变量,假若data的值为sex时,那上述的例子等于${sessionScope.user.sex};
? 假若data 的值为name时,它就等于${sessionS}。因此,如果要动态取值时,就可以用上述的方法来做,但 . 无法做到动态取值。
${2+3}
${2/3}或 ${2 div 3}
${2%3}或${2 mod 3}
${5==5} ${5 eq 5}
${5 != 5} ${5 ne 5}
%
pageContext.setAttribute(a,b);
request.setAttribute(a,c);
session.setAttribute(a,d);
application.setAttribute(a,e);
%
${a}
${requestScope.a}
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page pageScope
Request requestScope
Session sessionScope
Application applicationScope
PageContext pageContext
Parameter param
我们也可以指定要取出哪一个范围的变量
自动类型转换:
EL 除了提供方便存取变量的语法之外,它
另外一个方便的功能就是:自动转变类型
${param.count + 20}
会将传来的count自动转化为数值
4、JSP EL 中的有效表达式
3、隐式对象
JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:
pageContext
JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。例如,${pageContext.response} 为页面的响应对象赋值。
此外,还提供几个隐式对象,允许对以下对象进行简易访问:
param
将请
显示全部