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核心标签超详细详解(学习笔记,一文看懂)相关推荐

  1. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

  2. VC++深入详解学习笔记

    VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesso ...

  3. 超详细!Vue-coderwhy个人学习笔记(二)(Day3)

    前言 本文章接上一篇笔记 超详细!Vue-coderwhy个人学习笔记(一)(Day1-Day2) 这篇主要是Day3笔记,组件化,组件通信,插槽 四.组件化开发 (一).内容概述 认识组件化 注册组 ...

  4. TCP/IP详解学习笔记-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  5. 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了

    TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...

  6. TCP/IP详解学习笔记(1)-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  7. TCP_IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  8. TCP/IP详解学习笔记 这位仁兄写得太好了.

    http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样 ...

  9. TCP/IP详解学习笔记

    [TCP/IP详解学习笔记(1)基本概念] 为什么会有TCP/IP协议? 计算机型号多种多样,并且运行于不同操作系统.虽然电线把计算机连接到了一起,但是这些计算机无法"交流",所以 ...

最新文章

  1. 泛海三江手动控制盘怎么设置_热板机如何操作控制系统?
  2. linux里与Ctrl组合使用的键
  3. 精算模型1 一元生存分析3 条件概率与截尾分布
  4. 数据中心的运维管理原则(一)
  5. Boost:BOOST_ASSERT用法的测试程序
  6. BZOJ 3907: 网格( 组合数 + 高精度 )
  7. CodeForces 258D Little Elephant and Broken Sorting(期望)
  8. ThinkPHP - 6 - 学习笔记(2015.5.4)
  9. python报表_Python生成报表
  10. 回顾之前易忘记的知识
  11. python 类(1)
  12. android cpu降温代码,Android手机CM设置中CPU模式解释
  13. XP系统计算机桌面图标不见,win10桌面计算机图标不见了怎么办
  14. excel公式编辑器_让同事看傻,用Excel制作 “抽奖”小软件
  15. (34)[NIPS15] Teaching Machines to Read and Comprehend
  16. 如何触发‘isTrusted = true‘点击事件
  17. 上下定高 中间自适应_css经典布局——头尾固定高度中间高度自适应布局
  18. 两台小米手机如何实现远程控制
  19. 活着活着也许就明白了!
  20. 联通沃享小颗粒真正好用的(虚拟专用网络)正式上线

热门文章

  1. Macbook出现闪屏现象怎么办?macz小编帮你支招!
  2. 从现在起-彻底学会 js ast
  3. Excel生成insert 语句
  4. WTL 界面设计篇(CSkinRichEdit)
  5. Python怎样实现清空终端
  6. idea打包项目并发布到服务器上
  7. GIZA++ 运行报告
  8. 到底什么是用例图!!!!
  9. python网易云课堂 高_有木有人上过网易云课堂的 Python Web 微专业,怎么样?
  10. 我画我画我使劲画(3)