Java-Jsp-El

x33g5p2x  于2022-04-12 转载在 Java  
字(3.3k)|赞(0)|评价(0)|浏览(256)

什么是EL表达式

EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

EL表达式的作用

替换和简化jsp页面中java代码的编写,用来代替<%=…%>

EL表达式的语法

${表达式}

EL表达式的使用

运算

操作符描述
.访问一个Bean属性或者一个映射条目
[]访问一个数组或者链表的元素
( )组织一个子表达式以改变优先级
+
-减或负
*
/ or div
% or mod取模
== or eq测试是否相等
!= or ne测试是否不等
< or lt测试是否小于
> or gt测试是否大于
<= or le测试是否小于等于
>= or ge测试是否大于等于
&& or and测试逻辑与
|| or or测试逻辑或
! or not测试取反
empty测试是否空值
1. 算数运算符: + - * /(div) %(mod)
2. 比较运算符: > < >= <= == !=
3. 逻辑运算符: &&(and) ||(or) !(not)
4. 空运算符: empty
	* 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
	* ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
	* ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

获取值

el表达式只能从域对象中获取值

1. ${域名称.键名}:从指定域中获取指定键的值
	* 域名称:
		1. pageScope		--> pageContext
		2. requestScope 	--> request
		3. sessionScope 	--> session
		4. applicationScope --> application(ServletContext)
	* 举例:在request域中存储了name=张三
	* 获取:${requestScope.name}

2. ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

3. 获取对象、List集合、Map集合的值
	1. 对象:${域名称.键名.属性名}
		* 本质上会去调用对象的getter方法

	2. List集合:${域名称.键名[索引]}

	3. Map集合:
		* ${域名称.键名.key名称}
		* ${域名称.键名["key名称"]}

隐式对象

el表达式中有11个隐式对象

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

pageContext对象是JSP中pageContext对象的引用。

* 通过pageContext对象,您可以访问request对象。比如,访问request对象传入的查询字符串,就像这样:
* 获取jsp其他八个内置对象
	* ${pageContext.request.contextPath}:动态获取虚拟目录

演示

<%@ 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>

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复如有侵权,请私信联系我感谢,配合,希望我的努力对你有帮助^_^

相关文章