EL表达式

EL 全名为Expression Language

作用:从域对象中取值,替换或者简化jsp页面中java代码的编写

EL中的基础操作符

EL表达式支持大部分Java所提供的算术和逻辑操作符:

操作符描述
.访问一个Bean属性或者一个映射条目
[]访问一个数组或者链表的元素
+
-减或负
*
/ or div
% or mod取模
== or eq测试是否相等
!= or ne测试是否不等
< or lt测试是否小于
> or gt测试是否大于
<= or le测试是否小于等于
>= or ge测试是否大于等于
&& or and测试逻辑与
|| or or测试逻辑或
! or not测试取反
empty测试是否空值(字符串,集合,数组是否为null并且长度是否为0)

获取域对象中的值

语法:${域对象别名.关键字}

JSP域对象名EL域对象别名
applicationapplicationScope
requestrequestScope
sessionsessionScope
pageContextpageScope
  • 获取域对象中的对象值

  • 获取域对象中的list集合值

  • 获取域对象中的map集合值

<head>
    <title>EL表达式的基本使用</title>
</head>
<body>
<%--
    el表达式 主要的作用 简化程序员从四大域对象中获取值的过程
    语法:  ${}
--%>

<%
    // 数据准备 在域对象中存储值
    pageContext.setAttribute("pageCont", "pageContextValue");
    pageContext.setAttribute("request", " pageContextRequestValue");

    request.setAttribute("request", "requestValue");
    session.setAttribute("session", "sessionValue");
    application.setAttribute("application", "applicationValue");
%>

<p>----------------指定域对象获取key对应的值------------------------</p>
<%--指定域对象获取key对应的值--%>
<p>pageContext = ${pageScope.pageCont}</p>
<p>request=${requestScope.request}</p>
<p>session=${sessionScope.session}</p>
<p>application=${applicationScope.application}</p>


<p>----------------不指定域对象获取key对应的值------------------------</p>
<%--不指定域对象获取key对应的值

使用el表达式  在不指定域对象获取key所对应的值时
那么el表达式会依次的从四个对象中去找 先从哪个域对象中找到对应的key  则直接返回
 pageScope  -> requestScope  ->  sessionScope   ->  applicationScope

--%>
<p>pageContext = ${pageCont}</p>
<p>request=${request}</p>
<p>session=${session}</p>
<p>application=${application}</p>

<p>----------------获取的key在四个域对象中都不存在------------------------</p>
<%--获取的key在四个域对象中都不存在--%>
<p>aa=${aa}</p>
</body>

<head>
    <title>EL表达式处理复杂类型的值</title>
</head>
<body>
<%
    // 简单类型的值  String
    request.setAttribute("str", "stringValue");

    //  对象类型 User
    //User user = new User();
    //user.setAge(20);
    //user.setUsername("Tom");

    User user = new User("jack", 30);
    request.setAttribute("user", user);

    //  数组类型
    int[]  numbers = new int[]{1,2,3,4,5};
    request.setAttribute("array", numbers);

    // 集合类型 List<String>     List<User>
    ArrayList<String> list = new ArrayList<>();
    list.add("aa");
    list.add("bb");
    list.add("cc");
    list.add("dd");
    request.setAttribute("list", list);

    ArrayList<User> users = new ArrayList<>();
    users.add(user);
    users.add(user);
    users.add(user);
    users.add(user);

    request.setAttribute("users", users);

    // Map
    HashMap<String, Object> map = new HashMap<>();
    map.put("username", "admin");
    map.put("password", "123456");
    request.setAttribute("map", map);

%>

<p>----------------简单数据类型----------------------</p>
<p>str = ${str}</p>

<p>----------------User对象数据类型----------------------</p>
<p>str = ${user}</p>
<ul>
<%--
 User   ->  getUsername()   getUname()
    user.uname   uname 代表的并不是user类中的属性   在获取值时 找的时当前key对应的get方法  user.uname    getUname
 --%>
    <li>${user.username}</li>
    <li>${user.age}</li>
</ul>


<p>----------------数组类型的值----------------------</p>
<p>array=${array}</p>

<ul>
    <li>${array[0]}</li>
    <li>${array[1]}</li>
    <li>${array[2]}</li>
    <li>${array[3]}</li>
    <li>${array[4]}</li>
</ul>

<p>----------------list集合类型的值----------------------</p>
<p>array=${list}</p>

<ul>
    <li>${list.get(0)}</li>
    <li>${list.get(1)}</li>
    <li>${list.get(2)}</li>
    <li>${list.get(3)}</li>
</ul>


<p>users=${users}</p>
<p>user = ${users.get(0).username}</p>
<p>user = ${users.get(0).age}</p>

<p>user = ${users.get(1).username}</p>
<p>user = ${users.get(1).age}</p>

<p>user = ${users.get(2).username}</p>
<p>user = ${users.get(2).age}</p>


<p>----------------map集合类型的值----------------------</p>
<p>array=${map}</p>

<ul>
    <li>${map.get("username")}</li>
    <li>${map.get("password")}</li>
</ul>
</body>
<head>
    <title>EL表达式实现运算</title>
</head>
<body>

<%--数学运算--%>
<p>1+2=${1+2}</p>

<%--关系运算--%>
<p>1<2 = ${1 < 2}</p>
<p>1<2 = ${1 lt 2}</p>

<%--逻辑运算--%>
<p>true&false = ${true and false}</p>
<p>true&false = ${true && false}</p>

</body>

JSP EL隐含对象

JSP EL支持下表列出的隐含对象:

隐含对象描述
pageScopepage 作用域
requestScoperequest 作用域
sessionScopesession 作用域
applicationScopeapplication 作用域
paramRequest 对象的参数,字符串
paramValuesRequest对象的参数,字符串集合
headerHTTP 信息头,字符串
headerValuesHTTP 信息头,字符串集合
initParam上下文初始化参数
cookieCookie值
pageContext当前页面的pageContext 获取jsp中的其他隐含对象

您可以在表达式中使用这些对象,就像使用变量一样

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值