el表达式 循环_EL表达式和JSTL标签库(百战程序员047天)

1.EL表达式

介绍:是一种非常简洁的表达式,语法简单,便于使用,灵感来源于ECMAScript和Xpath的表达式语言

样式:

${表达式}

作用:简化jsp中获取作用域或者请求数据的写法。

获取请求数据

EL表达式

1)获取请求数据

(1)请求实体数据

${param.键名}

请求实体中同键不同名的数据

${paramValues.键名}//返回的数组,比如复选框。具体获得某个值,数组名[];

(2)获取请求头的数据

${header} //返回的是所有的请求头中的键值对

${header["键名"]}//返回键对应的值

如果一个键对应多个值 ${headerValues["accept-language"]}//返回的是数组

(3)获取cookie数据

${cookie}获取所有的Cookie对象 键值对

${cookie.cookie对象的键名}获取存储了指定Cookie数据的Cookie对象

${cookie.Jcookie对象的键名.name}<br>获取存储了指定Cookie数据的Cookie对象的存储的键

${cookie.Jcookie对象的键名.value}获取存储了指定Cookie数据的Cookie对象的存储的值

获取作用域数据

1)作用域对象:pageContext request session application

2)作用域数据:我们使用setAttribute方法存储的数据

获取:

普通字符串数据 ${键名}

对象数据 ${键名.属性名}

集合数据

list集合 ${键名[角标]}

Map集合 ${map集合作用域存储的键名.map集合存储的数据的键名}

3)作用域数据查找顺序:如果找到了则不再查找,如果找不到,则继续查找下一个作用域,如果四个作用域中都没有则什么都不显示

pageContext-->request-->session-->application

4)指定作用域获取数据:

${pageScope.键名} 指明获取pageContext作用域中的数据

${requestScope.键名} 指明获取request作用域中的数据

${sessionScope.键名} 指明获取session作用域中的数据

${applicationScope.键名} 指明获取application作用域中的数据

EL逻辑表达式运算

算术运算:+,-,*,/ 在EL表达式中可以直接进行算术运算

${算术表达式} 例如 :${1+2}

注意:+表示算术运算,不能进行字符串连接

逻辑运算:&& || !

${逻辑表达式}

注意:没有单& 和单|

比较运算:== != >,>=,<,<=

${比较表达式}

三目运算:

${条件?值:值}

EL表达式的empty判断

${empty 键名}

作用:

判断该键是否有存储有效数据

注意:如果普通的数据是空,用empty返回true

如果是对象数据,调用无参构造方法创建实例,用empty返回的是false,因为对象中属性会默认赋值给null.

JSTL标签库:

1.是EL表达式的扩展,它是一个标签语言

1) 作用:提升jsp页面的逻辑代码的编码效率

2)在jsp中引入

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

prefix:前缀

2.核心标签库:

基本标签:

1)out标签:

样式: <prefix:out value="${表达式}" default="默认值"></prefix:out>

作用:结合EL表达式,将数据响应到浏览器,如果EL表达式没有取到数据,会 采用默认的属性的值

2)set标签

样式:

<prefix:set var="键名" value="数据" scope="作用域"></prefix:set>

作用:将数据存储到指定的作用域中

scope:的值 page request session application

没有scope默认往pagecontext中放

3)remove 标签

<prefix:remove var="键名“ scope="作用域名"></prefix:remove>

作用:将作用域的数据数据。如果没有scope的属性,默认是删除4个作用域的含有相同的键名的数据,scope可以指定作用域

使用pageContext.removeAttriute(String name,int scope)删除指定的作用域

scope: 1 pagecontext 2request 3 session 4application

注意:pageContext.removeAttribute("键名")会删掉所有作用域含有的相同键名的数据

逻辑标签:

单分支标签:

1)if 标签:

样式:

<prefix:if text="EL表达式">

输出的标签

</prefix:if >

作用:可以根据el表达式进行一定程度的单分支逻辑判断。

注意:

test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式。

该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理

多分支标签:

样式:

<prefix:choose>

<prefix:when text="EL表达式"></prefix:when >

<prefix:when text="EL表达式"></prefix:when >

……

<prefix:otherwise ></prefix:otherwise >

</prefix:choose>

注意:多分支标签只能执行一个,类似于if(){} else if(){} else {}

例子:

<c:choose> <c:when test="${score>=90}">  <b>赏美女</b>   </c:when>    
<c:when test="${score>=80 &&score<90 }">    <b>赏萝莉</b>   </c:when>   <c:otherwise>  <b>赏丑八怪加大胖子一个</b>   </c:otherwise></c:choose> 

注意:EL表达式的数据,只能是EL能获取的数据。

循环标签:

样式:

<prefix:forEach begin="" end="" step="" varstatus="">

循环体

<prefix:forEach>

标签中的属性:begin:从声明循环开始的位置

