04、EL和JSTL核心技术

目录

1 EL表达式(熟悉)

1.1 基本概念

1.2 主要功能 

1.3 访问内置对象的数据 

1.3.1访问方式

1.3.2 执行流程 

1.4 访问请求参数的数据 

1.5 访问Bean对象的属性 

 1.5.1 访问方式

1.5.2 主要区别 

1.6 访问集合中的数据 

1.7 常用的内置对象 

1.8 常用的运算符

1.8.1 常用的算术运算符

1.8.2 常用的关系运算符 

1.8.3 常用的逻辑运算符

 1.8.4 条件运算符

 1.8.5 验证运算符

2 JSTL标签(熟悉) 

 2.1 基本概念

 2.3 常用核心标签

 2.3.1 输出标签

 2.3.2 设置标签

 2.3.3 删除标签

 2.3.4 单条件判断标签

 2.3.5 多条件判断标签

 2.3.6 循环标签

 2.4 常用函数标签

 2.5 常用格式化标签

 2.6 自定义标签 


1 EL表达式(熟悉)

1.1 基本概念

  • EL(Expression Language)表达式提供了在JSP中简化表达式的方法,可以方便地访问各种数据并输出。

1.2 主要功能 

  • 依次访问pageContext、request、session和application作用域对象存储的数据。
  • 获取请求参数值。
  • 访问Bean对象的属性。
  • 访问集合中的数据。
  • 输出简单的运算结果。

1.3 访问内置对象的数据 

1.3.1访问方式

<%=request.getAttribute(“ varName”)%>
用EL实现: ${ varName }

1.3.2 执行流程 

1.4 访问请求参数的数据 

  •  在EL之前使用下列方式访问请求参数的数据
request.getParameter(name);
request.getParameterValues(name);
  • 在EL中使用下列方式访问请求参数的数据 
    param:接收的参数只有一个值。
    paramValues:接受的参数有多个值。
<!-- 获取指定参数的数值 --> 
${param.name} 
<!-- 获取指定参数中指定下标的数值 --> 
${paramValues.hobby[0]}

1.5 访问Bean对象的属性 

 1.5.1 访问方式

  • 方式一: $ { 对象名 . 属性名 },例如:${user.name}
  • 方式二: $ { 对象名 [“属性名”] },例如:${user[“name”]}

1.5.2 主要区别 

  • 当要存取的属性名中包含一些特殊字符,如: . 或 ,等并非字母或数字的符号,就一定要使用 [ ]而不是.的方式

  • 使用[]的方式可以动态取值,具体方式如下:

    <% request.setAttribute(“prop”,“age”); %>
    <!-- 相当于表达式中写一个变量 --> 
    ${ user[prop] }
    

1.6 访问集合中的数据 

<!-- student为ArrayList类型的对象 --> 
${student[0].name}

1.7 常用的内置对象 

类别标识符描述
JSPpageContextPageContext 处理当前页面
作用域pageScope同页面作用域属性名称和值有关的Map类
requestScope同请求作用域属性的名称和值有关的Map类
sessionScope同会话作用域属性的名称和值有关的Map类
applicationScope同应用程序作用域属性的名称和值有关的Map类
请求参数param根据名称存储请求参数的值的Map类
paramValues把请求参数的所有值作为一个String数组来存储的Map类
请求头header根据名称存储请求头主要值的Map类
headerValues把请求头的所有值作为一个String数组来存储的Map类
Cookiecookie根据名称存储请求附带的cookie的Map类
初始化参数initParam根据名称存储Web应用程序上下文初始化参数的Map类

1.8 常用的运算符

1.8.1 常用的算术运算符

算术运算符说 明范 例运算结果
+${1+2}3
-${2-1}1
*${2*3}6
/或div${16/5}或${16div5}3.2
% 或 mod取余${16%5}或${16mod5}1

1.8.2 常用的关系运算符 

关系运算符说 明范 例运算结果
==或eq等于${1==2}或${1 eq 2}false
!= 或ne不等于${2!=1}或${1 ne 2}true
< 或lt小于${2<3}或${2 lt 3 }true
> 或 gt大于${16>5}或${16 gt 5}true
<= 或 le小于等于${16<=5}或${16 le 5}false
>= 或 ge大于等于${16>=5}或${16 ge 5}true

1.8.3 常用的逻辑运算符

逻辑运算符说 明范 例运算结果
&& 或 and与运算${true&&true}或${true and true}true
|| 或or或运算${true||false}或${true or false}true
! 或not非运算${!true}或${not true }false

 1.8.4 条件运算符

