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中的其他隐含对象

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值