end:循环结束的位置

step:循环跨越的步数

varstatus:声明变量记录循环的状态,例如:变量名=i;

注意:记录的数据,存储到了作用域,可以直接用EL表达式获取

实例:

${ i.index} :获取循环的下标

${i.count} :获取当前的循环的次数

${i.first}:判断是否是第一次循环

${i.last}:判断是否是最后一次循环

例子:

<c:forEach begin="1"  end="5"  step="2"  varStatus="i">   <c:if test="${i.count==3}">   <b>哇偶你是大帅锅</b>    
</c:if> 
</c:forEach> 

当遍历数组的长度不知道的时候比如集合,map:

<prefix:foreach items="" var="" varstatus="" >

</prefix:foreach>

items:要遍历的集合或者数组或者map,在作用域中的键名,用EL表达式获取。

从索引为0的位置开始遍历

var:指向集合或者数组的元素。在循环体中,用EL表达式获取,

注意如果是map的话,在循环体中用EL表达式获取的是键值对关系,获得具体的key

用${var中的变量名.key}

获取值得话${var中的变量名.value}

注意:var声明的变量存储到了作用域,得用EL表达式获取

实例:

<!-- 遍历List集合 -->

 <% 	
//创建测试数据list 	
ArrayList<String> list=new ArrayList<String>(); 	
list.add("苹果"); list.add("榴莲"); 	
list.add("荔枝"); 	
//将list存储到作用域中 	
request.setAttribute("list",list); 	%> 
<c:forEach items="${list}" var="s" varStatus="i"> ${s}--${i.index}--${i.count}<br /> 
</c:forEach> 
<!--遍历map集合  --> 
<% //声明Map集合测试数据 	
HashMap<String,String> hs=new HashMap<String ,String>(); 	
hs.put("s1","唱歌"); 	
hs.put("s2", "跳舞"); 
hs.put("s3", "敲代码"); 	
//将数据存储到作用域中 	
request.setAttribute("hs", hs); 
%> 
<c:forEach items="${hs}" var="s"> 	
${s.key}--${s.value}<br /> 
</c:forEach> 

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

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

相关文章

【机器学习】sklearn k-近邻算法

sklearn k-近邻算法1. sklearn k-近邻算法API2. k近邻算法实例-预测入住位置核心思想&#xff1a;你的“邻居”来推断出你的类别定义&#xff1a;如果一个样本在特征空间中的 k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这个类别。…

openresty package.path require 报错

在文件中 package.path /usr/local/share/lua/5.1/?.lua;/usr/local/openresty/lualib/resty/?.lua; package.cpath /usr/local/lib/lua/5.1/?.so;执行local mysql require "mysql" --正确local mysql require "resty.mysql" --报错去掉 package.pa…

LeetCode 1849. 将字符串拆分为递减的连续值(回溯)

文章目录1. 题目2. 解题1. 题目 给你一个仅由数字组成的字符串 s 。 请你判断能否将 s 拆分成两个或者多个 非空子 字符串 &#xff0c;使子字符串的 数值 按 降序 排列&#xff0c;且每两个 相邻子字符串 的数值之 差 等于 1 。 例如&#xff0c;字符串 s "0090089&q…

axure选中后横线切换_Axure8.0|动态面板内容简单切换技巧

无论做web段还是移动端&#xff0c;常常会用到动态面板固定在某个区域来变换内容&#xff0c;达到节省空间的作用&#xff0c;今天分享的就是如何实现这种方式。预览效果&#xff1a;一、元件准备以IT/互联网、设计创作、职场金融这三组为例&#xff0c;所涉及到的元件分别为it…

flutter text 最大长度_Flutter小技巧之TextField换行自适应

无论哪种界面框架输入文本框都是非常重要的控件, 但是发现flutter中的输入框TextField介绍的虽然多,但是各个属性怎么组合满足需要很多文章却说不清楚, 再加上控件版本变更频繁很多功能的介绍都是比较陈旧的属性.现在就需要一个类似微信的输入文本框, 这样一个非常实用的效果fl…

【机器学习】分类算法sklearn-朴素贝叶斯算法

分类算法-朴素贝叶斯算法1. 概率基础2. 朴素贝叶斯介绍3. sklearn朴素贝叶斯实现API4. 朴素贝叶斯算法案例1. 概率基础 概率定义为一件事情发生的可能性&#xff1a;扔出一个硬币&#xff0c;结果头像朝上&#xff1b;某天是晴天 联合概率和条件概率“”&#xff1a; 联合概率…

收集的电影网站

迅播影院-Gvod Player-Gvod电影-迅雷电影下载动漫下载|BT|漫画|动画|游戏 - 极影动漫一路电影网&#xff0d;高清电影下载_1080p电影下载_蓝光电影下载_3d电影下载天天美剧人人影视电影天堂电影FMTorrentProject - Torrent Search EngineBT Kitty - Professional torrent searc…

