当前位置: 首页 > news >正文

EL表达式知识

什么是EL表达式,EL表达式作用?

EL表达式是表达式语言

EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。

因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多

<%request.setAttribute("key","值");
%>
表达式脚本输出的key的值是:<%=request.getAttribute("key")%><br>
EL表达式输出key的值是:${key}

 EL表达式的格式是:${表达式}

EL表达式在输出null值的时候,输出的是空串。jsp表达式脚本输出null值的时候,输出的是null字符串。

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

 EL表达式主要是在jsp页面输出数据

主要是输出域对象中的数据

 当四个域当中都有相同的key数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出

 EL表达式输出Bean得到普通属性,数组属性。List集合属性,map集合属性

需求输出Person类中普通属性,数组属性。List集合属性和map集合属性

 定义一个person类

package com.guigu.pojo;import java.util.Arrays;
import java.util.List;
import java.util.Map;public class Person {//输出Person类中普通属性,数组属性。List集合属性和map集合属性private  int age;private  String[] phones;private List<String> cities;private Map<String,Object> map;public Person() {}public Person(int age, String[] phones, List<String> cities, Map<String, Object> map) {this.age = age;this.phones = phones;this.cities = cities;this.map = map;}@Overridepublic String toString() {return "Person{" +"age=" + age +", phones=" + Arrays.toString(phones) +", cities=" + cities +", map=" + map +'}';}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String[] getPhones() {return phones;}public void setPhones(String[] phones) {this.phones = phones;}public List<String> getCities() {return cities;}public void setCities(List<String> cities) {this.cities = cities;}public Map<String, Object> getMap() {return map;}public void setMap(Map<String, Object> map) {this.map = map;}
}

jsp页面设置属性值并输出

<%@ page import="com.guigu.pojo.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/11/10Time: 21:04To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%Person person=new Person();person.setAge(18);person.setPhones(new String[]{"110","120","119"});List<String> cities=new ArrayList<>();cities.add("郑州");cities.add("洛宁");cities.add("洛阳");cities.add("濮阳");person.setCities(cities);Map<String,Object> map=new HashMap<>();map.put("key1","value1");map.put("key2","value2");map.put("key3","value3");map.put("key4","value4");person.setMap(map);pageContext.setAttribute("person",person);
%>
输出Person:${person}<br>
输出person的age属性:${person.age}<br>
输出Person的cities属性:${person.cities}<br>
输出Person的pnones数组属性值:${person.phones[0]}<br><!--在后面加上[下标]输出某个属性至-->
输出person的map集合:${person.map}
输出map集合中某个key的值:${person.map.key1}<!--在map后面加上“.键名”即可-->
</body>
</html>

EL表达式--运算

 语法:${运算表达式},EL表达式支持如下运算符

1、关系运算

2、逻辑运算 

 

 3、算数运算

 empty运算

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

以下几种情况为空:

1、值为null值的时候,为空

2、值为空串的时候,为空

3、值是Object类型数组,长度为零的时候

4、list集合,元素个数为零

5、map集合,元素个数为零

<%request.setAttribute("emptyNull",null);
%>
${empty emptyNull}

三元运算

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

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

${12!=12?"李佳祥":"李大磊"}

 “.”点运算和[]中括号运算符

 点运算,可以输出Bean对象中某个属性的值.

[]中括号运算,可以输出有序集合中某个元素的值

并且[]中括号运算,还可以map集合中里含有特殊字符的key的值

<%Map<String,Object> map=new HashMap<>();map.put("a.a.a","aaavalue");map.put("b+b+b","bbbvalue");map.put("c-c-c","ccvalue");request.setAttribute("map",map);
%>
${map['a.a.a']}<br><!--出现特殊字符“.”,必须使用[]
${map['b+b+b']}

EL表达式的11个隐含对象 

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

变量        类型作用
pageContextPageContextImpl它可以获取jsp中的九大内置对象
pageScopeMap<String,Object>它可以获取pageContext域中的数据
requestScopeMap<String,Object>它可以获取request域中的数据
sessionScopeMap<String,Object>它可以获取session域中的数据
applicationScopeMap<String,Object>它可以获取ServletContext域中的数据
paramMap<String,String>它可以获取请求参数的值
paramValuesMap<String,String[]>它可以获取请求参数的值,可以获取多个值的时候使用
headerMap<String,String>它可以获取请求头的信息
headerValuesMap<String,String[]>它可以获取请求头的信息,可以获取多个值的时候使用
cookieMap<String,cookie>它可以获取当前请求的cookie信息
initParamMap<String,String>它可以获取在web.xml中配置的 <context-param>上下文参数

