一、JSTL概述:

1、什么是JSTL?

  • JSTL 全名为 JavaServer Pages Standard Tag Library, 它主要提供给开发人员一个标准通用的标签函数库。

2、JSTL的作用:

  • Web程序开发人员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序的做法,以提高程序可读性、维护性和方便性。

3、JSTL所提供的标签函数库主要分为五大类:

  1. 核心标签库 (Core tag library)
  2. SQL 标签库 (SQL tag library)
  3. I18N 格式标签库 (internationalization )
  4. XML 标签库 (XML tag library)
  5. 函数标签库 (Functions tag library)

其中核心标签库是最常用的,这里只总结下核心标签库。

4、使用标签的方法:

 <%@taglib tagdir/uri="标签位置" prefix="缩略名"%>
JSTL 前缀 URI 范例
核心标签库 c http://java.sun.com/jsp/jstl/core <c:out>
SQL标签库 sql http://java.sun.com/jsp/jstl/sql <sql:query>
I18N 标签库 fmt http://java.sun.com/jsp/jstl/fmt <fmt:formatDate>
XML标签库 xml http://java.sun.com/jsp/jstl/xml <x:forBach>
函数标签库 fn http://java.sun.com/jsp/jstl/functions <fn:split>

例 (使用核心标签库):

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
二、JSTL核心标签库:

JSTL的核心标签库(Core)主要操作有:表达式操作、流程控制和迭代操作。

1、表达式操作:

表达式操作主要有四种:<c:out><c:set><c:remove><c:catch>

1. <c:out>

  • <c:out>主要用来显示数据的内容,等效于 <%= scripting-language %>

例:

Hello ! <c:out value="${username}" />