${条件表达式? 语句1 : 语句2}

 1.8.5 验证运算符

${empty 表达式}  返回布尔值
判断表达式是否为"空"值,null值、无元素的集合或数组、长度为零的String被认为是空值。

2 JSTL标签(熟悉) 

 2.1 基本概念

  • 下载JSTL的jar包并添加到项目中,下载地址为:https://tomcat.apache.org/download-taglibs.cgi
  • 在JSP页面中使用taglib指定引入jstl标签库,方式为:
<!-- prefix属性用于指定库前缀 --> 
<!-- uri属性用于指定库的标识 --> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 2.3 常用核心标签

 2.3.1 输出标签

<c:out></c:out> 用来将指定内容输出的标签

 2.3.2 设置标签

<c:set></c:set> 用来设置属性范围值的标签

 2.3.3 删除标签

<c:remove></c:remove> 用来删除指定数据的标签

 2.3.4 单条件判断标签

<c:if test =“EL条件表达式”> 满足条件执行 
</c:if >

 2.3.5 多条件判断标签

<c:choose > <c:when test =“EL表达式”> 满足条件执行 </c:when> …<c:otherwise> 不满足上述when条件时执行 </c:otherwise> 
</c:choose >

 2.3.6 循环标签

<c:forEach var=“循环变量” items=“集合”> … 
</c:forEach>

 2.4 常用函数标签

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 2.5 常用格式化标签

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 2.6 自定义标签 

  • 如果上面几个标签不能满足需求,程序员也可以自定义标签,步骤如下:
  • 编写标签类继承SimpleTagSupport类或TagSupport类并重写doTag方法或doStartTag方法。
public class TagTest extends SimpleTagSupport { private String name; public String getName() { return name; }public void setName(String name) { this.name = name; }@Override public void doTag() throws JspException, IOException { JspWriter out = this.getJspContext().getOut(); out.println("自定义标签的参数为:" + name); } 
}
  • 定义标签库文件(tld标签库文件)并配置标签说明文件到到WEB-INF下:
<tag><name>helloTag</name> <tag-class>com.yy.demo01.TagTest</tag-class> <body-content>empty</body-content> <attribute> <name>name</name> <required>true</required> </attribute> 
</tag>
  •  在JSP中添加taglib指令引入标签库使用:
<%@ taglib prefix="hello" uri="http://hyq.com" %>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 类和对象 (6)this指针

一般情况下&#xff0c;类中的成员函数在操作类中的一个对象&#xff0c;用这个类去创建一个对象&#xff0c;用对象去访问类的成员函数&#xff0c;无论怎么访问或操作&#xff0c;都是一个对象。但是有的时候类的成员函数可能会涉及两个对象&#xff0c;在这种情况下需要使用…

JVM111

JVM1 字节码与多语言混合编程 字节码 我们平时说的java字节码&#xff0c; 指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。不同的编译器&#xff0c;可以编译出相同的字节码文件&#xff0c;字节码文件…

Spring Security 简单token配置

Spring Security 简单token配置 说明&#xff1a;非表单配置 先上码&#xff1a; https://gitee.com/qkzztx_admin/security-demo/tree/master/demo-two 环境&#xff1a;win10 idea2023 springboot2.7.6 maven3.8.6 代码清单说明 依赖&#xff1a; <dependency><…

git 提交报错

报错提示 git -c diff.mnemonicprefixfalse -c core.quotepathfalse --no-optional-locks fetch --no-tags origin git -c diff.mnemonicprefixfalse -c core.quotepathfalse --no-optional-locks pull origin master From http://jira.suitbim.com:37990/scm/bigscreen/bigs…

通过茶叶酒水小程序商城的作用是什么?

茶叶酒水往往会在一起经营&#xff0c;同时又具备较强的送礼属性&#xff0c;需求度较高但经营商家同样不少&#xff0c;同行竞争激烈&#xff0c;加之同城生意有限、外地客户难以拓展、销售营销不足、品牌宣传效果差等痛点&#xff0c;传统酒水茶叶门店需要线上带来增长。 那…

VBA技术资料MF61:按每行指定字符数自动换行

【分享成果&#xff0c;随喜正能量】人生的旅途&#xff0c;一时的失意&#xff0c;一时的挫折&#xff0c;跌了一跤&#xff0c;不是人生的全部&#xff0c;只是人生的一个逗点&#xff0c;未来的成就、光辉&#xff0c;还有很多的虚线有待你继续去完成。。 我给VBA的定义&am…

前端适配笔记本缩放125%,150%导致页面错乱问题

