JSTL核心标签超详细详解(学习笔记,一文看懂)
JSTL
一、认识JSTL表达式
1.什么是JSTL
- JSTL是Java server pages standarded tag library的缩写,即java标准标签库
- JSTL百度百科
- JSTL是java中的一个订制标签库集
- JSTL标准标签库(JSTL)是一个JSP标准集合,它封装了JSP应用的通用核心功能。
- 根据JSTL标签所提供的功能,可以将其分为五5个类别。
- 核心标签(常用)
- 格式化标签
- SQL标签
- XML标签
- JSTL函数
2.为什么要使用JSTL
- 实现了JSP页面代码的复用
- 基于标签库原理,重复
- 书写JSP页面的可读性强
- 长得很像XML,方便前端检查和参与修改
二、JSTL环境搭建
- maven官网搜索jstl的依赖
- 导入到项目
- 在JSP页面引入jar包
三、JSTL表达式的核心标签
1.13个核心标签
2.按功能划分四类
从功能上可以分为4类:
按照功能划分 | 包含的标签 |
---|---|
表达式控制标签 | out set remove catch |
流程控制标签 | if choose when otherwise |
循环标签 | forEach forTokens |
URL标签 | import url redirect |
四、JSTL常用标签详细讲解
1.表达式控制标签
out标签的用法:
- 输出常量
- 可以在value属性中直接赋值
- 输出变量
- 变量不存在的时候可以配合default属性输出默认值,还可以通过escapeXml控制转义字符的输出格式
- var设定存放值的变量
实例:
<c:set var="age" scope="page" value="18"></c:set>
<c:out value="${pageScope.age}"/>
<c:out value="你好,Jstl"/>
set标签的用法:
存值到scope中
- 可以将值以变量的形式存放到指定的范围
- scope设定存放值的内容
- value指定存放值的内容
- var设定存放的变量
实例:
<c:set var="age" value="18" scope="page"/>
${age-1}
- 存值到JavaBean的属性中
- target属性指定javabean的对象
- property属性指定要赋值给javabean对象的那个属性
- value指定存放值的内容
remove标签的用法:
- remove掉某一个变量
- var属性是必选的
- scope属性是必选的
注意:
如果不同的scope中存在一样的变量,可以通过scope属性指定删除哪个scope中的变量
实例:
<c:set var="address" scope="page" value="hn"></c:set>
<c:out value="${pageScope.address}"/>
<c:remove var="address" scope="page"/>
<c:out value="${pageScope.address}"/>
catch标签的用法:
- catch标签可以包含容易出错的JSTL标签(逻辑)
- var属性定义错误信息的输出的变量名
实例:
<%--catch标签--%>
<c:catch var="error"><%--压根就没有student,看它报什么错--%><c:set target="student" property="name" value="xiaoming"/></c:catch><c:out value="${error}"/>
2.流程控制标签
if标签的用法:
- 用来实现分支条件的控制
- test属性用来存放判断条件,一般使用EL表达式来编写
- var属性指定名称用来存放判断结果类型为true还是false
- scope属性用来存放指定var属性存放的范围
实例:
<c:set var="age" value="18" scope="page"> </c:set><c:if test="${pageScope.age>17}">我大于17</c:if>
<c:if test="${pageScope.age<=17}">我小于等于17</c:if>
choose、when、otherwise标签的用法:
- 通常这三个标签放在一起来使用。
<c:choose>
标签嵌套在<c:when>
和<c:otherwise>
标签的外面作为父标签来使用。<c:choose>
标签和<c:when>
标签也可以组合使用。
实例一:三个标签一起使用
<c:set var="score" value="88"/>
<c:choose><c:when test="${score>90}">优秀</c:when><c:when test="${score<=90 and score>80}">良好</c:when><c:when test="${score<=80 and score>70}">良好</c:when><c:otherwise>不及格</c:otherwise>
</c:choose>
结果显示:良好
实例二:只用choose和when标签
<c:choose><c:when test="${score>90}">优秀</c:when><c:when test="${score<=90 and score>80}">良好</c:when><c:when test="${score<=80 and score>70}">良好</c:when><c:when test="${score<=70}">不及格</c:when>
</c:choose>
结果显示为:良好
3.循环标签
forEach标签的用法(重点!!):
- 根据循环条件遍历集合中的元素
- var设定变量名用于存储从集合中取出的元素(必须无默认值)
- items指定要遍历的集合
- begin、and用于指定遍历的起始位置和终止位置(有默认值)
- step指定循环的步长(有默认值)
- varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态。
实例1(遍历常量):
<table border="1">
<c:forEach var="i" begin="1" end="10" step="1" varStatus="j"><%//设置隔行变色%><tr <c:if test="${j.index%2==0}"> style="background-color: pink" </c:if> ><td><c:out value="${i}"/></td></tr>
</c:forEach>
</table>
实例2(遍历实体对象集合):
<%Student student1=new Student(1,"小红");Student student2=new Student(2,"小明");List<Student> list=new ArrayList<>();list.add(student1);list.add(student2);pageContext.setAttribute("list",list);
%>
<table border="1"><tr><td>ID</td><td>姓名</td></tr><c:forEach var="student" items="${pageScope.list}" step="1" varStatus="j"><%//设置隔行变色%><tr <c:if test="${j.index%2==0}"> style="background-color: pink" </c:if> ><td><c:out value="${student.id}"/></td><td><c:out value="${student.name}"/></td></tr></c:forEach>
</table>
forTookens标签的用法
- 用于浏览字符串,并根据指定的字符串将字符串截取。
- items指定被迭代的字符串
- delims指定使用的分隔符
- var指定用来存放遍历的元素
实例:
<c:set var="zifu" value="中国,美国,英国,法国" scope="page"/>
<c:forTokens items="${pageScope.zifu}" delims="," var="z">${z}<br>
</c:forTokens>
效果:
4.URL标签
import标签的用法:
- 可以把其他静态或者动态文件包含到本jsp页面。
- 同< jsp:include>的区别为:只能包含同一个web应用中的文件
- 而< c:import>可以包含其他web应用下的文件,甚至是网络上的资源
redirect标签的用法:
- 该标签用来实现请求的重定向,同时可以在url中加入指定的参数
- url指定重定向页面的地址,可以是一个String类型的绝对地址或者相对地址
- context用来导入其他web应用 中的页面。
实例:
<c:if test="${2>1}"><c:redirect url="testImport.jsp"/>
</c:if>
url标签的用法:
- 该标签用于动态生成一个String类型的url,可以同<c:param>标签共同使用,也可以使用html的< a>
标签实现超链接。- value表示url路径值
- var将url的路径存放在变量中
- scope var变量的范围
实例:
<c:url var="myurl" value="test.jsp"><c:param name="id" value="1"/><c:param name="name" value="xiaoming"/>
</c:url>
内容是:${myurl}<br>
<a href="${myurl}">我的超链接</a>
效果:
五、顺便一提格式化标签库
1.formatDate标签的详解
实例:
--不要忘记这个标签库的导入
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
--正文代码
<%Date date=new Date();pageContext.setAttribute("date",date);
%>${pageScope.date}
<br>
<fmt:formatDate value="${pageScope.date}" pattern="yyyy-MM-dd hh:mm:ss"/>
效果:
六、顺便一提函数标签库
1.length标签
实例:
${fn:length("abc")}
页面显示:3
JSTL核心标签超详细详解(学习笔记,一文看懂)相关推荐
- 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...
一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...
- VC++深入详解学习笔记
VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesso ...
- 超详细!Vue-coderwhy个人学习笔记(二)(Day3)
前言 本文章接上一篇笔记 超详细!Vue-coderwhy个人学习笔记(一)(Day1-Day2) 这篇主要是Day3笔记,组件化,组件通信,插槽 四.组件化开发 (一).内容概述 认识组件化 注册组 ...
- TCP/IP详解学习笔记-基本概念
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...
- 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...
- TCP/IP详解学习笔记(1)-基本概念
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...
- TCP_IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了.
http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样 ...
- TCP/IP详解学习笔记
[TCP/IP详解学习笔记(1)基本概念] 为什么会有TCP/IP协议? 计算机型号多种多样,并且运行于不同操作系统.虽然电线把计算机连接到了一起,但是这些计算机无法"交流",所以 ...
最新文章
- 泛海三江手动控制盘怎么设置_热板机如何操作控制系统?
- linux里与Ctrl组合使用的键
- 精算模型1 一元生存分析3 条件概率与截尾分布
- 数据中心的运维管理原则(一)
- Boost:BOOST_ASSERT用法的测试程序
- BZOJ 3907: 网格( 组合数 + 高精度 )
- CodeForces 258D Little Elephant and Broken Sorting(期望)
- ThinkPHP - 6 - 学习笔记(2015.5.4)
- python报表_Python生成报表
- 回顾之前易忘记的知识
- python 类(1)
- android cpu降温代码,Android手机CM设置中CPU模式解释
- XP系统计算机桌面图标不见,win10桌面计算机图标不见了怎么办
- excel公式编辑器_让同事看傻,用Excel制作 “抽奖”小软件
- (34)[NIPS15] Teaching Machines to Read and Comprehend
- 如何触发‘isTrusted = true‘点击事件
- 上下定高 中间自适应_css经典布局——头尾固定高度中间高度自适应布局
- 两台小米手机如何实现远程控制
- 活着活着也许就明白了!
- 联通沃享小颗粒真正好用的(虚拟专用网络)正式上线