Java课题笔记~ EL

1.EL

(1).JSP脚本的缺点

使用JSP脚本可以实现页面输出显示,那为什么还需要使用EL简化输出呢?

这是因为单纯使用JSP脚本与HTML标签混合,实现输出显示的方式存在一些弊端,归纳如下:

  • 代码结构混乱,可读性差

  • 脚本与HTML标签混合,容易导致错误

  • 代码不易维护

核心作用:

减少jsp中的java代码

[注意:el只能用在jsp中]

(2).EL表达式

(1)EL表达式

EL是Expression Language的缩写,它定义了一系列的隐含对象和操作符,使开发人员能够很方便地访问页面内容,以及不同作用域内的对象,而无须在JSP中嵌入Java代码,从而使得页面结构更加清晰,代码可读性更高,也更加便于维护。

(2)EL表达式的语法

语法:${EL表达式}

语法结构中包含"$"符号和”{}“括号,二者缺一不可。

使用EL表达式也非常简单,如${username}就可以实现访问变量username的值。

注意:使用EL表达式获取变量前,必须将操作的对象保存到作用域中。

此外,使用EL表达式还可以访问对象的属性,这就需要使用“.”操作符和“[ ]”操作符来完成。

  • “.”操作符

EL表达式通常由对象和属性两部分组成。因此采用与Java代码一样的方式,用“.”操作符来访问对象的属性。

例如:${news.title}可以访问news对象的title属性。

  • “[ ]”操作符

“[ ]”操作符的使用方法与“.”操作符类似,不仅可以用来访问对象的属性,还可以用于访问数组和集合。

例如:

①访问对象的属性:${news["title"]}可以访问news对象的title属性。

②访问数组:${newsList[0]}可以访问newsList数组中的第一个元素。

示例代码:

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
    <title>EL表达式</title>
</head>
<body>
<h1>EL表达式</h1>
<%
    String username = "tom";
    //将变量添加到作用域中
    request.setAttribute("username",username);
    request.setAttribute("student.name","张三");
    ArrayList list = new ArrayList();
    list.add("新冠疫情");
    list.add("俄乌战争");
    //将集合添加到作用域中
    request.setAttribute("list",list);
    //将日期对象添加到作用域中
    Date date = new Date();
    request.setAttribute("date",date);
%>
    //访问变量 <br>
    ${username}<br>
    //含有特殊字符的变量 <br>
    ${requestScope["student.name"]}<br>
    //访问集合 <br>
    ${list[1]}<br>
    //访问对象 <br>
    ${date.date}<br>
    //读取参数 (需要从地址栏传参数,例如:http://localhost:8088/ELDemo.jsp?num=1)<br>
    ${param.num}<br>
    //读取参数 (需要从地址栏传参数,例如:http://localhost:8088/ELDemo.jsp?num=1&hobby=a&hobby=b&hobby=c)<br>
    ${paramValues.hobby[2]}<br>
</body>
</html>

运行效果:

 

提示:

①使用“[ ]”操作符访问数据时,必须在属性名两侧使用双引号。

②EL表达式区分大小写。

③在使用EL表达式获取变量前,必须先将对象保存到作用域中。

表达式分类: (1) 普通表达式 (2) 读取单值(基本数据类型) (3) 读取多值(对象)

EL的隐含对象: 

 

(3).EL运算符

EL表达式支持多种运算符,这些运算符的使用方法与Java运算符非常类似。另外,在EL表达式中,为了避免一些运算符在使用时与HTML页面标签发生冲突,会采用其他符号进行替代。

 EL的运算符:

(1) 算术运算符

(2) 关系运算符

(3) 逻辑运算符

(4) Empty运算符

(5) 条件运算符

例子:${2 > 1 ? "yes" : "no" }

 

(4).EL的功能

对于EL的特点和作用,归纳总结如下:

  • 可用于获取JavaBean的属性。

  • 能够读取集合类型对象中的元素。

  • 可使用运算符进行数据处理。

  • 可屏蔽一些常见异常。

  • 可自动实现类型转换。

(5).EL表达式的作用域访问对象

JSP提供了4种作用域,分别是page、request、session和application。为了能够访问这4个作用域内的数据,EL表达式也分别提供了4种作用域访问对象来实现数据的读取。这4个作用域访问对象的比较如下:

 

当使用EL表达式访问某个属性值时,应当指定查找的范围。如果程序中未指定查找的范围,那么系统会自动按照page → request → session → application(从小到大)的顺序进行查找。

使用作用域访问对象读取属性值非常简单,只需要使用“作用域名称 .”方式即可实现。

总结:

EL从作用域/参数/信息头/初始化参数/cookie中获取数据,显示到JSP页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/73875.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scala(第六章 面向对象)

文章目录 6.1 Scala包 6.1.1 包的命名6.1.2 包说明&#xff08;包语句&#xff09;6.1.3 包对象6.1.4 导包说明 6.2 类和对象 6.2.1 定义类6.2.2 属性 6.3 封装 6.3.1 访问权限6.3.2 方法6.3.3 创建对象6.3.4 构造器6.3.5 构造器参数 6.4 继承与多态6.5 抽象类 6.5.1 抽象属性和…

Datawhale Django入门组队学习Task01

Task01 一.创建虚拟环境 python -m venv django_learn &#xff08;django_learn那里是自己定的环境名字&#xff09; 之前一直用conda管理虚拟环境&#xff0c;没咋用过virtualenv&#xff0c;然后我的powershell之前也设置了默认启动了base环境&#xff0c;然后输入activat…

鸿蒙剥离 AOSP 不兼容 Android 热门问题汇总,不吹不黑不吵

