文档章节

EL表达式的使用及编写和使用EL表达式的自定义函数

Lunqi
 Lunqi
发布于 2015/08/19 17:38
字数 805
阅读 2738
收藏 64
点赞 3
评论 4

什么是EL表达式

Expression Language————表达式语言


EL表达式的作用

获取数据

执行运算

获取Web开发常用对象

执行Java方法


获取数据:

<%
    User user = new User("旺财", "幸福路", 18);
    pageContext.setAttribute("pageContextUser", user);
    request.setAttribute("requestUser", user);
    session.setAttribute("sessionUser", user);
    application.setAttribute("applicationUser", user);
%>

<h2>获取page域对象</h2>
${pageContextUser.name}----${pageContextUser.addr}-----${pageContextUser.age}
<br/>
${pageScope.pageContextUser.name}----${pageScope.pageContextUser.addr}-----${pageScope.pageContextUser.age}
<hr />

<h2>获取request域对象</h2>
${requestUser.name}----${requestUser.addr}-----${requestUser.age}
<br/>
${requestScope.requestUser.name}----${requestScope.requestUser.addr}-----${requestScope.requestUser.age}
<hr />

<h2>获取session域对象</h2>
${sessionUser.name}----${sessionUser.addr}-----${sessionUser.age}
<br/>
${sessionScope.sessionUser.name}----${sessionScope.sessionUser.addr}-----${sessionScope.sessionUser.age}
<hr />

<h2>获取application域对象</h2>
${applicationUser.name}----${applicationUser.addr}-----${applicationUser.age}
<br/>
${applicationScope.applicationUser.name}----${applicationScope.applicationUser.addr}-----${applicationScope.applicationUser.age}
<hr />
<!-- 
    EL表达式获取数据的规律:
    1.EL表达式只能获取四大域对象的数据
    2.在没有指定获取哪个域的时候从小域到大域开始遍历获取
    3.当然也可以指定域:pageScope,requestScope,sessionScope,applicationScope
    4.所以如果把对象存在sessionScope或者applicationScope那么还是指定一下域,这样子EL表达式就不用遍历了
 -->
 
<hr />
<%
User user2 = new User("小强", "健康街", 28);
User[] users  = {user,user2};
List<User> userList = new ArrayList<User>();
userList.add(user);
userList.add(user2);
pageContext.setAttribute("arrayUser", users);
pageContext.setAttribute("listUser", userList);
 %>
 
<h2>利用.和[]获取数组中的对象中的值</h2>
${pageScope.arrayUser[0].name }---${pageScope.arrayUser[0].addr }---${pageScope.arrayUser[0].age }
<br/>
${pageScope.arrayUser[1].name }---${pageScope.arrayUser[1].addr }---${pageScope.arrayUser[1].age }
<hr />

<h2>利用.和[]获取集合中的对象中的值</h2>
${pageScope.listUser[0].name }---${pageScope.listUser[0].addr }---${pageScope.listUser[0].age }
<br/>
${pageScope.listUser[1].name }---${pageScope.listUser[1].addr }---${pageScope.listUser[1].age }
<hr />

<h2>利用[]获取对象中的值</h2>
${pageScope.listUser[0]["name"] }---${pageScope.listUser[0]["addr"] }---${pageScope.listUser[0]["age"] }
<br/>
${pageScope.listUser[1]["name"] }---${pageScope.listUser[1]["addr"] }---${pageScope.listUser[1]["age"] }

<hr />
<!-- 
    EL表达式获取数据时.和[]的区别
    在集合或者数组中可以使用[]输入下标来直接获取值
    而.后面不能跟有数字,所以不能作为下标的获取标识来使用
    []中跟的值要么是数字,要么要用""引起来
    .后面跟的东西既不能是数字,也不能用""引起来
 -->
<hr />


EL表达式获取在Web开发中常用的对象

EL表达式的11个隐式对象

pageContext

pageScope

requestScope

SessionScope

ApplicationScope

cookie

initParam

param

paramValues

header

headerValues


注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]

      ${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.key.name}或${cookie.key.value}



EL执行运算

${3+2*8+5/8 }


