EL(表达式语言)

EL(Expression Language):目的是为了简化Jsp页面的语言,使页面看起来更加简洁

  基本的语法特点

    以“${"开头,以”}“结束

一 与低版本的环境兼容----禁用EL

  (1) 使用斜杠""符号:    ${expression}

  (2) 使用page命令:   <%@ page isELIgored="true" %>  // 属性为true则忽略EL表达式,反之则解析EL表达式

  (3) 在web.xml文件中配置<el-ignored>元素

    eg:

<jsp-config>
        <jsp-property-group>
            <ul-pattern>*.jsp</url-pattern>
            <el-Ignored>true</el-Ignored>    //此处设置为false,表示使用EL
          </jsp-property-group>
</jsp-config>

二  保留的关键字

    el也有自己的保留的关键字,在为变量命名时候,应尽量避免给这些关键字

    and eq gt  instanseof div .......

三 EL的运算符及优先级

    1 通过EL访问数据

      通常情况下,"[]"和"."运算符是等价的。可以相互替代

      eg ${userInfo.id} ==  ${userInfo[id]}

      特别情况;例如在数组元素的获取,集合元素的获取

    2 EL中进行算术运算

      除 /或div

      求余  %或mod

      在这里值得注意的是+号两边的类型如果可以转换成数值类型的话就进行加运算,否则抛出异常

        3 在EL中判断对象是否为空

      ${empty expression}

    4 在EL中进行条件运算

    这一点和Java中的一样

     ${条件表达式 ?表达式1:表达式2}

    如果条件为true,则执行表达式1;否则执行表达式2

四 EL的隐含对象

   EL提供了11个隐含对象,这些对象类似于JSP的内置对象,也是直接通过对象名进行操作的    

   1 页面上下文对象  pageContext

      这里除了application,config和pageContext)都可以访问Jsp内置核心对象

      eg: ${pageContext.request}

   2 访问作用域范围的隐含对象

      EL中提供了4个用于访问作用域范围的隐含对象,即pageScope,requestScope,sessionScope,applicationScope

     3 访问环境信息的隐含对象

      EL中提供了6个访问环境信息的隐含对象,即param,paramValues,header和headerValues对象,initParam对象

五 自定义EL

  步骤:

    (1) 编写一个Java类,并在该类中编写公用的静态方法,用于实现自定义EL函数的具体功能

    (2)编写标签库描述文件,对函数进行声明。该文件的扩展名为.tld,被保存到Web应用的WEB-INF文件夹下

    (3)在JSP页面总引用标签库,并调用定义的EL函数,实现响应的功能。

       

  (1) Java代码

package com.yc
public class String{
       public static void main(String[] args){
            String newStr=str.replaceAll("
","<br>");
            newStr=newStr.replaceAll("","&nbsp;");
            ruturn newStr;
        }
}

  (2) 编写标签库文件,名称为stringDel.tld

    

<?xml version="1.0" encoding="GBK"?>
<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">   
    <!-- 定义函数版本 -->
    <tlib-version>1.0</tlib-version>
    <uri>/stringDeal</uri>
  <!--定义函数名称-->
  <short-name>el<short-name>  

<!-- 定义第一个函数 -->
    <function>
        <!-- 定义第一个函数:reverse -->
        <name>reverse</name>
        <!-- 定义函数处理类 -->
        <function-class>com.yc.StringDeal</function-class>
        <!-- 定义函数的对应方法 -->
        <function-signature>
            java.lang.String shiftEnter(java.lang.String)
        </function-signature>
    </function>
    
</taglib>        

  (3) 编写index.jsp,使用自定义标签

<%@ taglib uri="/stringDeal" prefix="el" %> 

  <body>
    ${shiftEnter("ad") }
  </body>

   

    

原文地址:https://www.cnblogs.com/yaobolove/p/5184278.html