首页 > 其他分享 >每日记录(EL(表达式语言))

每日记录(EL(表达式语言))

时间:2023-06-03 20:56:58浏览次数:35  
标签:EL 内置 name 记录 request true pageContext 表达式

1 EL概述
1.1 EL的作用

JSP2.0要把html和css分离、要把html和javascript分离、要把Java脚本替换成标签。标签的好处是非Java人员都可以使用。

JSP2.0 – 纯标签页面,即:不包含<% … %>、<%! … %>,以及<%= … %>

EL(Expression Language)是一门表达式语言,它对应<%=…%>。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。

1.2 EL的格式

格式:${…}

例如:${1 + 2}

1.3 关闭EL

如果希望整个JSP忽略EL表达式,需要在page指令中指定isELIgnored=”true”。

如果希望忽略某个EL表达式,可以在EL表达式之前添加“\”,例如:\${1 + 2}。

1.4 EL运算符

运算符

说明

范例

结果

+

${17+5}

22

-

${17-5}

12

*

${17*5}

85

/或div

${17/5}或${17 div 5}

3

%或mod

取余

${17%5}或${17 mod 5}

2

==或eq

等于

${5==5}或${5 eq 5}

true

!=或ne

不等于

${5!=5}或${5 ne 5}

false

<或lt

小于

${3<5}或${3 lt 5}

true

>或gt

大于

${3>5}或${3 gt 5}

false

<=或le

小于等于

${3<=5}或${3 le 5}

true

>=或ge

大于等于

${3>=5}或${3 ge 5}

false

&&或and

并且

${true&&false}或${true and false}

false

!或not

${!true}或${not true}

false

||或or

或者

${true||false}或${true or false}

true

empty

是否为空

${empty “”},可以判断字符串、数据、集合的长度是否为0,为0返回true。empty还可以与not或!一起使用。${not empty “”}

true

1.5 EL不显示null

当EL表达式的值为null时,会在页面上显示空白,即什么都不显示。

2 EL表达式格式

先来了解一下EL表达式的格式!现在还不能演示它,因为需要学习了EL11个内置对象后才方便显示它。

l 操作List和数组:${list[0]}、${arr[0]};

l 操作bean的属性:${person.name}、${person[‘name’]},对应person.getName()方法;

l 操作Map的值:${map.key}、${map[‘key’]},对应map.get(key)。

3 EL内置对象

EL一共11个内置对象,无需创建即可以使用。这11个内置对象中有10个是Map类型的,最后一个是pageContext对象。

l pageScope

l requestScope

l sessionScope

l applicationScope

l param;

l paramValues;

l header;

l headerValues;

l initParam;

l cookie;

l pageContext;

3.1 域相关内置对象(重点)

域内置对象一共有四个:

l pageScope:${pageScope.name}等同与pageContext.getAttribute(“name”);

l requestScope:${requestScope.name}等同与request.getAttribute(“name”);

l sessionScoep: ${sessionScope.name}等同与session.getAttribute(“name”);

l applicationScope:${applicationScope.name}等同与application.getAttribute(“name”);

如果在域中保存的是JavaBean对象,那么可以使用EL来访问JavaBean属性。因为EL只做读取操作,所以JavaBean一定要提供get方法,而set方法没有要求。

Person.java

public class Person {

private String name;

private int age;

private String sex;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

}

wps8C4C.tmp

全域查找:${person}表示依次在pageScope、requesScopet、sessionScope、appliationScope四个域中查找名字为person的属性。

3.2 请求参数相关内置对象

param和paramValues这两个内置对象是用来获取请求参数的。

l param:Map<String,String>类型,param对象可以用来获取参数,与request.getParameter()方法相同。

wps8C4D.tmp

注意,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。这一点与使用request.getParameter()方法是不同的。

wps8C4E.tmp

l paramValues:paramValues是Map<String, String[]>类型,当一个参数名,对应多个参数值时可以使用它。

wps8C4F.tmp

3.3 请求头相关内置对象

header和headerValues是与请求头相关的内置对象:

l header: Map<String,String>类型,用来获取请求头。

wps8C60.tmp

l headerValues:headerValues是Map<String,String[]>类型。当一个请求头名称,对应多个值时,使用该对象,这里就不在赘述。

3.4 应用初始化参数相关内置对象

l initParam:initParam是Map<String,String>类型。它对应web.xml文件中的<context-param>参数。

wps8C61.tmp

3.5 Cookie相关内置对象

l cookie:cookie是Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。

wps8C62.tmp

3.6 pageContext对象

