使用EL和JSTL简化JSP_idea如何使用el和jstl简化jsp-程序员宅基地

技术标签: java  servlet  Servlet  java Web 数据编程  开发语言  

EL表达式

定义

  • Experssion Language 表达式语言,替代JSP页面中访问数据时的复杂代码,执行表达式。

特点

  • 使用简单

语法

${表达式}
点操作符,可以访问对象的某个属性
[]操作符,可以访问对象的某个属性及数组元素

EL表达式的隐式对象

1.作用域访问对象

  • pageScope对象

  • requestScope对象

  • sessionScope对象

  • applicationScope对象

每个作用域对象都和JSP的域对象一一关联。当访问的数据没有指定域时,会按照顺序从小到大找。

2.参数访问对象

  • param对象 获取参数

  • paramValues对象 返回数组,获取多个参数

3.JSP隐式访问对象

  • pageContext 可以访问jsp的内置对象

不能直接访问JSP内置对象: 通过pageContext去访问
如: pageContext.request.getAttribute("map")

4.首部访问对象

  • header

  • headerValue

  • cookie

用于访问请求头的数据。

5.初始化访问对象

  • initParam对象

Empty前缀操作符

Empty运算符是一个前缀操作符,用于检测一个变量是否为空

${empty username}   true
${not empty username} false
${! empty username}   false

JSTL标签库

定义

  • JSP标准标签库(JSP Standard Tag Library)

  • 包含一组开发JSP页面时常见功能的标准标签。

    核心标签库有
    通用标签库 set out remove
    条件标签库 if  choose
    迭代标签库 foreach 

优点

  • 不用嵌入java代码就可以实现JSP页面逻辑控制

  • 配合EL表达式,方便的实现JSP页面编码。

  • 代码简洁。

在idea中JSTL的引入

  1. 在项目中引入JSTL依赖的jar文件

  2. 使用taglib指令导入标签库

prefix 设置前缀名

uri 设置核心文件

通用标签库

out标签

  • 用于输出表达式的结果,比EL输出功能更加丰富。

语法

<c:out value="" default="" escapeXml="true|false"/>

value : 输出的结果,可通过EL表达式去获取

default: value的值为空时,输出默认值

escapeXml : 表示是否转换特殊字符, false 转换

set标签

  • 用于设置作用域变量的值或属性值

语法

<c:set var="变量名" value="值" target="对象名" property="属性" scope= "存储的作用域"/>

以变量的形式赋值

<c: set var="name" value="张三" scope="request"/>  //指定request作用域的name变量

以对象的形式赋值

<%
   Student stu=new Student();
   request.setAttribte("stu",stu);
%>
//通过EL表达式获取对象,给对象的name属性赋值
<c: set value="张三" target="${stu}" property="name"/> 

注意: 通过对象属性赋值时,无需指定作用域,因为在设置值之前,对象已经指定了作用域,再指定会冲突

remove标签

  • 用于移除指定作用域内的指定变量

语法

<c:remove var="<String>" scope="<String>"/>

条件标签库

if标签

  • 用于实现if语句的功能。

语法

<c:if test="条件" var ="存放表达式的执行结果" scope="变量的存储变量"/>

choose标签、when标签、otherwise标签

  • 这些标签配合实现互斥条件的执行,类似java语言的if-else if-else 语句或者switch。

语法

<c:choose>
    <c:when test="condition1">    //if 
        主体内容
    </c:when>
   <c:when test="condition2">    //else if
       主体内容
   </c:when>
    <c:otherwise>                //else
        主体内容
    </c:otherwise>
</c:choose>

如果第一个条件不符合,就会执行下面的,继续执行。

迭代标签库

forEach标签

  • 使用该标签可以很方便地实现迭代操作。

遍历两种语法格式

1.遍历集合

<c:forEach  var="引用成员的变量"  items="集合对象" varStatus="存储索引等成员相关信息"></c:forEach>

2.常规循环

<c:forEach  var="引用成员的变量"  varStatus="存储索引等成员相关信息" begin="beginIndex" end="endIndex" step="类似i++"></c:forEach>

常规循环一般用于决定循环的次数,就是普通for循环。

varStatus : 存放var属性的成员信息,如索引。

begin: 属性表示开始的位置

end: 属性表示结束的位置

step: 表示循环的步长,类似自增或自减

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_64765980/article/details/126527034

智能推荐

UE4——(8)无法打开头文件ProceduralMeshComponent.h-程序员宅基地

文章浏览阅读1.5k次。1.无法打开头文件ProceduralMeshComponent.h提示,无法打开ProceduralMeshComponent。在两个json文件中添加完ProceduralMeshComponent可以正常编译,但是有红线报错。所以需要保留UE4项目删掉vs项目文件重新生成vs,把ProceduralMeshComponent源文件添加到vs库中。添加方法参考https://blog.csdn.net/qq_31788759/article/details/1040932592.重新生成之.._proceduralmeshcomponent.h

repalce-程序员宅基地

文章浏览阅读821次。<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <titl_repalce

个人cf刷题 题目类型+一句话题意 记录_cf做题-程序员宅基地

文章浏览阅读482次,点赞2次,收藏6次。个人cf刷题记录,包含题目类型及一句话题意_cf做题

