JSP中的EL表达式

您所在的位置:网站首页 jspel表达式语法为 JSP中的EL表达式

JSP中的EL表达式

2024-03-03 10:20| 来源: 网络整理| 查看: 265

目录

一、EL表达式简介

二、EL表达式获取数据

1.EL 表达式搜索域数据的顺序

2.EL表达式获取JavaBean的数据

2.1 JavaBean规范

2.2 获取JavaBean中不同类型的数据

三、EL的11个隐含对象

1.pageContext的使用

2.获取四个特定域中的属性

3.其他隐含对象的使用

四、EL中的运算符

1.关系运算

2.逻辑运算

3.算数运算

4.empty运算

5.三元运算符

6."."点运算和[]中括号运算符

一、EL表达式简介 EL 表达式的全称:Expression Language。是表达式语言。EL 表达式的作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。EL表达式的语法格式:${表达式}。EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。 二、EL表达式获取数据

示例:

EL表达式简介 JSP表达式输出userName: JSP表达式输出password: EL表达式输出userName:${userName } EL表达式输出password:${password }

 

1.EL 表达式搜索域数据的顺序

EL 表达式主要是在 jsp 页面中输出数据。主要是输出域对象中的数据。当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。如下:

EL表达式输出数据:${key }

访问浏览器结果:EL表达式输出数据:pageContextValue

2.EL表达式获取JavaBean的数据 2.1 JavaBean规范 JavaBean 类必须是一个公共类,并将其访问属性设置为 public。JavaBean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器,此构造器也应该通过调用各个特性的设置方法来设置特性的缺省值。一个JavaBean类不应有公共实例变量,类变量都为private。持有值应该通过一组存取方法(getXxx 和 setXxx)来访问:对于每个特性,应该有一个带匹配公用 getter 和 setter 方法的专用实例变量。若是布尔值,可以用isXxx来代替getXxx。成员变量的第二个字母最好不要大写, 像rCategory, hFilename之类,生成getter 和setter会有问题。 2.2 获取JavaBean中不同类型的数据 public class Person { private String name; private String[] hobbies; private List friends; private Map map; public String getName() { System.out.println("Person类的getName方法"); return name; } public void setName(String name) { this.name = name; } public String[] getHobbies() { System.out.println("Person类的getHobbies方法"); return hobbies; } public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } public List getFriends() { System.out.println("Person类的getFriends方法"); return friends; } public void setFriends(List friends) { this.friends = friends; } public Map getMap() { System.out.println("Person类的getMap方法"); return map; } public void setMap(Map map) { this.map = map; } @Override public String toString() { return "Person类的toString方法"; } } EL表达式输出p对象: ${person } EL表达式输出name成员: ${person.name } EL表达式输出hobbies数组的第一个元素: ${person.hobbies[0] } EL表达式输出hobbies数组越界的元素: ${person.hobbies[10] } EL表达式输出firends集合: ${person.friends } EL表达式输出firends集合的第一个元素: ${person.friends[0] } EL表达式输出map: ${person.map } EL表达式输出map的第一个键对应的值: ${person.map.key1 }

浏览器访问结果:

由于在JavaBean中每个成员的getter方法中都往控制台输出了一句话,下面为控制台输出:

可以看到,EL表达式获取值其实是通过JavaBean的getter方法获取数据。 

三、EL的11个隐含对象

EL 个达式中 11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用。如下:

变量类型作用pageContextPageContextImpl它可以获取 jsp 中的九大隐含对象pageScopeMap它可以获取 pageContext 域中的数据requestScopeMap它可以获取 request 域中的数据sessionScopeMap它可以获取 session 域中的数据applicationScopeMap它可以获取 application 域( ServletContext)中的数据paramMap它可以获取请求参数的值paramValuesMap 它也可以获取请求参数的值,获取多个值的时候使用。headerMap它可以获取请求头的信息headerValuesMap它可以获取请求头的信息,它可以获取多个值的情况cookieMap它可以获取当前请求的 Cookie 信息initParamMap它可以获取在 web.xml 中配置的上下文参数 1.pageContext的使用

