Web---JSP-EL表达式(1)

简介: Web---JSP-EL表达式

EL表达式简介


EL 全名为Expression Language。


EL主要作用:


获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的java对象中获取数据。


执行运算:

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。


获取web开发常用对象

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


调用Java方法

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


获取数据


使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。 
EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
${user.address.city}
${user.list[0]}:访问有序集合某个位置的元素
${map.key}  : 获得map集合中指定key的值
结合JSTL的foreach标签,使用EL表达式也可以很轻松迭代各种类型的数组或集合,示例:
迭代数组
迭代collection类型集合
迭代map类型集合


下面就来演示一下:

User.java:

package cn.hncu.elWeb.domain;
public class User {
    private String name;
    private Integer age;
    public User() {
        super();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
}


index.jsp:

<%@page import="cn.hncu.elWeb.domain.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <h2>演示El表达式技术---格式:${表达式}</h2>
    <h2>注意,El表达式的功能:按从小到大的顺序依次从4个容器中读取数据(如果读到则后面的容器跳过)。</h2>
    <h2>***数据必须要放入容器中</h2>
    <%
        pageContext.setAttribute("pageName", "page_Jack");
        request.setAttribute("reqName", "req_Jack");
        session.setAttribute("sessName", "sess_Jack");
        application.setAttribute("appName", "app_Jack");
    %>
    ${pageName}, ${reqName}, ${sessName}, ${appName}
    <hr/><br/>
    <!-- 用EL表达式读取JavaBean中的信息,注意"表达式"是"属性名" -->
    <%
        User user = new User();
        user.setName("张三");
        user.setAge(25);
        //注意!一定要把数据放入容器中
        pageContext.setAttribute("u", user);
        //这里为了区分下面的输出,特意用u来区分user,其实取user也是可以的
    %>
    ${u}<br/>
    ${u.name},${u.age}
    <hr/><br/>
    <!-- 用EL表达式读取Map中的信息 -->
    <%
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name", "Rose");
        map.put("sex", "Female");
        map.put("age", 25);
        map.put("tel", "13812345678");
        map.put("friend", user);
        //一定要记得把数据放入容器中
        request.setAttribute("m", map);
        //这里为了演示下面的输出,特意用m来区分map,其实取map也是可以的
    %>
    ${m.name},${m.sex},${m.age},${m.tel}<br/>
    朋友的名字:${m.friend.name}<br/>
    <hr/><br/>
    <!-- 用EL表达式读取List中的信息 -->
    <%
        List list = new ArrayList();
        list.add("TOM");
        list.add(user);
        list.add(map);
        session.setAttribute("list", list);
    %>
    ${list[0]},${list[1].name}<br/>
    朋友名字:${list[2].friend.name}<br/>
  </body>
</html>


演示结果:

image.png

EL表达式中的运算:

语法:${运算表达式},EL表达式支持如下运算符:

image.png

empty运算符:检查变量是否为null或“空”,这个很好用,最好熟记它!

二元表达式:${user!=null?user.name : “”} !

[ ] 和 . 号运算符。

运算示例

<!-- 演示El表达式中的运算 -->
    1、可以使用算术运算符:+  -  *  /  % 等<br/>
    ${u.age+10}
    2、可以使用比较运算符:== != <=  > >= 等<br/>
    ${u.name=="张三"}
    <br/>
    3、逻辑运算符:&&  ||  !(非) 等<br/>
    ${u.name=="张三" && u.age>20 }
    <br/>
    4、条件运算符:即"?"号表达式<br/>
    ${u.name!="张三" ? 100 : 50 }
    <br/>
    5、empty 运算符:如果表达式的值为null 或者 不存在该变量(存在该变量,该变量是一个List或Map,但是其中不包含元素)
    ---这些返回的全部是true<br/> 
    ${empty dkkkk}  --- true   不存在这样的变量名<br/>
    <%
        List li = new ArrayList();
        request.setAttribute("li", li);
    %>
    ${empty li}   --- true li中没有元素<br/>
    ${empty map}  --- true  因为那个map取名是m <br/>
    ${empty m}    --- false<br/>
    ${!empty m}   --- true<br/>

演示结果:

image.png

目录
相关文章
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 8
**JSP EL简化了JavaBean数据访问,支持算术和逻辑表达式,允许使用数字、字符串及布尔值。示例展示如何获取HTTP头信息:`${header[&quot;user-agent&quot;]}`显示&quot;user-agent&quot;头信息。`header`单值,`headerValues`为数组。**
30 0
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 7
**JSP EL简化了JavaBean数据访问,支持算术和逻辑表达式,允许使用数字、字符串及布尔值。示例展示如何获取请求参数:`${param.order}`或`${param[&quot;order&quot;]}`代表`order`参数,`${param[&quot;username&quot;]}`用于获取`username`。`param`对象返回单个字符串,`paramValues`返回字符串数组。**
34 0
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 6
**JSP EL简化了JavaBean数据访问,支持算术和逻辑表达式,以及整数、浮点数等类型。隐含对象如pageScope、requestScope等代表不同作用域,便于访问请求参数、HTTP头信息和Cookie等。通过scope对象,如applicationScope,可直接在表达式中访问不同层次的变量,如`applicationScope.box`。**
30 0
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 5
**JSP EL简化了JavaBean数据访问,支持数学和逻辑表达式,以及类型如整数、浮点数、字符串和布尔值。它有9个隐含对象,包括不同作用域的对象、请求参数、HTTP头、初始化参数和Cookie等。例如,使用`pageContext.request.queryString`可获取请求的查询字符串。**
26 0
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 4
**JSP EL简化了JavaBean数据访问,支持算术和逻辑表达式,包含整数、浮点数等类型。核心特性是隐含对象,如** `pageScope` **、** `requestScope` **到** `applicationScope` **,以及** `param` **、** `cookie` **和** `pageContext` **等,它们可在表达式中作为变量使用。实例演示有助于深入理解。
26 0
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 3
**JSP表达式语言(EL)**简化了JavaBean数据访问,支持算术和逻辑表达式,允许使用整数、浮点数、字符串及布尔值。**EL函数**通过命名空间引用,如 `${ns:func(param1, param2)}`,例如`fn:length`用于计算字符串长度。要使用函数,需先在服务器安装相关标签库,并在JSP中用`&lt;taglib&gt;`导入。
26 0
|
5月前
|
存储 Java
JSP 教程 之 JSP 表达式语言 2
**JSP表达式语言(EL)简化了JavaBean数据访问,支持算术和逻辑运算,如加(+), 减(-), 乘(*), 除(/), 模(%), 等于(==), 不等于(!=), 以及逻辑操作符(and, or, not)。EL还允许使用点(.), 方括号([])来访问属性和数组,以及测试空值(empty)。**
23 0
|
5月前
|
存储 Java 编译器
JSP 教程 之 JSP 表达式语言 1
**JSP EL**简化了JavaBean数据访问,用于创建算术和逻辑表达式。它支持整数、浮点数、字符串及布尔值。`${expr}`是表达式语法,`.`和`{}`用于访问属性。例如,设置JavaBean属性值:`&lt;jsp:setProperty name=&quot;box&quot; property=&quot;perimeter&quot; value=&quot;${2*box.width+2*box.height}&quot; /&gt;`。
39 0
|
6月前
|
存储 XML SQL
jsp、EL表达式、Jstl使用
jsp、EL表达式、Jstl使用
|
Java
欢迎来到Jsp编程课时六——EL表达式(JSP第十五课时)
欢迎来到Jsp编程课时六——EL表达式(JSP第十五课时)
98 0