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

什么是EL表达式?怎么使用?

文章目录

    • 一、什么是EL表达式
      • 1、命令格式:${作用域对象别名.共享数据}
    • 二、EL表达式与作用域对象别名
      • 1、JSP文件可以使用的作用域对象
      • 2、EL表达式提供作用域对象别名
      • 3、EL表达式将引用对象属性写入到响应体
      • 4、EL表达式简化版
    • 三、EL表达式与运算表达式
    • 四、EL表达式提供内置对象
      • 1、命令格式:${param.请求参数名}
      • 2、命令格式:${paramvalue.请求参数名[下标]}

一、什么是EL表达式

EL表达式,全称为Expression Language,意为表达式语言。它是Servlet规范中的一部分,也是JSP2.0规范加入的内容。EL表达式的主要作用是用于在Java Web应用中访问和操作数据,使得JSP页面能够摆脱Java代码块和JSP表达式,实现代码的简化。

EL表达式的语法格式使用${}包裹,其中${}内部可以是一个表达式或者变量名。其主要用于在页面中获取和展示数据,执行算术运算,访问JavaBean属性,以及调用JavaBean方法等。此外,EL表达式定义了一些隐式对象,使得web开发人员可以轻松地获取对web常用对象的引用,并获取这些对象中的数据。

EL表达式为Java Web开发提供了一种更为简洁、高效的方式来处理数据和逻辑,使得开发过程更加便捷。

1、命令格式:${作用域对象别名.共享数据}

  • EL表达式是式工具包提供一种特殊命令格式表达式命令格式
  • EL表达式在JSP文件上使用。
  • 负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体。

二、EL表达式与作用域对象别名

1、JSP文件可以使用的作用域对象

  • ServletContext application:全局作用域对象;
  • HttpSession session:会话作用域对象;
  • HttpServletRequest request:请求作用域对象;
  • PageContext pageContext:当前页作用域对象;

这是JSP文件独有作用域对象。Servlet中不存在在当前页作用域对象存放的共享数据。仅能在当前JSP文件中使用,不能共享给其他servlet或则其他JSP文件。

真实开发过程,主要用于JSTL标签与JSP文件之间数据共享数据。

JSTL ------> pageContext ----> JSP

2、EL表达式提供作用域对象别名

  • JSP------------------------------EL表达式
  • application---------------------${applicationscope.共享数据名}
  • session-------------------------${sessionscope.共享数据名}
  • request-------------------------${requestscope.共享数据名}
  • pageContext------------------${pagescope.共享数据名}

3、EL表达式将引用对象属性写入到响应体

  • 命令格式:${作用域对象别名.共享数据名.属性名}
  • 命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值,并自动将属性的结果写入到响应体。
  • 属性名:一定要去引用类型属性名完全一致(大小写)。
  • EL表达式没有提供遍历集合方法,因此无法从作用域对象读取集合内容输出。

4、EL表达式简化版

1、命令格式:${共享数据名}

2、命令作用:EL表达式允许开发人员开发时省略作用域对象别名

3、工作原理:

  • EL表达式简化版由于没有指定作用域对象,所以在执行时采用算法。
  • 首先到pageContext定位共享数据,如果存在直接读取输出并结束执行。
  • 如果在pageContext没有定位成功,到request定位共享数据,如果存在直接读取输出并结束执行。
  • 如果在request没有定位成功,到session定位共享数据,如果存在直接读取输出并结束执行。
  • 如果在session没有定位成功,到application定位共享数据,如果存在直接读取输出并结束执行。
  • 如果在application没有定位成功,返回null

pageContext—>request—>session—>applicationl

4、存在隐患: 容易降低程序执行速度,容易导致数据定位错误。

5、设计目的,就是简化从pageContext读取共享数据并输出难度。

6、EL表达式简化版尽管存在很多隐患,但是在实际开发过程中,开发人员为了节省时间,一般都使用简化版,拒绝使用标准版。

三、EL表达式与运算表达式

1、前提:在JSP文件有时需要将读取共享数据进行一番运算之后,将运算结果写入到响应体;

2、运算表达式:

  • 数学运算。
  • 关系运算:> >= == < <= !=
  • gt ge eq lt le !=
  • 逻辑运算:&& ll !

四、EL表达式提供内置对象