EL表达式中的pageContext可以获取JSP中的九个隐含对象,JSP中的几个对象的原型我们可以查看其转换后的Servlet类得知。比如JSP中的request对象就是HttpRequest对象,session就是HttpSession对象,所以我们可以调用其暴露出来的getter方法,而EL表达式只不过是以“.”的形式执行其getter方法。

1.获取请求的协议: ${pageContext.request.scheme } 2.获取服务器IP: ${pageContext.request.serverName } 3.获取服务器端口: ${pageContext.request.serverPort } 4.获取工程路径: ${pageContext.request.contextPath } 5.获取请求方法: ${pageContext.requesthod } 6.获取客户端 IP: ${pageContext.request.remoteHost } 7.获取会话ID: ${pageContext.session.id }

浏览器访问结果如下:

2.获取四个特定域中的属性

如果不使用EL域对象那么其搜索域数据的顺序是由小到大的,EL提供4个域对象方便精准获取数据。

pageContext域中的数据: ${pageScope.key } request域中的数据: ${requestScope.key } session域中的数据: ${sessionScope.key } application域中的数据: ${applicationScope.key }

浏览器访问结果如下:

3.其他隐含对象的使用

获取请求参数

1.获取请求参数userName的值:${param.userName } 2.获取请求参数userName的值:${paramValues.userName[0] } 3.获取请求参数hobby的值 : ${paramValues.hobby[0] } 4.获取请求参数hobby的值 : ${paramValues.hobby[1] }

浏览器访问结果如下:

获取请求头信息

1.输出请求头【User-Agent】的值:${header['User-Agent'] } 2.输出请求头【User-Agent】的值:${headerValues['User-Agent'][0] } 3.输出请求头【Accept-Language】的值:${header['Accept-Language'] } 4.输出请求头【Connection】的值:${header.Connection } 5.输出请求头【Host】的值:${header.Host }

浏览器访问结果如下:

获取Cookie信息

1.获取 Cookie 的名称:${cookie.JSESSIONID.name } 2.获取 Cookie 的值:${cookie.JSESSIONID.value }

浏览器访问结果如下:

获取web.xml中配置的值

userName root 获取全局配置userName 的值:${initParam.userName }

访问结果为:root

四、EL中的运算符 1.关系运算 关系运算符示例结果== 或 eq${5 == 5} 或 ${5 eq 5}true!= 或 ne${5 != 5} 或 ${5 ne 5}false 或 gt${2 > 8 } 或 ${2 gt 8 }false= 6} 或 ${2 ge 6}false 2.逻辑运算 逻辑运算符示例结果&& 或 and${12 < 20 && 2 > 1} 或 ${12 < 20 and 2 > 1}true|| 或 or${12 == 12 || 1 > 6} 或 ${12 == 12 or 1 > 6}true! 或 not${! true} 或 ${not true}false 3.算数运算 算数运算符示例结果+${10 + 1}11-${10 - 1}9*${10 * 2}20/ 或 div${10 / 2} 或 ${10 div 2}5% 或 mod${11 % 10} 或 ${11 mod 10}1 4.empty运算

empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。

以下几种情况为空:

值为 null 值的时候,为空值为空串的时候,为空值是 Object 类型数组,长度为零的时候list 集合,元素个数为零map 集合,元素个数为零 5.三元运算符

表达式 1?表达式 2:表达式 3

如果表达式 1 的值为真,返回表达式 2 的值,如果表达式 1 的值为假,返回表达式 3 的值。

6."."点运算和[]中括号运算符

.点运算,可以输出 Bean 对象中某个属性的值。[]中括号运算,可以输出有序集合中某个元素的值。并且[]中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。

${pageScope.map["Accept-Language"] } ${pageScope.map["User-Agent"] } ${pageScope.map.Connection }

最后需要注意的是:EL表达式目的是替代JSP脚本表达式可以使页面变得整洁,方便,避免的出现。由于JSP中Java代码就是写在中的,这将导致不能与EL表达式一起使用,可以利用JSP中的各种标签替代Java代码,这样可以结合EL表达式。比如对于一些使用if判断的java代码可以使用JSP标签来代替等。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3