简易版自定义函数编写配置方法:

    EL表达式语法允许开发人员开发自定义函数,以调用Java类的方法

    在EL表达式中调用的只能是Java类的静态方法

    这个Java类的静态方法需要在TLD(Tagliary Definition)文件中描述,才可以被EL表达式调用。

    EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能。

1.编写调用自定义函数的类,编写类中具体实现的静态方法

2.编写tld文件在web-inf目录下

3.jsp中使用taglib指令导入自定义函数库

4.使用

5.使用图解


求关注啊。。。。。。。


© 著作权归作者所有

共有 人打赏支持
Lunqi

Lunqi

粉丝 39
博文 31
码字总数 29786
作品 1
杭州
程序员
加载中

评论(4)

TNT_GG
TNT_GG
获益匪浅,收藏了。
Lunqi
Lunqi

引用来自“寻梦2012”的评论

关注一下12

我读书少,你不要骗我。。。。。。
寻梦2012
寻梦2012
关注一下12
hmy_362322
hmy_362322
收藏了
EL表达式和EL函数库

一、EL表达式简介   EL 全名为Expression Language。EL主要作用: 1、获取数据     EL表达式主要用于替换JSP页面中的脚本表达式<%= %>,以从各种类型的web域 中检索java对象、获取数据...

_Roger_ ⋅ 2016/01/26 ⋅ 0

(七)JSP之EL表达式

一、简介 最初定义在JSTL1.0规范中,直到JSP2.0之后,EL表达式才正式成为JSP规范中的一部分。 EL表达式定义了一系列的隐式对象和操作符,使得开发人员能够更方便地访问页面上下文,以及不同作...

iborder ⋅ 2016/09/05 ⋅ 0

javaweb开发之EL和JSTL

一、EL 1.概述 EL 全名为Expression Language。 EL表达式可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码。 EL主要作用如下: (1)获取数据: EL表达式主要用于替换JSP页面中的...

小米米儿小 ⋅ 2013/12/05 ⋅ 0

JSP复习(三):EL函数和算数、逻辑、关系操作符

一、自定义EL函数 1.编写一个有公共静态方法的Java类 package foo; public class DiceRoller {//函数方法必须是公共且静态的方法public static int rollDice(){return (int) ((Math.random()...

这个人很懒-啥都没写 ⋅ 2013/07/10 ⋅ 0

EL表达式--自定义标签库

EL(Expression Language) 目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。 EL表达式函数,主要功能是完成对...

初雪之音 ⋅ 2014/08/27 ⋅ 1

Fel 0.8 发布,性能可媲美Java的表达式引擎

Fel是轻量级的高效的表达式计算引擎。 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求。 Fel是开放的,引擎执行中的多个模块都可以扩展或替换。Fel的执行主要是通过函...

greenpine ⋅ 2012/11/14 ⋅ 8

Java 版模板引擎--jsp-jstl-engine

Ayada 是一个Java 版的采用 jstl 语法的模板引擎。所有的实现均与 jsp 中的 jstl 一样。对于习惯使用 jstl 的人来说几乎没有任何学习成本。 支持 jsp/jstl 的全部功能,对于使用 jstl 的人来...

xuesong123 ⋅ 2016/01/13 ⋅ 1

JSP自定义标签扩展----支持EL,访问Spring容器

一、使JSP自定义标签支持EL表达式(${}) 我写了自定义标签a:rim,想让他的title属性支持${},可是出现了异常. 要做下面两件事就可以达到目的了: 1 在tld文件如下配置: 其中关键的是 <rtexprval...

lee123lee ⋅ 2013/09/28 ⋅ 0

xuesong123/jsp-jstl-engine

概述 Overview Ayada是一个完全脱离web环境的jsp&jstl引擎,几乎兼容jsp&jstl的全部功能。 语法完全同jsp语法,支持java脚本和jstl标签,对于使用jstl的人来说没有任何学习成本。 零配置,不...

xuesong123 ⋅ 2016/01/20 ⋅ 0

(JavaEE-11)JSTL标签库

JSTL标签库 JSTL是SUN公司已经开发好的一套标签库,供我们直接使用,它分为: 核心标签库 国际化标签 数据库标签 XML标签 JSTL函数(EL函数) 核心标签库 标签用于输出一段文本内容到pageConte...

_-Leon-_ ⋅ 2014/07/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部