博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EL表达式的深刻认识
阅读量:2443 次
发布时间:2019-05-10

本文共 2794 字,大约阅读时间需要 9 分钟。

EL表达式的作用(Expression Language):

  • 获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

  • 执行运算:

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

  • 获取web开发常用对象:

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

  • 调用Java方法:

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

EL表达式获取数据:

*使用EL表达式获取数据语法: “${标识符}”

*EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。

*EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如: ${user.address.city} ${user.list[0]}:访问有序集合某个位置的元素 ${map.key}  : 获得map集合中指定key的值

下面有实例代码demo1.jsp的重要代码:

获取域中对象的值

<% pageContext.setAttribute("name", "张三"); request.setAttribute("name", "李四");%>${pageScope.name }${requestScope.name }

获取数组中的值

<% String [] arrs = {"小明","小红"}; request.setAttribute("arrs", arrs);%>${ arrs[1]}

域中集合的值

<% List
list = new ArrayList
(); list.add("小红"); list.add("小李"); request.setAttribute("list", list);%>${ list[1]}

域中Map集合的值

<% Map
map = new HashMap
(); map.put("aa", "小红"); map.put("bb.cc", "小李"); request.setAttribute("map", map);%>${map.aa }${map["bb.cc"] }

域中集合中有对象的值

<% List
list1 = new ArrayList
(); list1.add(new User2("小明","123")); list1.add(new User2("小红","456")); request.setAttribute("list1", list1);%>${ list1[1].username}${ list1[1].password}

执行运算:

*语法:${运算表达式}

下面有示例代码,可以参考:

EL的运算

<% request.setAttribute("a", 1); request.setAttribute("b", 2); request.setAttribute("c", 3); request.setAttribute("d", 4);%>

加法运算

${a + b }

关系运算

大于

${a > b } ${a gt b }

小于

${a 等于${a == b } ${a eq b }

不等于

${a != b } ${a ne b }

大于等于

${a <= b } ${a ge b }

小于等于

${a <= b } ${a le b }

逻辑运算

${a > b && c > d } ${a > b and c > d }

${a > b || c > d } ${a > b or c > d }

${ !(a > b) } ${ not (a > b) }

empty运算符:检查对象是否为null或“空”

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

获取WEB开发对象:

EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

语法:${隐式对象名称}   作用:获得对象的引用

下面有一张表格是是关于web常用开发对象的介绍:

隐含对象名称 描       述
pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
pageScope 代表page域中用于保存属性的Map对象
requestScope 代表request域中用于保存属性的Map对象
sessionScope 代表session域中用于保存属性的Map对象
applicationScope 代表application域中用于保存属性的Map对象
param 表示一个保存了所有请求参数的Map对象
paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
header 表示一个保存了所有http请求头字段的Map对象
headerValues 同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues["Accept-Encodings"]
cookie 表示一个保存了所有cookie的Map对象
initParam 表示一个保存了所有web应用初始化参数的map对象

下面有实例一点实例代码:

EL的WEB对象

${param.username }

获取3的请求头

${header.referer }

获取全局初始化参数

${initParam.username }

pageContext对象

${pageContext.request.remoteAddr }

调用Java方法:

这个本人目前还没做了解,详情可以参考:

转载地址:http://bzdqb.baihongyu.com/

你可能感兴趣的文章
JavaScript中的getOwnPropertyDescriptors方法
查看>>
使用Express在Node.js中进行条带支付简介
查看>>
node.js运行js_如何使用Node.js创建和运行计划的作业
查看>>
react 滚动条组件_使用React和样式化组件的页面滚动进度条
查看>>
vue事件处理有哪些方法_Vue事件处理方法
查看>>
阿里云redis 密钥登录_如何使Redis中的密钥失效
查看>>
redis中存集合_如何在Redis中管理集合
查看>>
flutter中的动画效果_Flutter中的基本动画
查看>>
gatsby_使用gatsby-awesome-pagination在Gatsby中进行分页
查看>>
Angular CLI:自定义webpack配置
查看>>
如何安装svelte_Svelte 3入门
查看>>
golang debian_如何在Debian 9上安装Go
查看>>
debian安装r_如何在Debian 10上安装R
查看>>
morgan logger_morgan入门:Node.js Logger中间件
查看>>
vue路由过渡_使用Vue进行更高级的路由:使用Vue路由器进行过渡
查看>>
sysadmin默认密码_Sysadmin电子书:使服务器正常工作
查看>>
使用React Fela样式化组件
查看>>
如何在Redis中管理列表
查看>>
angular cli_使用Angular CLI原理图
查看>>
flutter hello_您的第一个Flutter应用:Hello World
查看>>