pageContext:pageContext是PageContext类型!可以使用pageContext对象调用getXXX()方法,例如pageContext.getRequest(),可以${pageContext.request}。也就是读取JavaBean属性!!!

EL表达式

说明

${pageContext.request.queryString}

pageContext.getRequest().getQueryString();

${pageContext.request.requestURL}

pageContext.getRequest().getRequestURL();

${pageContext.request.contextPath}

pageContext.getRequest().getContextPath();

${pageContext.request.method}

pageContext.getRequest().getMethod();

${pageContext.request.protocol}

pageContext.getRequest().getProtocol();

${pageContext.request.remoteUser}

pageContext.getRequest().getRemoteUser();

${pageContext.request.remoteAddr}

pageContext.getRequest().getRemoteAddr();

${pageContext.session.new}

pageContext.getSession().isNew();

${pageContext.session.id}

pageContext.getSession().getId();

${pageContext.servletContext.serverInfo}

pageContext.getServletContext().getServerInfo();

标签:EL,内置,name,记录,request,true,pageContext,表达式
From: https://www.cnblogs.com/xiao-hong111/p/17454623.html

相关文章

  • 每日记录(数据查询语法(DQL)(1))
    DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。语法:SELECTselection_list/*要查询的列名称*/ FROMtable_list/*要查询的表名称*/ WHEREcondition/*行条件*/ GROUPBYgrouping_columns/*对结果分组*/ HAVINGcond......
  • 每日记录(数据查询语法(DQL)(2))
    1基础查询1.1查询所有列SELECT*FROM stu;1.2查询指定列SELECTsid,sname,ageFROMstu;2条件查询2.1条件查询介绍条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:l=、!=、<>、<、<=、>、>=;lBETWEEN…AND;lIN(set);lISNULL;lA......
  • 每日记录(数据查询语法(DQL)(3))
     模糊查询当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。3.1查询姓名由5个字母构成的学生记录SELECT*FROMstuWHEREsnameLIKE'_____';模糊查询必须使用LIKE关键字。其中“_”匹配任意一个字母,5个“_”表示5个任意字母。3.2查......
  • 2023-06-03:redis中pipeline有什么好处,为什么要用 pipeline?
    2023-06-03:redis中pipeline有什么好处,为什么要用pipeline?答案2023-06-03:Redis客户端执行一条命令通常包括以下四个阶段:1.发送命令:客户端将要执行的命令发送到Redis服务器。2.命令排队:Redis服务器将收到的命令放入队列中,按照先进先出(FIFO)的原则等待执行。3.命令执行:当Redis服务器轮......
  • 2023-06-03:redis中pipeline有什么好处,为什么要用 pipeline?
    2023-06-03:redis中pipeline有什么好处,为什么要用pipeline?答案2023-06-03:Redis客户端执行一条命令通常包括以下四个阶段:1.发送命令:客户端将要执行的命令发送到Redis服务器。2.命令排队:Redis服务器将收到的命令放入队列中,按照先进先出(FIFO)的原则等待执行。3.命令执行:当Redis服......
  • 关于使用openssl命令-同时生成私钥与CSR-Certificate Signing Request的方法记录
    这里笔者主要讲述如何生成一个CSR证书签名请求文件,方法过程可能有多种笔者这里将使用一种最为简单简洁的方式进行讲解,使用到的环境与软件如下:操作系统:RedHatEnterpriseLinuxrelease8.7(Ootpa)openssl软件包版本:openssl-1.1.1k-9.el8_7.x86_64 1、创建私钥的同时,也就同......
  • 小宾直播录制录屏软件,24小时无人直播,支持抖音、快手、虎牙、斗鱼、YY、花椒、B 站等平
    随着直播行业的不断发展,越来越多的主播开始使用直播录制软件进行录制,以便对自己的直播内容进行复盘和回顾。作为一款实用的录制工具,小宾直播录制器一直受到广大用户的喜爱和支持。今天,我们将介绍小宾直播录制器的新功能,包括文件名规则和小文件自动清理。小宾直播录制器新增了文......
  • excel跨表查询
     ......
  • 记录--手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向。对于数据可视化,很多互联网公司是很看重这一块的,包括大厂;就比如阿里的淘宝,双十一的时候往往就需要将消费者的一些数据通过图的......
  • 在notepad++软件上用正则表达式替换内容
    在notepad++软件上用正则表达式替换内容,查找:(\+\d+)|,在notepad++软件上用正则表达式替换内容示例要求:04,09,18,19,32,33+1403,04,13,18,25,32+0203,08,15,21,22,32+12把以上数据去掉+后面的数据,把分割逗号替换成空格的正则表达式,要在notepad++软件上可以使......