JSP——JSTL语法总结
一、JSTL概述:
1、什么是JSTL?
- JSTL 全名为 JavaServer Pages Standard Tag Library, 它主要提供给开发人员一个标准通用的标签函数库。
2、JSTL的作用:
- Web程序开发人员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序的做法,以提高程序可读性、维护性和方便性。
3、JSTL所提供的标签函数库主要分为五大类:
- 核心标签库 (Core tag library)
- SQL 标签库 (SQL tag library)
- I18N 格式标签库 (internationalization )
- XML 标签库 (XML tag library)
- 函数标签库 (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语法总结相关推荐
- JSP基本语法:文件结构、脚本元素、指令元素、动作元素
JSP语法分为三种不同的类型: 脚本元素(SCRIPTING) 指令元素(DIRECTIVE) 例如: <%@ page import="java.io.*" %> 动 ...
- JSP、EL和JSTL-学习笔记01【JSP基础语法】
Java后端 学习路线 笔记汇总表[黑马程序员] JSP.EL和JSTL-学习笔记01[JSP基础语法] JSP.EL和JSTL-学习笔记02[MVC] JSP.EL和JSTL-学习笔记03[EL介绍 ...
- JSP JSTL标签
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- JSP~~JSTL~~XML标签库
XML 提供了非常灵活的方式来表示结构化的数据,可以创建自己的标记来识别数据,不仅仅人可以看懂,而且计算机也可以读懂.并且 XML 可以在不兼容的系统之间进行数据的交换,所以 XML 必定将称为最普遍 ...
- JSP学习——语法(二)
1:JSP运行原理和九大隐式对象: 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一 ...
- JSP JSTL标签库基本使用
下载如下库,把下面两个jar: 拷贝到如下目录: 把如下tld文件, 拷贝到如下目录: 做一个jsp: <%@ page language="java" contentTyp ...
- 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 ...
- jsp uri=http://java.sun.com/jsp/jstl/core报错解决
错误描述 报错信息如下图所示, 报错原因: 我们直接访问http://java.sun.com/jsp/jstl/core可以发现该页面显示"We can't find the page y ...
- java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag 错误
java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag 电脑重置后,写一个springmvc的作业的时候,使用tom ...
最新文章
- JavaScript变量和对象参数传值问题
- Python 3.10刚发布,这5点非常值得学习!
- 当开启了延迟加载的开关,对象是怎么变成代理对象的?
- 在5分钟内将Spring Boot作为Windows服务启动
- Windows中木马之后桌面被篡改的恢复方法
- SAR成像(七):RD成像算法
- ipfs c++client
- empinfo Oracle数据库,Oracle:其他数据库对象
- 欲练JS,必先攻CSS——前端修行之路
- 卡尔曼滤波matlab_汽车毫米波雷达距离测量中的一种扩展卡尔曼滤波实现
- DRAM的动态刷新问题总结
- Matplotlib Toolkits:地图绘制工具
- 文本显示变量_易标签使用Excel数据实现批量打印变量数据
- vim编辑器的基本用法
- mysql tddl_TDDL思考总结
- did you register the component correctly
- echarts统计图表
- SampleGrabber开发问题与解决方案
- 照片去雾怎么操作?学会这招就不用担心雾化了
- 笔记本电脑重装win7/win10系统教程
热门文章
- 九十七、轻松搞定Python中的PDF办公自动化系列
- 博士申请 | 阿联酋阿布扎比人工智能大学许志强老师招收全奖博士/硕士
- 自动驾驶前沿综述:基于深度强化学习的自动驾驶算法
- 推荐系统入门必读:一文读懂推荐系统负采样
- 材料科学中的数据挖掘:晶体图神经网络解读与代码解析
- 每周一起读 × 招募 | ACL 2019:基于知识增强的语言表示模型
- NIPS 2017论文解读 | 基于对比学习的Image Captioning
- 综述 | 知识图谱向量化表示
- 【深度学习】通过python画出loss曲线
- java实现doc向swf格式的转换 转_java实现doc向swf格式的转换 转