ExpressionLanguage

JAVA应用总是搞出来这么多名堂

EL——ExpressionLanguage,它是用于替换JSP页面中的脚本表达式。之前也有提到过,在JSP页面中使用脚本表达式进行数据显示是一件痛苦的事。若想使用EL表达式,WEB服务器必须支持Servlet2.4/JSP2.0技术。

EL都有哪些功能呢?比如${标识符},EL拿到标识符后会到自己的隐式对象中去查找,如果隐式对象中不存在,则到page域、request域、session域、application域中去查找。

举例:${abcd},abcd不是EL的隐式对象。但它在request域中(request.setAttribute (“abcd”,”hi”);),所以会调用pageContext.findAttribute方法进行查找,${abcd}代表的就是request.getAttribute(“abcd”);,EL都具有哪些隐式对象呢?

pageContext、pageScope、requestScope、sessionScope、applicationScope,param、paramValues、header、headerValues、cookie、initParam。这些都是Servlet中相关的作用域对象,比如${requestScope.abcd}就是获取request中的abcd属性。既然${abcd}与${requestScope.abcd}有什么区别,使用${abcd}不是更简单吗?咱们来看一下这种情况:request.setAttribute(“abcd”,”hiRequest”); session.setAttribute(“abcd”,”hiSession”);,${abcd},获取的是request中的abcd,如果request中没有abcd它获取的就是session的abcd。这下明白了吧!如果两个域中具有相同的属性,那么些时EL的隐式对象就发挥了作用。EL中的隐式对象完全可以操作相应域的数据。

EL也具有基本的运算处理能力:算术运算、逻辑运算和关系运算。在此就不一一列举了!

在EL中也可以编写自己的函数:

1.        编写一个类,定义静态方法:

public class MyEl {

    public static String getMessage(){

       return "HI,我是EL自定义函数!!!";

    }

}

2.        在WEB-INF目录中添加一个*.tld配置文件:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

    version="2.0">

    <description>A tag library exercising SimpleTag handlers.</description>

    <tlib-version>1.0</tlib-version>

    <short-name>SimpleTagLibrary</short-name>

    <uri>/SimpleTagLibrary</uri>

    <function>

        <name>print</name>

       <function-class>cn.itcast.cc.el.MyEl</function-class>

       <function-signature>java.lang.String getMessage()</function-signature>

    </function>

</taglib>

3. 在要调用本函数的JSP页面中添加引用:

<%@taglib prefix="cc" uri="/SimpleTagLibrary" %>

4.调用方法:${cc:print()}

上面就是编写自定义EL函数的过程,Apache组织为EL提供了一些比较常用的函数。

比如文件处理函数,方老师说这一点要注意,以后不需要在Servlet中把处理好的文本传递给页面,可以在页面中直接使用Apache提供的函数来方便快捷的处理文本。

Apache提供的EL常用函数在Standard.jar包中的“org.apache.taglibs.standard.functions.Functions”包中。URI是http://localhost:8080/jsp/jstl/functions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值