[深入研究4G/5G/6G专题-27]: 5G NR开机流程4.5 - RRC连接应答消息MSG4、PUCCH上行控制信道首次调度、UCI与HARQ应答-程序员宅基地

文章浏览阅读7w次。目录前言:第1章 随机接入知识准备1.1 逻辑信道、传输信道、物理信道的映射关系1.2 随机接入五大步骤第2章 PUCCH信道与UCI简介2.1 什么是PUCCH与UCI2.2 UCI的信息类型2.3 5G NR PUCCH信道的格式2.4 PUCCH与PUSCH的时频资源的关系第3章 PUCCH信道的调度3.1 UE是如何知道PUCCH信道的时频资源与编码配置3.2 基站MAC层对物理层PUCCH信道的调度............_5g nr开机流程

Linux之FineBI集群部署-程序员宅基地

文章浏览阅读780次。在企业应用中,通常单个计算机的配置是有限的,而企业应用又是高并发的需求,这个时候会通过计算机集群的方式来提高并发数,从而提高整体应用服务的性能。集群是将多台计算机作为一个整体来提供相关应用的服务。FineBI支持多计算机服务的集群部署,通过集群部署利用有限的计算机资源来有效提高整体应用的并发性能。本文主要介绍整体FineBI集群的思路。FineBI采用负载均衡集群的模式,将多台服务器创建为一..._linux 部署帆软bi

区域综合能源系统优化调度研究及电动汽车应用的代码实现和结果分析-程序员宅基地

文章浏览阅读386次,点赞5次,收藏6次。此外,通过实际案例的介绍和关键技术的深入讨论,读者可以更好地了解区域综合能源系统优化调度的实际应用和挑战。区域综合能源系统是指将不同形式的能源资源进行整合和优化利用的系统,其中包括传统的能源源和新型的可再生能源。我们将以能源系统的安全性、可靠性和经济性为目标,运用数学模型和优化算法,对能源生产、传输、储存和消耗进行调度和控制,以实现系统的最优化运行。此外,我们还将对其中涉及的关键技术进行深入讨论,包括能源需求预测、能源资源分配和能源交互等方面,以便读者对该领域有更全面的了解。

随便推点

ubuntu显卡驱动安装以及问题汇总_ubuntu显卡驱动问题-程序员宅基地

文章浏览阅读770次。ubuntu20.04显卡驱动安装(Y7000P2023款)!!_ubuntu显卡驱动问题

uni-app 使用easycom引入自定义组件,出现Uncaught RangeError: Maximum call stack size exceeded_uniapp分包引用easycom组件报错rangeerror: maximum call stac-程序员宅基地

文章浏览阅读1.6k次。利用uni-app开发微信小程序,借助它的easycom定义一个全局组件。按照官方说明进行开发,出现了Uncaught RangeError: Maximum call stack size exceeded 这个错误。目录结构如下:c-header.vue内容如下:<template> <view class="container"> <c-header> <view class="login-_uniapp分包引用easycom组件报错rangeerror: maximum call stack size exceeded

for input String "id"错误解决_for input string: "id-程序员宅基地

文章浏览阅读1.3w次。出现这个问题,Idea报错说明是 类型转换错误,可是之前这么做事没错的,类似于我就是这么展示在jsp页面上的,这次居然报类型转换错误,Google了一圈之后,发现不应该这么写,应该用数组下标去获取值。类似下面这种。这里面的下标顺序就是数据库当中对应的显示顺序。比如id是第一位,那么要想取到id,数组下标就是0,依次类推。..._for input string: "id

python heapq 优先队列数组内部不单调递增,但是单独一个个出队列单调递增_python heapq 维护单调-程序员宅基地

文章浏览阅读65次。在使用heapq的优先队列时,发现了标题中的现象,一度怀疑优先队列出错了。总之,使用heapq访问q[0]后面的内容时要注意。具体原因没有深究,有知道的大佬可以指点指点。_python heapq 维护单调

phpStudy环境安装SSL证书教程(apache)-程序员宅基地

文章浏览阅读85次。https://cloud.tencent.com/product/ssl此链接是检测域名 证书的可以检测一下下面是证书配置 小白呢亲测作为PHP程序员,我们一定要学会使用phpStudy环境集成包,PHPstudy用起来方便,快捷,对于刚入门的PHP初学者来说phpStudy是个好东西,我本文我们就和大家分享一下phpStudy环境如何安装SSL证书。第一步:修改apache目录..._d:/phpstudy/apache/conf/ssl/ca.key do not match

Python之小词典应用-程序员宅基地

文章浏览阅读5.9k次,点赞5次,收藏41次。Python之小词典应用这个学期专业开了python课,最后老师布置了一个作业:用python制作一个英语小词典的应用,遂做了一下。题目要求:制作英文学习词典。编写程序制作英文学习词典,词典有三个基本功能:添加、查询、和退出。程序读取源文件路径下的txt格式词典文件,若没有就创建一个。词典文件存储格式为“英文单词 中文单词”,每行仅有一对中英释义。程序会根据用户的选择进入相应的功能...

推荐文章

热门文章

相关标签