LeetCode 1851. 包含每个查询的最小区间(排序 + 离线查询 + 优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 intervals &#xff0c;其中 intervals[i] [lefti, righti] 表示第 i 个区间开始于 lefti 、结束于 righti&#xff08;包含两侧取值&#xff0c;闭区间&#xff09;。 区间的 长度 定义为区间中包含的整数数目&#xff…

canvas 判断哪个元素被点击_监听 Canvas 内部元素点击事件的三种方法

canvas内部元素不能像DOM元素一样方便的添加交互事件监听&#xff0c;因为canvas内不存在“元素”这个概念&#xff0c;他们仅仅是canvas绘制出来的图形。这对于交互开发来说是一个必经障碍&#xff0c;想要监听图形的点击事件思路很简单&#xff0c;只要监听canvas元素本身的点…

git 查看某些文档的历史版本_Git 教程(二)log 命令的使用

使用 Git 进行版本控制时&#xff0c;要习惯他的工作流程&#xff0c;Git 的工作流程是&#xff0c;先在工作区创建项目并编写代码&#xff0c;然后将写好的文件添加到暂存区&#xff0c;最后将暂存区里的文件提交到历史版本库。如下图所示&#xff1a;每向版本历史库做一次提交…

【机器学习】sclearn分类算法-决策树、随机森林

分类算法-决策树、随机森林1.决策树1.1 认识决策树1.2 信息论基础-银行贷款分析1.3 决策树的生成1.4 决策树的划分依据之一-信息增益1.5 sklearn决策树API1.6 泰坦尼克号乘客生存分类2. 集成学习方法-随机森林1.决策树 1.1 认识决策树 决策树思想的来源非常朴素&#xff0c;程…

在Java中正确使用注释

Java提供了3种类型的注释&#xff1a; 单行注释&#xff08;C风格&#xff09; 在Java中最简单的注释是单行注释。它以两个正斜杠开始并到行尾结束。例如&#xff1a; // this is a single-line commentx 1; // a single-line comment after code 多行注释&#xff08;C风格&a…

Spark 机器学习中的线性代数库

文章目录1. DenseVector、SparseVector2. DenseMatrix3. SparseMatrix4. Vector 运算5. 矩阵运算6. RowMatrix7. IndexedRowMatrix8. CoordinateMatrix9. BlockMatrix完整代码pom.xml学自&#xff1a;Spark机器学习实战 https://book.douban.com/subject/35280412/ 环境&#…

atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity

atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity 1. addEntity 对原生SQL查询执行的控制是通过SQLQuery接口进行的&#xff0c;通过执行Session.createSQLQuery()获取这个接口。最简单的情况下&#xff0c;我们可以采用以下形式&#xff1a; List cats ses…

【机器学习】回归算法-线性回归分析、回归实例和回归性能评估

回归算法-线性回归分析、回归实例和回归性能评估线性回归损失函数(误差大小)sklearn线性回归正规方程、梯度下降API线性回归实例回归&#xff1a;目标值连续&#xff1b;分类&#xff1a;目标值离散。 预测回归和分类是不一样的。回归问题可以用于预测销售额&#xff0c;比如公…

scrapy使用代理报错keyerror: proxy_爬虫Scrapy框架-Crawlspider链接提取器与规则解析器...

Crawlspider一&#xff1a;Crawlspider简介CrawlSpider其实是Spider的一个子类&#xff0c;除了继承到Spider的特性和功能外&#xff0c;还派生除了其自己独有的更加强大的特性和功能。其中最显著的功能就是”LinkExtractors链接提取器“。Spider是所有爬虫的基类&#xff0c;其…

activity-启动动画的设定(下面弹出出现,弹入下面消失)

1.今天为了把一个activity以dialog的形式显示&#xff0c;而且实现从开始的时候从底部往上弹出&#xff0c;结束的时候&#xff0c;从上往下消失&#xff0c;做了如下的工作。 1&#xff09;如果把一个activity以dialog的形式显示&#xff1f; 这个只需要设置theme的样式为*.di…

传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...

模板名称&#xff1a;(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载本套织梦模板采用织梦最新内核开发的模板&#xff0c;这款模板使用范围广&#xff0c;不仅仅局限于一类型的企业&#xff0c;创意设计、装饰设计、餐饮酒店设计…

【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测

逻辑回归—良&#xff0f;恶性乳腺癌肿瘤预测 逻辑回归的损失函数、优化 与线性回归原理相同,但由于是分类问题&#xff0c;损失函数不一样&#xff0c;只能通过梯度下降求解 sklearn逻辑回归API sklearn.linear_model.LogisticRegressionLogisticRegression sklearn.linear…

mysql分组之后统计数量

select count(*) from(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a ; 转载于:https://www.cnblogs.com/shenming/p/4343895.html