语法
1:没有本体(body)内容

      <c:out value=“value” [escapeXml=“{true|false}”]        [default=“默认值"] />

2:有本体内容

   <c:out value="value" [escapeXml="{true|false}"]>默认值</c:out>

其中

2. <c:set>

  • <c:set>用来将变量储存至 JSP 范围中或 JavaBean 的属性中。

语法
1:将value的值存至范围为scope的varName变量之中

<c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>

若value为null时:将由储存变量改为移除变量

2:将本体内容存至范围为scope的varName变量之中

<c:set var="varName" [scope="{ page|request|session|application }"]>
本体内容
</c:set>

3:将 value 的值储存至 target 对象的属性中

< c:set value="value"   target=“${target}"  property="propertyName" />

若value为null时,则property 指定的属性为null

4:将本体内容的数据储存至 target 对象的属性中

<c:set target="target" property="propertyName">
本体内容
</c:set>

target常见为JavaBeans类型
target为null或不是JavaBean类型,将产生异常。

其中

3. <c:remove>
<c:remove>主要用来移除变量

语法:

<c:remove var="varName" [scope="{ page|request|session|application }"] />


若不设定 scope,则<c:remove>将会从 Page、 Request、Session 及 Application 中顺序寻找是否存在名称为 var值 的数据,若能找到时, 则将它移除掉,反之则不会做任何的事情。

4、<c:catch>
<c:catch>主要用来处理产生错误的异常状况,并且将错误信息储存起来。

语法:

<c:catch [var="varName"] >
欲抓取错误的部分
</c:catch>

<c:catch>将可能发生错误的部分放在<c:catch></c:catch>之间。如果真的发生错误,可以将错误信息储存至varName变量中,例如:

<c:catch var="message">
可能发生错误的部分
</c:catch>

当错误发生在<c:catch></c:catch>之间时,只有<c:catch></c:catch>之间的程序会被中止忽略,但整个网页不会被中止。

2、程序流程控制:

1. <c:if>

语法 1:没有本体内容(body)

<c:if test="testCondition" var="varName"[scope="{page|request|session|application}"]/>

语法 2:有本体内容

<c:if test="testCondition" [var="varName"][scope="{page|request|session|application}"]>
具体内容
</c:if>

属性:

2. <c:choose>

  • <c:choose>本身只当做 <c:when><c:otherwise> 的父标签。

语法:

<c:choose>
本体内容( <when> 和 <otherwise> )
</c:choose>

<c:choose>的本体内容只能有:

  • 空白
  • 1 或多个 <c:when>
  • 0 或1个 <c:otherwise>

说明:
使用<c:when><c:otherwise>做流程控制时,两者都必须为<c:choose>的子标签。
即:

<c:choose><c:when>   …   </c:when><c:otherwise>   …  </c:otherwise>
</c:choose>

3. <c:when>

  • <c:when> 表示当满足某一条件时执行本体内容。

语法:

<c:when test="testCondition" >
本体内容
</c:when>

限制:

  • <c:when>必须在<c:choose></c:choose>之间。
  • 在同一个<c:choose>中,<c:when>必须在<c:otherwise>之前。

说明:

  • <c:when>必须有 test 属性,当 test 中的表达式结果为 true 时,则会执行本体内容;如果为false 时,则不会执行。

3. <c:otherwise>

  • 在同一个 <c:choose> 中,当所有 <c:when> 的条件都没有成立时,则执行 <c:otherwise> 的本体内容 。

语法:

<c:otherwise>
本体内容
</c:otherwise>

限制:

  • <c:otherwise> 必须在 <c:choose></c:choose>之间
  • 在同一个 <c:choose> 中时,<c:otherwise> 必须为最后标签

说明:

  • 在同一个 <c:choose> 中,假若所有 <c:when> 的 test 属性都不为 true 时,则执行<c:otherwise> 的本体内容
3、迭代操作:

1. <c:forEach>

  • <c:forEach> 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运行方式为当条件符合时,就会持续重复执行<c:forEach>的本体内容 。

语法 1:迭代一集合对象的所有成员

<c:forEach [var="varName"]  items="collection"  [varStatus="varStatusName"] [begin="begin"]  [end="end"] [step="step"]>
本体内容
< /c:forEach>

语法 2:迭代指定的次数

<c:forEach    [var="varName"]  [varStatus="varStatusName"]  begin="begin"    end="end"   [step="step"] >
本体内容
</c:forEach>

其中

限制:

  • 假若有 begin 属性时,begin 必须大于等于 0。
  • 假若有 end 属性时,必须大于 begin。
  • 假若有 step 属性时,step 必须大于等于 0。

Null 和 错误处理:

  • 假若items为null时,则表示为一空的集合对象。
  • 假若begin大于或等于items大小时,则迭代不运算。

说明:

  • 如果要循序浏览一个集合对象,并将它的内容显示出来,就必须有 items 属性。

2. <c:forTokens>

  • <c:forTokens> 用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。

语法:

<c:forTokens items="stringOfTokens"  delims="delimiters" [var="varName"][varStatus="varStatusName"] [begin="begin"]   [end="end"] [step="step"] >本体内容
</c:forTokens>

其中:

限制:

  • 假若有begin属性时,begin 必须大于等于 0。
  • 假若有end属性时,必须大于 begin。
  • 假若有step属性时,step 必须大于等于 0。

Null 和 错误处理:

  • 若items为null时,则表示为一空的集合对象。
  • 若begin大于或等于items的大小时,则迭代不运算。

说明:

  • items的内容必须为字符串;而 delims 是用来分割items中定义的字符串之字符。


例子:
1、使用核心标签库输入输出方法:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   //插入使用通用标签的指令
<body>
<c:set var= "example" value="${100+1}" scope="session"  />   //set 标签用于给变量设置值和作用域
<c:out value="${example}"/>  //out 标签显示值的结果
<c:remove var= "example" scope="session"/> //remove 标签用于删除具有作用域的变量
</body>

2、使用核心标签库访问JavaBean

  • 创建JavaBean类Student,包含属性name和age。创建JSP页面,在其中访问JavaBean,且使用核心标签库设置属性值和读取属性值。
<%@page import="cn.javabean.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body><jsp:useBean id="stu" class="cn.javabean.Student" scope="page"></jsp:useBean><c:set value="赵五" target="${stu}" property="name"></c:set><c:set target="${stu}" property="age">19</c:set><c:set value="张三" var="name1" scope="session"></c:set><c:set var="name2" scope="session">李四</c:set>从Bean中获取对象person的name值:<c:out value="${stu.name}"></c:out><br /> 从Bean中获取对象person的age值:<c:out value="${stu.age}"></c:out><hr />从session中得到的值:${sessionScope.name1}<br /> 从session中得到的值:${sessionScope.name2}</body>
</html>

JSP——JSTL语法总结相关推荐

  1. JSP基本语法:文件结构、脚本元素、指令元素、动作元素

    JSP语法分为三种不同的类型: 脚本元素(SCRIPTING) 指令元素(DIRECTIVE) 例如: <%@ page import="java.io.*" %> 动 ...

  2. JSP、EL和JSTL-学习笔记01【JSP基础语法】

    Java后端 学习路线 笔记汇总表[黑马程序员] JSP.EL和JSTL-学习笔记01[JSP基础语法] JSP.EL和JSTL-学习笔记02[MVC] JSP.EL和JSTL-学习笔记03[EL介绍 ...

  3. JSP JSTL标签

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  4. JSP~~JSTL~~XML标签库

    XML 提供了非常灵活的方式来表示结构化的数据,可以创建自己的标记来识别数据,不仅仅人可以看懂,而且计算机也可以读懂.并且 XML 可以在不兼容的系统之间进行数据的交换,所以 XML 必定将称为最普遍 ...

  5. JSP学习——语法(二)

    1:JSP运行原理和九大隐式对象: 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一 ...

  6. JSP JSTL标签库基本使用

    下载如下库,把下面两个jar: 拷贝到如下目录: 把如下tld文件, 拷贝到如下目录: 做一个jsp: <%@ page language="java" contentTyp ...

  7. J2EE中使用jstl报http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar错...

    一.发现问题 运行引用了jstl的jsp页面 报http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or th ...

  8. jsp uri=http://java.sun.com/jsp/jstl/core报错解决

    错误描述 报错信息如下图所示, 报错原因: 我们直接访问http://java.sun.com/jsp/jstl/core可以发现该页面显示"We can't find the page y ...

  9. java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag 错误

    java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag 电脑重置后,写一个springmvc的作业的时候,使用tom ...

最新文章

  1. JavaScript变量和对象参数传值问题
  2. Python 3.10刚发布,这5点非常值得学习!
  3. 当开启了延迟加载的开关,对象是怎么变成代理对象的?
  4. 在5分钟内将Spring Boot作为Windows服务启动
  5. Windows中木马之后桌面被篡改的恢复方法
  6. SAR成像(七):RD成像算法
  7. ipfs c++client
  8. empinfo Oracle数据库,Oracle:其他数据库对象
  9. 欲练JS,必先攻CSS——前端修行之路
  10. 卡尔曼滤波matlab_汽车毫米波雷达距离测量中的一种扩展卡尔曼滤波实现
  11. DRAM的动态刷新问题总结
  12. Matplotlib Toolkits:地图绘制工具
  13. 文本显示变量_易标签使用Excel数据实现批量打印变量数据
  14. vim编辑器的基本用法
  15. mysql tddl_TDDL思考总结
  16. did you register the component correctly
  17. echarts统计图表
  18. SampleGrabber开发问题与解决方案
  19. 照片去雾怎么操作?学会这招就不用担心雾化了
  20. 笔记本电脑重装win7/win10系统教程

热门文章

  1. 九十七、轻松搞定Python中的PDF办公自动化系列
  2. 博士申请 | 阿联酋阿布扎比人工智能大学许志强老师招收全奖博士/硕士
  3. 自动驾驶前沿综述:基于深度强化学习的自动驾驶算法
  4. 推荐系统入门必读:一文读懂推荐系统负采样
  5. 材料科学中的数据挖掘:晶体图神经网络解读与代码解析
  6. 每周一起读 × 招募 | ACL 2019:基于知识增强的语言表示模型
  7. NIPS 2017论文解读 | 基于对比学习的Image Captioning
  8. 综述 | 知识图谱向量化表示
  9. 【深度学习】通过python画出loss曲线
  10. java实现doc向swf格式的转换 转_java实现doc向swf格式的转换 转