EL表达式提供了一系列内置对象,这些对象在无需创建的情况下即可直接使用,它们与Map相似。

  • pageScope:这是一个Map<String,Object>类型的对象。通过${pageScope.xxx},可以获取在pageContext中保存的数据。与pageContext.getAttribute(“xxx”)功能相同,但在数据不存在时,前者返回空字符串,而后者返回null。
  • header:此对象用于获取请求头中的值。例如,使用${header['User-Agent']}可以获取User-Agent请求头的值。
  • initParam:这个对象可以获得在web.xml中配置的<context-param>中的值。例如,如果在web.xml中配置了一个名为name的context-param,其值为tom,那么通过${initParam.name}就可以得到tom。
  • cookie:这个对象用于获取cookie的值。例如,通过${cookie.JSESSIONID.value}可以获取名为JSESSIONID的cookie的值。同时,也可以通过${cookie.username.maxAge}获取cookie的生存时间。、
  • fn:fn对象提供了一些常用的函数,可以方便地进行字符串处理、类型转换、日期处理等。
  • pageContext:在EL表达式中,pageContext与JSP内置对象中的pageContext是同一个对象。通过这个对象,可以获取到request、response、session、servletContext、servletConfig等对象。在EL中,这些对象不是内置对象,但可以通过pageContext获取。例如,${pageContext.request}可以获取request对象。

除了上述对象外,还有requestScope、sessionScope和applicationScope等对象,它们分别对应不同的域(scope),可以用来获取不同域中的属性值。

EL表达式的内置对象提供了丰富的功能,使得在JSP页面中可以方便地访问和操作各种数据。

1、命令格式:${param.请求参数名}

从通过请求对象读取当前请求包中请求参数内容,并将请求参数内容写入到响应体。

代替命令:index.jsp

发送请求:Http://localhost:8080/myweb/index.jsp?userName=mike&password=123

<%string userName = request.getParameter ( "userName" ) ;string password =request.getParameter ( "password");%><%=userName%><%=password%>

2、命令格式:${paramvalue.请求参数名[下标]}

如果浏览器发送的请求参数是一个请求参数关联多个值,此时可以通过paramvaues读取请求参数下指定位置的值并写入到响应体。

代替命令:http://localhost:8080/myweb/index2.jsp?pageNo=1&pageNo=2&pagNo=3,此时pageNo请求参数在请求包以数组形式存在,pageNo: [1,2,3]

<%string  array[] = request.getParametervalues ( "pageNo");%>第一个值:<%=array [0]%>第二个值:<%=array [1]%>

相关文章:

什么是EL表达式?怎么使用?

文章目录 一、什么是EL表达式1、命令格式&#xff1a;${作用域对象别名.共享数据} 二、EL表达式与作用域对象别名1、JSP文件可以使用的作用域对象2、EL表达式提供作用域对象别名3、EL表达式将引用对象属性写入到响应体4、EL表达式简化版 三、EL表达式与运算表达式四、EL表达式提…...

基于php医院预约挂号系统

摘 要 随着信息时代的来临&#xff0c;过去的管理方式缺点逐渐暴露&#xff0c;对过去的医院预约挂号管理方式的缺点进行分析&#xff0c;采取计算机方式构建医院预约挂号系统。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;开发并设计一款医院预约挂号系统…...

Java NIO详解

一、概念 NIO, 即new io&#xff0c;也叫非阻塞io 二、NIO三个核心组件&#xff1a; Buffer数据缓冲区Channel通道Selector选择器 1、Buffer缓冲区 缓冲区本质上是一个可以存放数据的内存块&#xff08;类似数组&#xff09;&#xff0c;可以在这里进行数据写入和读取。此…...

InstantID作者的风格保持新项目InstantStyle发布,一个强化版的IPapadter来了!

之前已经和大家介绍过InstantID相关相关的文章&#xff0c;感兴趣的小伙伴可以点击下面链接进行阅读&#xff5e; ​​​​​​​​​​​​​无缝衔接Stable Diffusion&#xff0c;一张照片几秒钟就能生成个性化图片-InstantID_instant-id 模型-CSDN博客 今天向大家介绍Ins…...

【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南

基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…...

echart 仪表盘实现指针的渐变色及添加图片

需求&#xff1a; 在仪表盘中设置指针为渐变色&#xff0c;并在仪表盘中间添加图片。 实现重点&#xff1a; 1、仪表盘指针渐变色的实现 渐变色通过设置pointer的itemStyle属性内的color实现&#xff0c;重点是echart版本&#xff0c;这个原本使用4.8.0的版本不起作用&#xff…...

C#面试题目含参考答案(一)

前言 面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时,我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。本文列举一些问题及提供参考答案,题目(一)。 题目 1、什么是面向对象的三大特性 参考答案:…...

【Canvas技法】图解绘制圆弧的重要函数 arc(x,y,r,startAngle,endAngle,clockWise)

【一图释疑】 【绘制上图用代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Html5/Canvas中绘制圆弧的重要函数 arc(x,y,r,startA…...

vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2019-0193)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler&#xff0c;该模块是一个可选但常用的模块&#xff0c;用于从数据库和其他源中提取数据。它具有一个功能&#…...

