JSP编程专题2之JSP核心四(JSTL核心标签库,格式化标签库)
wxin55 2024-10-29 17:25 9 浏览 0 评论
1、JSTL核心标签库:
-使用JSTL的核心标签库,需要在页面中通过taglib指令首先将标签库导入。(首先得将JSTLjar包导入)
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
a、c:set标签:有三种用法
-用于进行变量定义,并将变量存放到指定域属性空间;用于为Bean的属性赋值;用于设置Map的key与value等。该标签在实际开发中并不常用。
<br>-------------------c:set将变量存放到指定域中----------------<br>
<c:setvar="name"value="张三"scope="session"/>
name=${pageScope.name}<br>
name=${sessionScope.name}<br>
<!--
输出结果为:
-------------------c:set将变量存放到指定域中----------------
name=
name=张三
->
-scope属性值默认是“pageContext”。
<br>-------------------c:set为Bean的属性赋值------------------<br>
<%
Studentstudent=newStudent();
pageContext.setAttribute("student",student);
%>
<c:setvalue="李四"property="name"target="${pageScope.student}"></c:set>
<c:setvalue="24"property="age"target="${pageScope.student}"></c:set>
student=${student}<br>
<!--
输出结果为:
-------------------c:set为Bean的属性赋值------------------
student=Student[name=李四,age=24]
-->
<br>----------------------c:set为Map赋值---------------------<br>
<%
Map<String,Object>map=newHashMap<String,Object>();
pageContext.setAttribute("map",map);
%>
<c:setvalue="即可"property="name"target="${pageScope.map}"></c:set>
<c:setvalue="20"property="age"target="${pageScope.map}"></c:set>
map=${map}<br>
name=${map.name}<br>
age=${map.age}<br>
<!--
输出结果为:
----------------------c:set为Map赋值---------------------
map={name=即可,age=20}
name=即可
age=20
-->
b、c:remove标签:从域属性空间中删除指定变量。该标签不常用。
<br>----------------------------c:remove删除指定域中的属性--------------------<br>
<c:setvar="school"value="pag_school"/>
<c:setvar="school"value="req_school"scope="request"/>
<c:setvar="school"value="ses_school"scope="session"/>
<c:setvar="school"value="app_school"scope="application"/>
<c:removevar="school"scope="session"/>
school=${pageScope.school}<br>
school=${requestScope.school}<br>
school=${sessionScope.school}<br>
school=${applicationScope.school}<br>
<!--
输出结果为:
----------------------------c:remove删除指定域中的属性--------------------
school=pag_school
school=req_school
school=
school=app_school
-->
c、c:if标签:用于实现对于条件的判断
<br>--------------c:if--------------<br>
<c:setvar="user"value="admin"/>
<c:iftest="${user=='admin'}">
<ahref="#">进入管理页面</a>
</c:if>
<!--
输出结果为:
--------------c:if--------------
进入管理页面
-->
-test:判断的条件。若为true,则执行标签体,否则不执行。
-var:存储test的判断结果。不常用。
-scope:存储test判断结果的变量的存放范围。不常用。
d、<c:choose>就像在Javaswitch语句,它可以让你在一些替代方案之间选择。
-<c:choose>标签没有任何属性。
-<c:when>标记有一个test属性(用于计算条件)。
-<c:otherwise>标签没有任何属性。
<br>----------------------c:choose------------------------<br>
<c:setvar="pageno"value="2"/>
<c:setvar="totalPages"value="5"/>
<c:choose>
<c:whentest="${totalPages==1}">
首页上一页下一页当前是${pageno}/${totalPages}页
</c:when>
<c:whentest="${pageno==1}">
首页上一页<ahref="#">下一页</a><ahref="#">末页</a>当前是${pageno}/${totalPages}页
</c:when>
<c:otherwise>
<ahref="#">首页</a><ahref="#">上一页</a><ahref="#">下一页</a><ahref="#">末页</a>当前是${pageno}/${totalPages}页
</c:otherwise>
</c:choose>
<!--
输出结果为:
----------------------c:choose------------------------
首页上一页下一页末页当前是2/5页
-->
e、c:forEach标签的基本用法:用于循环遍历数组、List、Set、Map集合。在实际应用中使用非常频繁。
<br>--------------------遍历List---------------<br>
<%
List<String>names=newArrayList<String>();
names.add("张三");
names.add("李四");
names.add("王五");
pageContext.setAttribute("names",names);
%>
<c:forEachitems="${names}"var="name">
${name}<br>
</c:forEach>
<!--
输出结果为:
--------------------遍历List---------------
张三
李四
王五
-->
-begin:开始下标;end:结束下标;(包含结束下标)。
<br>--------------------遍历List---------------<br>
<%
List<String>names=newArrayList<String>();
names.add("郑二");
names.add("张三");
names.add("李四");
names.add("王五");
names.add("赵六");
names.add("田七");
names.add("刘八");
pageContext.setAttribute("names",names);
%>
<c:forEachitems="${names}"var="name"begin="3"end="5">
${name}<br>
</c:forEach>
<!--
输出结果为:
--------------------遍历List---------------
王五
赵六
田七
-->
-step:表示步长,各一个输出。
<br>--------------------遍历List---------------<br>
<%
List<String>names=newArrayList<String>();
names.add("郑二");
names.add("张三");
names.add("李四");
names.add("王五");
names.add("赵六");
names.add("田七");
names.add("刘八");
pageContext.setAttribute("names",names);
%>
<c:forEachitems="${names}"var="name"begin="0"end="5"step="2">
${name}<br>
</c:forEach>
<!--
输出结果为:
--------------------遍历List---------------
郑二
李四
赵六
-->
f、c:forEach标签的高级用法:
-varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。(vs.count表示序号;vs.index表示索引号(从0开始);vs.first:当迭代的时候是第一个时,显示为true,否则显示为false。)
<br>----------------------遍历List---------------------<br>
<%
List<Student>students=newArrayList<Student>();
students.add(newStudent("张三",23));
students.add(newStudent("李四",24));
students.add(newStudent("王五",25));
students.add(newStudent("赵六",26));
students.add(newStudent("田七",27));
pageContext.setAttribute("students",students);
%>
<tableborder="1">
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEachitems="${students}"var="student"varStatus="vs">
<tr>
<td>${vs.count}</td>
<td>${student.name}</td>
<td>${student.age}</td>
</tr>
</c:forEach>
</table>
<!--
输出结果为:
----------------------遍历List---------------------
序号姓名年龄
1张三23
2李四24
3王五25
4赵六26
5田七27
-->
2、JSTL格式化标签库:使用JSTL的格式化标签库,需要在页面中通过taglib指令首先将标签库导入。
<%@tagliburi="prefix="fmt"%>
a、fmt:formatDate标签:该标签用于使用不同的模式格式化日期。其常用属性有:
-value:将要被格式化的数据。
-pattern:格式化的模式。其与SimpleDateFormat的参数设置方式相同。
-var:格式化后的字符串所要存放的变量。若不指定var,则会将格式化过的结果直接显示在页面中。
-scope:变量存放的域属性空间,取值为page、request、session和application,默认为page范围。
-type:其取值为date、time或者是both,表示给出的value是日期、时间,还是两者都包含,默认为date。
<%
Datenow=newDate();
pageContext.setAttribute("now",now);
%>
now=${now}<br>
<!--
输出结果为:
now=SunNov0514:00:26CST2017
-->
-示例:使用格式化日期标签:(显示“年-月-日”格式)
now=<fmt:formatDatevalue="${now}"pattern="yyyy-MM-dd"/><br>
<!--
输出结果为:
now=2017-11-05
-->
-再如将格式化后的日期字符串显示到表单中:
<fmt:formatDatevalue="${now}"pattern="yyyy-MM-dd"var="birth"/><br>
生日:<inputtype="text"name="birthday"value="${birth}"/>
b、fmt:parseDate标签:该标签用于将指定字符串转换成日期类型。常用的属性有:
-value:将要被转换的数据。
-pattern:将要被转换的数据的模式。其与SimpleDateFormat的参数设置方式相同。
-var:转换后的日期类型数据所要存放的变量。若不指定var,则会将转换过的结果直接显示在页面中。
-scope:变量存放的域属性空间。取值为page、request、session、application,默认为page范围。
<br>---------------------------字符串转换成日期--------------<br>
<fmt:parseDatevalue="1949/10/01"pattern="yyyy/MM/dd"></fmt:parseDate><br>
<fmt:parseDatevalue="1949/10/01"pattern="yyyy/MM/dd"var="day"></fmt:parseDate><br>
day=${day}
<!--
输出结果为:
---------------------------字符串转换成日期--------------
SatOct0100:00:00CST1949
day=SatOct0100:00:00CST1949
-->
c、fmt:formatNumber:该标签用于按照指定格式对数字进行格式化。常用的属性有:
-示例:
<br>--------------------------格式化数字--------------------<br>
<fmt:formatNumbervalue="${12345678}"></fmt:formatNumber><br>
<fmt:formatNumbervalue="${12345678}"groupingUsed="false"></fmt:formatNumber><br>
<fmt:formatNumbervalue="${12345.678}"maxIntegerDigits="8"minIntegerDigits="6"></fmt:formatNumber><br>
<fmt:formatNumbervalue="${12345.674}"maxFractionDigits="2"></fmt:formatNumber>
<!--
输出结果为:
--------------------------格式化数字--------------------
12,345,678
12345678
012,345.678
12,345.67
-->
d、fmt:parseNumber标签:该标签用于将指定字符串转换成数值类型。常用的属性有:
-示例:
<br>-------------------字符串转换成数字-----------------<br>
<fmt:parseNumbervalue="12345.678"integerOnly="true"></fmt:parseNumber><br>
<fmt:parseNumbervalue="12345.678"integerOnly="true"var="num"></fmt:parseNumber>
num+1=${num+1}
<!--
输出结果为:
-------------------字符串转换成数字-----------------
12345
num+1=12346
-->
更多相关资讯可以关注西安华美校区,免费获得java零基础教程!额外附送excel教程
相关推荐
- ES6中 Promise的使用场景?(es6promise用法例子)
-
一、介绍Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码doSomething(f...
- JavaScript 对 Promise 并发的处理方法
-
Promise对象代表一个未来的值,它有三种状态:pending待定,这是Promise的初始状态,它可能成功,也可能失败,前途未卜fulfilled已完成,这是一种成功的状态,此时可以获取...
- Promise的九大方法(promise的实例方法)
-
1、promise.resolv静态方法Promise.resolve(value)可以认为是newPromise方法的语法糖,比如Promise.resolve(42)可以认为是以下代码的语...
- 360前端一面~面试题解析(360前端开发面试题)
-
1.组件库按需加载怎么做的,具体打包配了什么-按需加载实现:借助打包工具(如Webpack的require.context或ES模块动态导入),在使用组件时才引入对应的代码。例如在V...
- 前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?
-
Promise的finally方法是一个非常有用的工具,它无论Promise是成功(fulfilled)还是失败(rejected)都会执行,且不改变Promise的最终结果。它的实现原...
- 最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式
-
看了全网手写Promise的,大部分对于新手还是比较难理解的,其中几个比较难的点:状态还未改变时通过发布订阅模式去收集事件实例化的时候通过调用构造函数里传出来的方法去修改类里面的状态,这个叫Re...
- 前端分享-Promise可以中途取消啦(promise可以取消吗)
-
传统Promise就像一台需要手动组装的设备,每次使用都要重新接线。而Promise.withResolvers的出现,相当于给开发者发了一个智能遥控器,可以随时随地控制异步操作。它解决了三大...
- 手写 Promise(手写输入法 中文)
-
前言都2020年了,Promise大家肯定都在用了,但是估计很多人对其原理还是一知半解,今天就让我们一起实现一个符合PromiseA+规范的Promise。附PromiseA+规范地址...
- 什么是 Promise.allSettled()!新手老手都要会?
-
Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的pr...
- 前端面试-关于Promise解析与高频面试题示范
-
Promise是啥,直接上图:Promise就是处理异步函数的API,它可以包裹一个异步函数,在异步函数完成时抛出完成状态,让代码结束远古时无限回掉的窘境。配合async/await语法糖,可...
- 宇宙厂:为什么前端离不开 Promise.withResolvers() ?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.为什么需要Promise.with...
- Promise 新增了一个超实用的 API!
-
在JavaScript的世界里,Promise一直是处理异步操作的神器。而现在,随着ES2025的发布,Promise又迎来了一个超实用的新成员——Promise.try()!这个新方法简...
- 一次搞懂 Promise 异步处理(promise 异步顺序执行)
-
PromisePromise就像这个词的表面意识一样,表示一种承诺、许诺,会在后面给出一个结果,成功或者失败。现在已经成为了主流的异步编程的操作方式,写进了标准里面。状态Promise有且仅有...
- Promise 核心机制详解(promise机制的实现原理)
-
一、Promise的核心状态机Promise本质上是一个状态机,其行为由内部状态严格管控。每个Promise实例在创建时处于Pending(等待)状态,此时异步操作尚未完成。当异步操作成功...
- javascript——Promise(js实现promise)
-
1.PromiseES6开始支持,Promise对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简单说就是处理异步请求的。之所以叫Promise,就是我承诺,如果成功则怎么处理,失败怎...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- ES6中 Promise的使用场景?(es6promise用法例子)
- JavaScript 对 Promise 并发的处理方法
- Promise的九大方法(promise的实例方法)
- 360前端一面~面试题解析(360前端开发面试题)
- 前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?
- 最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式
- 前端分享-Promise可以中途取消啦(promise可以取消吗)
- 手写 Promise(手写输入法 中文)
- 什么是 Promise.allSettled()!新手老手都要会?
- 前端面试-关于Promise解析与高频面试题示范
- 标签列表
-
- hive行转列函数 (63)
- sourcemap文件是什么 (54)
- display none 隐藏后怎么显示 (56)
- 共享锁和排他锁的区别 (51)
- httpservletrequest 获取参数 (64)
- jstl包 (64)
- qsharedmemory (50)
- watch computed (53)
- java中switch (68)
- date.now (55)
- git-bash (56)
- 盒子垂直居中 (68)
- npm是什么命令 (62)
- python中+=代表什么 (70)
- fsimage (51)
- nginx break (61)
- mysql分区表的优缺点 (53)
- centos7切换到图形界面 (55)
- 前端深拷贝 (62)
- kmp模式匹配算法 (57)
- jsjson字符串转json对象 (53)
- jdbc connection (61)
- javascript字符串转换为数字 (54)
- mybatis 使用 (73)
- 安装mysql数据库 (55)