EL获取四个域对象中的属性

pageScope                                    ------                              pageContext域

requestScope                               --------                             request域

sessionScope                              -----------                               session域

applicationScope                          -----------                                ServletContext域

语法:变量名. 属性名

 例如

<%request.setAttribute("key","values");
%>
${requestScope.key}

pageContext对象的使用

1、协议

2、服务器ip

3、服务器端口

4、获取工程路径

5、获取请求方法

6、获取客户端ip地址

7、获取会话的id编号

<%--request.getScheme() 它可以获取请求的协议request.getServerName() 获取请求的服务器ip或域名request.getServerPort() 获取请求的服务器端口号getContextPath() 获取当前工程路径request.getMethod() 获取请求的方式(GET或POST)request.getRemoteHost()  获取客户端的ip 地址session.getId() 获取会话的唯一标识--%>
<%=request.getScheme() %> <br>
1.协议: ${ request.scheme }<br>
2.服务器ip:${ pageContext.request.serverName }<br>
3.服务器端口:${ pageContext.request.serverPort }<br>
4.获取工程路径:${ pageContext.request.contextPath }<br>
5.获取请求方法:${ pageContext.request.method }<br>
6.获取客户端ip地址:${ pageContext.request.remoteHost }<br>
7.获取会话的id编号:${ pageContext.session.id }<br>

 其他EL隐含对象使用

输出请求参数username的值:${ param.username } <br>输出请求参数password的值:${ param.password } <br>输出请求参数username的值:${ paramValues.username[0] } <br>输出请求参数hobby的值:${ paramValues.hobby[0] } <br>输出请求参数hobby的值:${ paramValues.hobby[1] } <br><hr>输出请求头【User-Agent】的值:${ header['User-Agent'] } <br>输出请求头【Connection】的值:${ header.Connection } <br>输出请求头【User-Agent】的值:${ headerValues['User-Agent'][0] } <br><hr>获取Cookie的名称:${ cookie.JSESSIONID.name } <br>获取Cookie的值:${ cookie.JSESSIONID.value } <br><hr>输出&lt;Context-param&gt;username的值:${ initParam.username } <br>输出&lt;Context-param&gt;url的值:${ initParam.url } <br>

http://www.xdnf.cn/news/811963.html

相关文章:

  • 干货!12个程序员证书​,含金量超高
  • abab 模型进展|MiniMax 发布万亿 MoE 模型abab 6.5
  • ArrayAdapter 支持单选
  • AutoIT的下载与安装
  • 推荐开源项目:IconChanger - 简单易用的App图标更换神器
  • SAP RFC介绍:关于sRFC,aRFC,tRFC,qRFC和bgRFC
  • 截屏闪光
  • 性能测试 Performance Test
  • 分享125个ASP源码,总有一款适合你
  • SQLServer简繁互换
  • impex 语法
  • 什么是中台?一篇带你了解中台的概念
  • 无线网络通信技术完全介绍
  • 联合循环——17( Heat Recovery Steam Generator 余热锅炉 )
  • 无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误解决办法
  • Unity3d Web Player 的server端联网配置
  • 批量网刻安装操作系统之PXE网络克隆图文教程
  • 【20230404】Ubuntu 20.04 tweak
  • Delphi 文件操作
  • Playwright定位器详解:自动化测试的核心工具
  • adsl modem是什么意思?ADSL Modem的作用是什么?
  • Windows徽标键(WinKey)的屏蔽和恢复
  • 简析:spring配置文档中beans的xmlns和xsi:schemaLocation
  • github工具_Github Statistics 一个基于 React 的 GitHub 数据统计工具
  • 期货入门必备知识,了解最全的期货知识
  • Lua内存泄露检测原理
  • 新一代 AVS3 视频编码标准
  • Bootstrap中定制LESS-颜色及导航条
  • 如何显著提升小目标检测精度?深度解读Stitcher:简洁实用、高效涨点
  • windows系统下帧率获取工具--fraps