水泥5G智能制造工厂数字孪生可视化平台,推进水泥行业数字化转型

水泥5G智能制造工厂数字孪生可视化平台&#xff0c;推进水泥行业数字化转型。水泥5G智能制造工厂数字孪生可视化平台&#xff0c;是水泥行业数字化转型的关键推手。数字孪生平台运用先进的信息技术和数字化手段&#xff0c;实现水泥生产过程的数字化模拟、可视化监控和智能化管…...

vue 一个简单实例化Vue.js 是一个流行的前端框架,如何创建一个基本的计数器应用

当然可以&#xff01;Vue.js 是一个流行的前端框架&#xff0c;用于构建用户界面。下面是一个简单的 Vue.js 例子&#xff0c;演示了如何创建一个基本的计数器应用。 首先&#xff0c;确保你已经在项目中引入了 Vue.js。你可以通过 CDN 引入 Vue.js&#xff0c;或者在项目中安…...

1.k8s架构

k8s集群架构 一个Kubernetes集群至少包含一个控制平面(control plane)&#xff0c;以及一个或多个工作节点(worker node)。控制平面(Control Plane) : 控制平面负责管理工作节点和维护集群状态。所有任务分配都来自于控制平面。工作节点(Worker Node) : 工作节点负责执行由控制…...

【Linux】详解动态库链接和加载对可执行程序底层的理解

一、动静态库链接的几种情况 如果我们同时提供动态库和静态库&#xff0c;gcc默认使用的是动态库。如果我们非要使用静态库&#xff0c;要加-static选项。如果我们只提供静态库&#xff0c;那可执行程序没办法&#xff0c;只能对该库进行静态链接&#xff0c;但程序不一定整体…...

中文Mistral模型介绍(Chinese-Mistral)——中文大语言模型

中文Mistral简介 Chinese-Mistral由清华大学地学系地球空间信息科学实验室开发。 该模型基于Mistral发布的Mistral-7B-v0.1训练得到。首先进行中文词表扩充&#xff0c;然后采用实验室提出的PREPARED训练框架&#xff08;under review&#xff09;在中英双语语料上进行增量预训…...

yolo v5 中 letterbox对不规则矩形框的输入调整

在对数据或特征的处理中&#xff0c;为了避免输入图像或特征&#xff0c;经过resize等等操作&#xff0c;改变了目标特征的尺度信息&#xff0c;一般会引入一些操作&#xff0c;比如&#xff1a; 在特征维度&#xff0c;加入SPP&#xff08;空间金字塔池化&#xff09;&#x…...

STL是什么?如何理解STL?

文章目录 1. 什么是STL2. STL的版本3. STL的六大组件4. 如何学习STL5.STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. …...

【Spring篇】Spring IoC DI

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring系列】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 前言一、IoC二、…...

Python语言例题集(010)

#!/usr/bin/python3 #在链表的末端插入新的节点。 class Node(): def init(self,dataNone): self.datadata self.nextNone class LinkedList(): def init(self): self.headNone def printList(self):ptrself.headwhile ptr:print(ptr.data)ptrptr.nextdef ending(self,newd…...

redis---主从复制

主从复制是指将一台redis服务器的数据复制到其他redis服务器&#xff0c;也叫主节点和从节点。 一个主节点可以有多个从节点。而每个从节点只能有一个主节点。数据的复制是单向的&#xff0c;只能由主节点到从节点。一般来说&#xff0c;主节点负责写操作&#xff0c;从节点负…...

搜索引擎-03-搜索引擎原理

拓展阅读 搜索引擎-01-概览 搜索引擎-02-分词与全文索引 搜索引擎-03-搜索引擎原理 Crawl htmlunit 模拟浏览器动态 js 爬虫入门使用简介 Crawl jsoup 爬虫使用 jsoup 无法抓取动态 js 生成的内容 Crawl WebMagic 爬虫入门使用简介 webmagic 全网搜索引擎架构与流程如何…...

mysql语句学习

SQL Select语句完整的执行顺序&#xff1a; 1、from子句组装来自不同数据源的数据&#xff1b; &#xff08;先join在on&#xff09; 2、where子句基于指定的条件对记录行进行筛选&#xff1b; 3、group by子句将数据划分为多个分组&#xff1b; 4、使用聚集函数进行计算&a…...

【Apache Doris】周FAQ集锦:第 1 期

【Apache Doris】周FAQ集锦&#xff1a;第 1 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…...

Windows创建远程线程学习

CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程; 下面来简单做一下,配合procexp工具; VC代码如下,我是写到一个菜单单击处理函数中, void CCrrmthView::OnMenuitem32771() {// TODO: Add your command handler code hereHAN…...

使用c语言libexpat开源库解析XML数据

1 libexpat简介 Expat 是一个用 C 语言编写的开源 XML 解析库&#xff0c;以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台&#xff0c;包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API&#xff0c;Expat 成为了许多C/C程序员解析XML文档的…...

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍&#xff1a; •串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的…...

基于k8s的高性能综合web服务器搭建

目录 基于k8s的高性能综合web服务器搭建 项目描述&#xff1a; 项目规划图&#xff1a; 项目环境&#xff1a; k8s&#xff0c; docker centos7.9 nginx prometheus grafana flask ansible Jenkins等 1.规划设计整个集群的架构&#xff0c;k8s单master的集群环境&…...

Folder Icons for Mac v1.8 激活版文件夹个性化图标修改软件

Folder Icons for Mac是一款Mac OS平台上的文件夹图标修改软件&#xff0c;同时也是一款非常有意思的系统美化软件。这款软件的主要功能是可以将Mac的默认文件夹图标更改为非常漂亮有趣的个性化图标。 软件下载&#xff1a;Folder Icons for Mac v1.8 激活版 以下是这款软件的一…...

Gitee上传私有仓库

个人记录 Gitee创建账号 以KS进销存系统为例&#xff0c;下载到本地电脑解压。 新建私有仓库 仓库名称&#xff1a;ks-vue3&#xff0c;选择‘私有’ 本地配置 下载安装git配置git 第一次配置可以在本地目录右键【Open Git Bash here】输入【Git 全局设置】再输入【创…...

HTMLCSSJS

HTML基本结构 <html><head><title>标题</title></head><body>页面内容</body> </html> html是一棵DOM树, html是根标签, head和body是兄弟标签, body包括内容相关, head包含对内容的编写相关, title 与标题有关.类似html这种…...

第14章 数据结构与集合源码

一 数据结构剖析 我们举一个形象的例子来理解数据结构的作用&#xff1a; 战场&#xff1a;程序运行所需的软件、硬件环境 战术和策略&#xff1a;数据结构 敌人&#xff1a;项目或模块的功能需求 指挥官&#xff1a;编写程序的程序员 士兵和装备&#xff1a;一行一行的代码 …...

项目负责人质量建设厅官方网站/上海网站推广服务

在实际的项目中&#xff0c;图片的处理往往是最麻烦的&#xff0c;无论是前后台&#xff0c;我自己也试手了一两个图片上传的小项目&#xff0c;把步骤写下来&#xff0c;以后自己忘记可以返回来看一下&#xff0c;同时希望能够帮到小伙伴们... 前端网页 框架&#xff1a; vue …...

网站设置了自动登录怎么显示密码/最有效的15个营销方法

首先去官网下载MySQLhttps://dev.mysql.com/downloads/mysql/5.7.html#downloads我是下载的5.7.23 zip版本&#xff0c;解压到C:\mysql-5.7.23-winx64然后配置环境变量&#xff1a;变量名&#xff1a;MYSQL_HOME变量值&#xff1a;C:\mysql-5.7.23-winx64在Path变量值最前面添加…...

如何对现有的网站改版/内容营销

本文来自老男孩老师第三本书籍著作《老男孩的MySQL私房菜》第三章内容分享&#xff01;3.1 MySQL数据库的安装方法及选择在当今的互联网企业里&#xff0c;MySQL数据库大多运行在Linux系列操作系统上&#xff0c;当然&#xff0c;你也可以运行在Windows/Unix等商业操作系统上&a…...

怎么在ps里做网站设计/台州seo排名外包

TechEmpower第19轮编程语言框架性能排行榜2020年5月28日正式发布,详见官方博客&#xff1a;https://www.techempower.com/blog/2020/05/28/framework-benchmarks-round-19/&#xff0c;TechEmpower基准测试有许多场景(也称为测试类型)&#xff0c;此次评测多了一个综合评分选项…...

电影网站怎么做友情链接/网络营销渠道的功能

\XXX表示斜扛后面的1到3位为八进制表示的 字符。 "\018"含2个字符&#xff0c;一个是’\01’&#xff0c;一个 字’8’。注意&#xff1a;018不是八进制&#xff0c;八进制没有字 符8。 "\08"含2个字符&#xff0c;一个是’\0’&#xff0c;一个 字’8’。…...

招网站建设人员/推广方式营销方案

韩霞闻言心中一颤&#xff0c;试探的问道&#xff1a;“怎么了&#xff1f;为什么不取了&#xff1f;” 林萧看母亲的表情&#xff0c;就知道母亲肯定误解了自己的意思&#xff0c;出言解释道&#xff1a;“放心吧&#xff0c;妈。我没反悔。只是我觉得这一家有点不太靠谱&…...