首页 课程 师资 教程 报名

告诉你EL表达式如何使用

  • 2022-06-07 09:49:29
  • 399次 星辉

EL表达式的作用

EL表达式主要是代替jsp页面中的表达式脚本,在jsp页面中进行数据的输出,EL表达式在输出数据的时候简洁的多

如何使用

EL表达式的规则是:${表达式}

EL<body>
    <%
        request.setAttribute("key","value");
    %>
    <%--  如果在域对象中查不到所对应key的数据,jsp会返回null,而EL返回空(什么都不显示)  --%>
    jsp表达式写法:<%=request.getAttribute("key")%><br/>
    EL表达式写法:${key}
</body>

EL表达式搜索域对象时的顺序

我们发现我们在使用EL表达式是,内容单单写一个key值即可,那么就会思考,四大域对象,如果都有相同的key值,会调用哪一个呢?

我们通过测试以下代码可以发现,最先调用最小的域对象中的值

<body>
    <%
        pageContext.setAttribute("key","pageContext");
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
    %>
    ${key}
</body>

EL表达式的更多用法

创建一个person类,定义他的一些属性,数组类型、list类型、map类型。

public class Person {
    private String name;
    private String[] phone;
    private List<String> cities;
    private Map<String,String> map;
    public Integer getAge() {
        return 18;
    }
    //因代码太长看起来不方便,getset,构造器,tostring方法就不写出来了
}

我们创建一个测试类,通过点运算的方式可以调用他的某一属性。name,phone,cities,map都不难理解,而age属性没有在person类中定义,只定义了getAge方法,也可以显示出来。这说明了,EL表达式来person中查找数据时,找的是get方法,而不是他定义的属性

<body>
    <%
        Person person = new Person();
        person.setName("Tom");
        person.setPhone(new String[]{"13388886666","13599998888","13666677777"});
        List<String> list = new ArrayList<>();
        list.add("上海");
        list.add("北京");
        list.add("浙江");
        person.setCities(list);
        Map<String,String> map = new HashMap<>();
        map.put("key1","value1");
        map.put("key2","value2");
        map.put("key3","value3");
        person.setMap(map);
        request.setAttribute("person",person);
    %>
    输出person对象:${person}<br/>
    输出person对象中name属性:${person.name}<br/>
    输出person对象中数组的指定属性:${person.phone[0]}<br/>
    输出person对象中list某个对象属性:${person.cities[0]}<br/>
    输出person对象中map对象属性:${person.map}<br/>
    输出person对象中map指定对象属性:${person.map.key1}<br/>
    输出未定义的age属性:${person.age}<br/>
</body>

EL表达式的运算

关系运算、逻辑运算、算数运算、三元运算都跟Java中一样,主要介绍一下两种运算方式

empty运算 例如:${empty 对象}

empty运算可以判断一个数值是否为空,为空的时候返回true,否则返回false

以下几种情况为空

值为null的时候

值为空字符串的时候

值是Object类型数组,且长度为0时

list集合中,元素个数为0时

map集合中,元素个数为0时

点运算 例如:&{map.key1}

点运算,可以输出Bean对象中的某个属性的值

中括号运算

可以输出有序集合中某个元素的值(使用方法相当于下标)

可以输出map集合中key里含有特殊字符的值 例如:${map[‘a.a.a’]}

EL表达式中11个隐含对象

pageContext:可以获取jsp中的9大内置对象

pageScope:可以获取pageContext域中的数据

requestScope:可以获取request域中的数据

sessionScope:可以获取Session域中的数据

applicationScope:可以获取ServletContext域中的数据

param:可以获取请求参数的值

paramValues:可以获取请求参数的值,当一个key有多个value时使用

header:可以获取请求头的值

hesderValues:获取请求头的值,当一个key有多个value时使用

cookie:可以获取当前请求的cookie信息

initParam:可以获取web.xml中配置的上下文参数

四大域对象的使用方法

    <%
        pageContext.setAttribute("key","pageContext");
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
    %>
    pageContext:${pageScope.key}<br/>
    request:${requestScope.key}<br/>
    session:${sessionScope.key}<br/>
    application:${applicationScope.key}<br/>

pageContext对象的常用方法

<body>
 协议:${pageContext.request.scheme}<br>
 服务器 ip:${pageContext.request.serverName}<br>
 服务器端口:${pageContext.request.serverPort}<br>
 获取工程路径:${pageContext.request.contextPath}<br>
 获取请求方法:${pageContext.request.method}<br>
 获取客户端 ip 地址:${pageContext.request.remoteHost}<br>
 获取会话的 id 编号:${pageContext.session.id}<br>
</body>

以上就是关于“告诉你EL表达式如何使用”的介绍,大家如果想了解更多相关知识,可以关注一下星辉的Java星辉在线学习,里面的课程内容细致全面,从入门到精通,适合零基础的小伙伴学习,希望对大家能够有所帮助。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交