Java基础知识夯实day10:EL表达式

EL表达式只是JSP中的表达式,不是一种开发语言.

基本语法:${EL基本表达式}

全名是Expression Language.EL主要作用。

1.获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式。以从各种类型的web域中检索java对象。获取数据(某个web域中的对象,访问javabean的属性,访问list集合,访问map集合,访问数组)

2.执行运算

利用EL表达式可以在JSP页面中执行一些基本的关系运算,逻辑运算和算术运算.以在JSP页面中完成一些简单的逻辑运算。例如:${user==null}

3.获取web开发常用对象

EL表达式定义了一些隐式对象。利用这些隐式对象,web开发人员可以轻松获取对web常用对象的引用,从而获取这些对象中的数据。

4.调用java方法

EL表达式允许用户开发自定义的EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

一、EL表达式只能获取四大域对象中的数据

 

二、数学逻辑运算符

EL表达式支持如下运算符:

关系运算符说明范例结果
==或eq等于${5==5}或${5eq5}true
!=或ne不等于${5!=5}或${5ne5}false
<或lt小于 ${5<5}或${5lt5}false
>或gt大于${5>5}或${5gt5}false
<=或le小于等于${5<=5}或${5le5}true
>=或ge大于等于${5>=5}或${5ge5}true
逻辑运算符说明范例结果
&&或and交集${A&&B}或${A and B}true/false
||或or并集${A||B}或${AorB}true/false
!或not${!A}或${not A}true/false

empty运算符:检查对象是否为null或'空',对于集合,即使集合本身对象不为null,没有任何元素同样为true

三元表达式:${user!=null?user.name:""}

[]和.号运算符

EL表达式不支持字符串连接操作。
三、获取JSP的内置对象(11个EL内置对象):难点,不要与JSP的内置对象和范围名称搞混

11个EL隐式对象中,其中一个是表示自身对象外,其余都是表示Map结构

EL隐含对象名称java类型备注
pageContextjavax.servlet.jsp.PageContext与JSP内置对象中的完全相同
pageScopejava.util.Map代表PageContext页面范围域那个Map
requestScopejava.util.Map代表ServletRequest请求范围域那个Map
sessionScopejava.util.Map代表HttpSession会话范围域那个Map
applicationScopejava.util.Map代表ServletContext应用范围域那个Map
paramjava.util.Map代表请求参数。key:请求参数的名称。value:请求参数的值。字符串
paramValuesjava.util.Map代表请求参数。key:请求参数的名称。value:请求参数的值。字符串数组
headerjava.util.Map代表请求消息头。key:头名称。value:头值,他是一个字符串
headerValuesjava.util.Map代表请求消息头。key:头名称。value:头值。字符串数组
cookiejava.util.Map代表客户端提交的Cookie的Map.key:cookie的name.value:cookie对象本身
initParamjava.util.Map代表全局初始化参数(web.xml中的context-param)key:参数名称;value:参数值

 

四、调用普通类的静态方法(EL函数)

编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤):

a.编写一个普通的java类,提供一个静态方法

public class FunctionDemo {
    public static String toUpperCase(String str){
        return str.toUpperCase();
    }
}

b.在javaWeb应用的web-info目录下建立一个后缀名为tld(taglib definition)的xml文件(参考tomcate中的示例)。具体内容如下:

<?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>myfn</short-name>
    <uri>http://localhost:8080/myfn</uri>
    <function><!-- 定义函数 -->
        <description>转换给定英文字母字符串为大写英文字符串</description>
        <name>toUpperCase</name>
        <function-class>com.freesky.el.FunctionDemo</function-class>
        <function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature><!-- 方法签名 -->
    </function>
</taglib>

c、(可选步骤)前提是把tld文件放到WEB-INF目录下。

告知应用,tld文件和tld中的uri的对应。修改web.xml,增加以下内容。

  <jsp-config>
          <taglib>
              <taglib-uri>http://localhost:8080/myfn</taglib-uri>
              <taglib-location>/WEB-INF/myfn.tld</taglib-location>
          </taglib>
  </jsp-config>

d.在JSP中使用

用taglib指令,引入自定义的EL函数库

<%@ taglib uri="http://localhost:8080/myfn" prefix="myfn" %>

${myfn:toUpperCase(p)}

五、SUN提供的标准函数库

JSTL标准标签库(JSP Standard Tag Libary)

***Core:核心;

**Fmt:国际化;

SQL:数据库;

XML:xml操作;

**fn:EL函数库;

导入jstl的jar包,1.1需要两个jar包standard.jar jstl.jar. 1.2只需要导入一个jar包,jstl.jar

******六、jstl中的核心标签库(替换掉jsp中java脚本)

c:if

     作用:判断是否为true,如果为true,那么标签的主体内容就会显示。

     属性:

              test:必须的。要求必须是boolean的。支持jsp的java表达式和EL表达式

              var:保存test运算结果的变量

              scope:保存的域范围。默认是page;

c:forEach

            遍历:数组、List、Set、Map

           属性:

                  items:要遍历的目标对象,支持表达式;

                  属性:

                          items:要遍历的目标对象,支持表达式。

                          var:变量名。指向当前遍历集合中的一个元素

                         begin:开始遍历索引(含)

                         end:结束索引遍历(含)

                         step:步长。默认是1    

                         varStatus:取一个名字,引用了一个对象。

                                      该对象有以下方法:

                                      int  getIndex():获取当前记录;从0开始;

                                      int getCount():获取当前顺序;从1开始;

                                      boolean isFirst():是否是第一条记录;

                                      boolean isLast():是否是最后一条记录;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值