由于前端在开发时使用的都是标准ui设计图&#xff0c;基本都是按照所以1920*1080&#xff0c; 而小屏幕笔记本由于分辨率高&#xff0c;所以导致的显示元素变小&#xff0c;因此很多笔记本的默认显示都是放大125%或者150%。 如果页面比较简单就让多余的空白单边扩展&#xff0c…

iOS Swift 拍照识别数字(Recognizing Text in Images)

1.苹果官方的解决方案&#xff08;推荐&#xff09; Recognizing Text in Images - apple developer Extracting phone numbers from text in images(Sample Code) - apple developer 1.1 demo下载(亲测有效) &#xff1a;recognizeTextInImage - gitee 1.2 测试成功的代码 …

碎片笔记|AIGC核心技术综述

前言&#xff1a;AIGC全称为AI-Generated Content&#xff0c;直译为人工智能内容生成。即采用人工智能技术来自动生产内容。AIGC在2022年的爆发&#xff0c;主要是得益于深度学习模型方面的技术创新。不断涌现的生成算法、预训练模型以及多模态等技术的融合引发了AIGC的技术变…

MySQL数据库与表管理《三国志》为例

在数据库管理中,一个典型的应用场景是游戏数据的存储和管理。以经典游戏《三国志》为例,该游戏具有多个角色、任务、装备等元素,如何有效地存储和管理这些数据就成为了一个问题。 本文将通过《三国志》的实例,详细解释如何在MySQL中进行数据库和表的管理。 文章目录 《三国…

深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载

深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载 前言说明1. 安装操作系统分区配置2. 大磁盘分区管理3. LVM逻辑卷管理3.1. 创建LVM逻辑卷3.1.1. 创建物理卷PV3.1.2. 创建卷组VG3.1.3. 创建逻辑卷LV3.1.4. 创建并挂载文件系统3.1.5. 配置开机自动挂载 3.2. 逻…

华为云云耀云服务器L实例评测|华为云上安装etcd

文章目录 华为云云耀云服务器L实例评测&#xff5c;华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其…

面试题:说一下SpringBoot的自动配置原理

文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中&#xff0c;亦或是求职面试&#xff0c;Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外&#xff0c;如今的各行各业都在飞速的拥抱这个已经…

C# 获取磁盘空间大小的方法

方法一&#xff1a;利用System.IO.DriveInfo.GetDrives方法来获取 /// 获取指定驱动器的空间总大小(单位为B)////// 只需输入代表驱动器的字母即可 &#xff08;大写&#xff09;///public static long GetHardDiskSpace(string str_HardDiskName){long totalSize new long();…

【PHP】如何关闭buffer实时输出内容到前端

前言 默认情况下&#xff0c;我们在PHP里使用echo等函数输出的内容&#xff0c;是不会马上发送给前端的&#xff0c;原因是有 buffer 的存在&#xff0c;buffer又分两处&#xff0c;一处是PHP本身的buffer&#xff0c;另一处是Nginx的buffer。只有当buffer满了之后&#xff0c…

if条件分支计算分段函数

分别罗列x的值域区间&#xff0c;if条件跳转相应分支计算函数值。 (本笔记适合正在研学if条件分支语句的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c…

【MySQL进阶】--- 存储引擎的介绍

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

ALOS2 PALSAR2 数据ID命名规则

场景ID AAAAABBBBBCCCC-YYMMDD AAAAA:卫星类别“ALOS2” BBBBB:以场景为中心的总计循环号码 CCCC:场景中心的帧编号 -: 分隔号 YYMMDD:场景中心的观测年月日 (YY:末两位年&#xff0c;MM:月&#xff0c;DD:日) 产品ID DDDEFFFGHI DDD:观测模式 SBS:聚光灯模式 UBS:高分辨…

HMTL知识点系列(3)

目录 1. 如何在HTML中嵌入视频和音频&#xff1f;2. 解释一下HTML的“盒模型”是什么&#xff0c;以及它如何影响布局&#xff1f;3. 你如何理解HTML的语义化标签和SEO优化之间的关系&#xff1f;4. 什么是HTML5的canvas元素&#xff0c;你如何使用它来创建图形&#xff1f;5. …

【k8s】【docker】web项目的部署

yaml配置文件 后端&#xff1a;springboot项目 前端&#xff1a;vue项目&#xff0c;之前镜像封装的nginx.conf反向代理配置直接使用了docker-compose.yml中services的名称&#xff0c;无法代理成功&#xff0c;可修改为127.0.0.1 # 后端 apiVersion: apps/v1 kind: Deployment…