上周发了一篇 《鸿蒙终于不套壳了&#xff1f;纯血 HarmonyOS NEXT 即将到来》的相关资讯&#xff0c;没想到大家「讨&#xff08;fa&#xff09;论&#xff08;xie&#xff09;」的热情很高&#xff0c;莫名蹭了一波流量&#xff0c;虽然流量对我来说也没什么用&#xff0c;但…

WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制

WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制参数 之前搭建ossrs服务&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlo…

6.2 口令破解攻击

数据参考&#xff1a;CISP官方 目录 口令安全问题口令破解攻击口令破解安全防护口令使用安全管理 一、口令安全问题 什么是口令 身份验证的机制&#xff0c;俗称 “密码"&#xff0c;对应英文单词为 password成本较低&#xff0c;得到广泛应用信息安全中的 “密码”…

重置mariadb数据库密码

使用场景重置步骤 重置数据库root用户密码为空重置数据库密码 文档暂时只支持未开启ha时manager使用的mariadb&#xff0c;开启ha的txsql和kundb类似&#xff0c;my.cnf文件地址和登录数据库命令不同 使用场景 manager数据库密码是通过调用接口并根据db.properties文件获取的…

24届近5年南京大学自动化考研院校分析

今天给大家带来的是南京大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、南京大学 学校简介 南京大学是一所历史悠久、声誉卓著的高等学府。其前身是创建于1902年的三江师范学堂&#xff0c;此后历经两江师范学堂、南京高等师范学校、国立东南大学、国立第四中…

Linux网络基础(中)

目录&#xff1a; 再谈“协议” HTTP协议 认识URL&#xff1a; urlnecode和urldecode HTTP协议格式&#xff1a; HTTP的方法&#xff1a; 简易HTTP服务器&#xff1a; 传输层 再谈端口号&#xff1a; 端口号范围划分&#xff1a; netstat&#xff1a; pidof&…

Flutter实现倒计时功能,秒数转时分秒,然后倒计时

Flutter实现倒计时功能 发布时间&#xff1a;2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 有一个需求&#xff0c;需要在页面进行显示倒计时&#xff0c;倒计时结束后&#xff0c;做相应的逻辑处理。 实…

【设计模式】原型模式

原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式之一。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当直接…

OSI参考模型及TCP/IP协议栈

一、网络概述 1.1、什么是网络&#xff1f; 1、网络的本质就是实现资源共享 2、将各个系统联系到一起&#xff0c;形成信息传递、接收、共享的信息交互平台 1.2、典型的园区网拓扑 1.3、网络历史发展&#xff0c;ARPA和ARPANET 1、1969年&#xff0c;美国国防部高级研究计…

【Git】大大大问题之syntax error near unexpected token `(‘ 的错误解决办法

话不多说&#xff0c;先上图&#xff1a; 如图&#xff0c;因为在linux环境里&#xff0c;文件路径中含有括号&#xff08;&#xff09;&#xff0c;因此报错&#xff01; 解决办法 等同于 &#xff1a;linux下解决bash: syntax error near unexpected token (’ 的错误&am…

【数据结构•堆】轮廓线

题目描述 轮廓线   • 每一个建筑物用一个三元组表示(L, H, R), 表示左边界, 高度和右边界。   • 轮廓线用X, Y, X, Y…这样的交替式表示。   • 右图的轮廓线为: (1, 11, 3, 13, 9, 0, 12, 7, 16,3, 19, 18, 22, 3, 23, 13, 29, 0) 。   • 给N个建筑&#xff0c;求…

备战秋招012(20230808)

文章目录 前言一、今天学习了什么&#xff1f;二、动态规划1.概念2.题目 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 提示&#xff1a;以下是本篇文章正文…

最新版彩虹知识付费商城源码 V3.4

介绍 最新彩虹知识付费商城初创体验版&#xff0c;支持二级分类&#xff0c;多级分销&#xff0c;秒杀&#xff0c;砍价&#xff0c;团购&#xff0c;首页继续浏览&#xff0c;分站个人虚拟余额自定义&#xff0c;最新批量对接&#xff0c;批量下载图片&#xff0c;批量替换标…

安装Tomac服务器——安装步骤以及易出现问题的解决方法

文章目录 前言 一、下载Tomcat及解压 1、选择下载版本&#xff08;本文选择tomcat 8版本为例&#xff09; 2、解压安装包 二、配置环境 1、在电脑搜索栏里面搜索环境变量即可 2、点击高级系统设置->环境变量->新建系统变量 1) 新建系统变量&#xff0c;变量名为…

每日一学——OSI参考模型

OSI参考模型&#xff08;Open Systems Interconnection Reference Model&#xff09;是国际标准化组织&#xff08;ISO&#xff09;制定的一个网络通信协议的概念框架。它将网络通信划分为七个层次&#xff0c;每个层次负责不同的功能和任务&#xff0c;从物理层到应用层依次为…

docker pull 设置代理 centos

On CentOS the configuration file for Docker is at: /etc/sysconfig/docker 用 root 权限打开 text editor sudo gedit 注意 加引号 Adding the below line helped me to get the Docker daemon working behind a proxy server: HTTP_PROXY“http://<proxy_host>:&…

vscode-启动cljs

打开vscode &#xff0c;打开cljs项目文件 先npm installvscode安装插件Calva: Clojure & ClojureScript启动REPL 选择Start yout project with a REPL and connect(a.k.a. jack) 后选择shadow-cljs&#xff0c;然后选择shadow&#xff0c;如果需要选择build的话&#xf…

设计模式行为型——模板模式

目录 模板模式的定义 模板模式的实现 模板模式角色 模板模式类图 模板模式举例 模板模式代码实现 模板模式的特点 优点 缺点 使用场景 注意事项 实际应用 模板模式的定义 模板模式&#xff08;Template Pattern&#xff09;属于行为型设计模式&#xff0c;又叫模版…