本章目标
掌握核心标签库提供的主要标签;
可以完成输出、判断、迭代等常见操作;
核心标签库
核心标签库是JSTL中最重要的部分,也是在开发中最常使用到的部分,在核心标签库里主要完成的就是流程控制、迭代输出等操作
<c:out>标签
<c:out>标签主要用于输出内容,这一点与表达式语言或表达式输出的scriptlet是一样的,此标签的语法如下:
<c:out value="打印的内容" [escapeXml="[true | false]"] [default="默认值"]/>
<c:out value="打印的内容" [escapeXml="[true | false]"]>
默认值
</c:out>
<c:out>标签的属性
使用<c:out输出>
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>使用 c:out 输出</title> </head> <body> <% pageContext.setAttribute("info", "<www.baidu.com>"); %> <h3>属性存在:<c:out value="${info}"></c:out></h3> <h3>属性不存在:<c:out value="${ref}" default="没有此内容"></c:out></h3> <h3>属性不存在:<c:out value="${ref}">没有此内容</c:out></h3> </body> </html>
效果图:
<c:set>标签
<c:set>标签主要用来将属性保存在四种属性范围之中,语法如下:
设置属性
<c:set var="属性名称" value="属性内容" [scope="[page | request | session | application]"]/>
<c:set var="属性名称" [scope="[page | request | session | application]"]>
属性内容
</c:set>
设置对象
<c:set value="属性内容" target="属性名称" property="属性名称"/>
<c:set target="属性名称" property="属性名称">
属性内容
</c:set>
<c:set>标签的属性
通过<c:set>设置属性
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>通过 c:set 设置属性</title> </head> <body> <c:set var="info" value="hello chaoyi!!!" scope="request" /> <h3>属性内容:${info}</h3> </body> </html>
效果图:
定义JavaBean
package cn.demo.vo; public class SimpleInfo { private String Content; public String getContent() { return Content; } public void setContent(String content) { Content = content; } }
设置属性
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page import="cn.demo.vo.*" %> <html> <head> <title>设置属性</title> </head> <body> <%//定义一个JavaBean SimpleInfo sim= new SimpleInfo();//实例化 SimpleInfo 对象 request.setAttribute("SimCon", sim);//设置属性 %> <!-- 将 value 的内容设置到 SimCon 对象的 content 属性中 --> <c:set value="hello chaoyi!!!" target="${SimCon}" property="content"></c:set> <h3>属性内容:${SimCon.content}</h3> </body> </html>
效果图:
<c:remove>标签
<c:remove>标签在程序中的主要作用是用来删除指定范围中的属性,功能与removeAttribute()方法类似,语法如下:<c:remove var="属性名称" [scope="[page | request | session | application]"]/>
<c:remove>标签的属性
删除属性
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>删除属性</title> </head> <body> <c:set var="info" value="Hello word!!!" scope="request"></c:set> <c:remove var="info" scope="request"/> <h3>属性内容:${info}</h3> </body> </html>
效果图:
<c:catch>标签
<c:catch>标签主要用来处理程序中产生的异常,并进行相关的异常处理,语法如下:
<c:catch [var="保存异常信息的属性名称"]>
有可能发生异常的语句
</c:catch>
<c:catch>标签的属性
使用JSTL进行异常处理
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>使用 JSTL 进行异常处理</title> </head> <body> <c:catch var="errNum"> <%//在此处产生异常 int result=10/0;//被除数为0产生异常 %> </c:catch> <h3>异常信息:${errNum}</h3> </body> </html>
效果图:
<c:if>标签
<c:if>标签主要是进行判断语句的使用,功能与在程序中使用的if语法是一样的,语法如下:
<c:if test="判断条件" var="储存判断结果" [scope="[page | request | session | application]"]/>
<c:if test="判断条件" var="储存判断结果" [scope="[page | request | session | application]"]>
满足条件时执行的语句
</c:if>
<c:if>标签的属性
判断操作
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>判断操作</title> </head> <body> <% pageContext.setAttribute("ref", "chaoyi"); %> <c:if test="${ref=='chaoyi'}" var="res1" scope="page"> <h3>欢迎 ${ref} 光临!</h3> </c:if> <c:if test="${10<30}" var="res2"> <h3>10比30小</h3> </c:if> <h3>输出判断结果一:${res1}</h3> <h3>输出判断结果二:${res2}</h3> </body> </html>
效果图:
<c:choose>、<c:when>、<c:otherwise>标签
<c:if>标签可以提供的功能只是针对于一个条件的判断,如果现在要同时判断多个条件,可以使用:<c:choose>,但是<c:choose>标签只能作为<c:when>和<c:otherwise>的父标签出现。
<c:choose>条件选择
<c:choose>
标签体内容(<c:when>、<c:otherwise>)
</c:choose>
<c:when>条件判断
<c:when test="判断条件">
满足条件时执行的语句
</c:when>
<c:otherwise>
<c:otherwise>
当所有<c:when>不满足时,执行本标签体内容
</c:otherwise>
多条件判断
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>多条件判断</title> </head> <body> <% pageContext.setAttribute("num", 12); %> <c:choose> <c:when test="${num==10}"> <h3>num1属性的内容是10!</h3> </c:when> <c:when test="${num==20}"> <h3>num1属性的内容是20!</h3> </c:when> <c:otherwise> <h3>没有一个满足条件的!</h3> </c:otherwise> </c:choose> </body> </html>
效果图:
<c:forEach>标签
<c:forEach>标签的主要功能为循环控制,可以将集合中的成员进行迭代输出,功能与Iterator接口类似,语法如下:
<c:forEach [var="每一个对象的属性名称"] items="集合" [varStatus="保存相关成员信息"] [begin="集合的开始输出位置"] [end="集合的结束输出位置"] [step="每次增长的步长"]>
具体的操作代码
</forEach>
<c:forEach>标签的属性
输出数组
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>输出数组</title> </head> <body> <%//定义数组 String info[]={"iteye","chaoyi","www.baidu.com"}; pageContext.setAttribute("ref", info);//将数组保存在 page 范围之中 %> <h3>输出全部: <c:forEach items="${ref}" var="mem"> ${mem}、 </c:forEach> </h3> <h3>输出全部(间隔为2): <c:forEach items="${ref}" var="mem" step="2"> ${mem}、 </c:forEach> </h3> <h3>输出前两个: <c:forEach items="${ref}" var="mem" begin="0" end="1"> ${mem}、 </c:forEach> </h3> </body> </html>
效果图:
输出集合
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>输出集合</title> </head> <body> <% List all=new ArrayList();//实例化集合对象 all.add("iteye");//向集合中加入内容 all.add("chaoyi");//向集合中加入内容 all.add("www.baidu.com");//向集合中加入内容 pageContext.setAttribute("ref", all);//将数组保存在 page 范围中 %> <h3>输出全部: <c:forEach items="${ref}" var="mem"> ${mem}、 </c:forEach> </h3> </body> </html>
效果图:
输出Map集合
<%@page import="java.util.HashMap"%> <%@page import="java.util.Map"%> <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>输出Map集合</title> </head> <body> <% Map map=new HashMap();//实例化集合对象 map.put("it", "iteye");//向集合中加入内容 map.put("cy", "chaoyi");//向集合中加入内容 map.put("baidu", "www.baidu.com");//向集合中加入内容 pageContext.setAttribute("ref", map);//将数组保存在 page 范围中 %> <c:forEach items="${ref}" var="mem"> <h3>${mem.key} --> ${mem.value}</h3> </c:forEach> </body> </html>
效果图:
<c:forTokens>标签
<c:forTokens>标签也是用于输出操作的,它更像是String类中的split()方法和循环输出的一种集合,标签的语法如下:
<c:forTokens items="输出的字符串" delims="字符串分割符" [var="存放每一个字符串变量"][varStatus="存放当前对象的相关信息"] [begin="输出位置"] [end="结束位置"] [step="输出间隔"]>
标签体内容
</c:forTokens>
<c:forTokens>标签的属性
使用<c:forTokens>进行输出
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>使用 c:forTokens 进行输出</title> </head> <body> <% String info="www.baidu.com";//定义字符串,按照“.”拆分 pageContext.setAttribute("ref", info);//保证在 page 范围中 %> <h3>拆分的结果是: <c:forTokens items="${ref}" delims="." var="con"> ${con}、 </c:forTokens> </h3> <h3>拆分的结果是: <c:forTokens items="I:am:Chaoyi" delims=":" var="con"> ${con}、 </c:forTokens> </h3> </body> </html>
效果图:
<c:import>标签
<c:import>标签可以将其他页面的内容包含进来一起显示,这一点与<jsp:include>标签的功能类似,但是与<jsp:include>标签不同的是,<c:import>可以包含外部的页面,本标签语法如下:
<c:import url=“包含地址的URL” [context=“上下文路径”] [var=“保存内容的属性名称”] [scope=“[page | request | session | application]”] [charEncoding=“字符编码”] [varReader=“以Reader方式读取内容”]> 标签体内容
[<c:param name="参数名称" value="参数内容"/>]
</c:import>
<c:import>标签的属性
导入 http://www.csszengarden.com/ 站点
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>导入 http://www.csszengarden.com/ 站点</title> </head> <body> <c:import url="http://www.csszengarden.com/" charEncoding="utf-8"></c:import> </body> </html>
效果图:
接收参数
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <h3>name 参数:${param.name}</h3> <h3>url 参数:${param.url}</h3>
传递参数
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>传递参数</title> </head> <body> <c:import url="demo13Post.jsp" charEncoding="utf-8"> <c:param name="name" value="chaoyi"></c:param> <c:param name="url" value="www.baidu.com"></c:param> </c:import> </body> </html>
效果图:
<c:url>标签
<c:url>标签可以直接在产生一个URL地址,语法如下:
<c:url value="操作的url" [context="上下文路径"] [var="保存的属性名称"] [scope="[page | request | session | application]"]/>
<c:url value="操作的url" [context="上下文路径"] [var="保存的属性名称"] [scope="[page | request | session | application]"]>
<c:param name="参数名称" value="参数内容"/>
</c:url>
<c:url>标签的属性
产生URL地址
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>产生 URL 地址</title> </head> <body> <c:url value="http://www.csszengarden.com/" var="urlinfo"> <c:param name="author" value="chaoyi"></c:param> <c:param name="logo" value="yike"></c:param> </c:url> <a href="${urlinfo}">新的地址</a> </body> </html>
效果图:
<c:redirect>标签
在学习JSP内置对象的时候讲解过可以通过response.sendRedirect()操作进行客户端跳转,在JSTL中提供了一个与之类似的标签<c:redirect>,语法如下:
<c:redirect url="跳转的地址" context="上下文路径"/>
<c:redirect url="跳转的地址" context="上下文路径">
<c:param name="参数名称" value="参数内容"/>
</c:redirect>
<c:redirect>标签的属性
客户端跳转到param.jsp文件之中
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>客户端跳转到 demo13Post.jsp 文件中</title> </head> <body> <c:redirect url="demo13Post.jsp"> <c:param name="name" value="chaoyi"></c:param> <c:param name="url" value="www.baidu.com"></c:param> </c:redirect> </body> </html>
效果图:
小结
核心标签库完成了一些基本的操作功能,可以定义属性、输出、判断、迭代操作
从开发上来讲,判断、迭代操作使用较多。
相关推荐
**JSP核心标签库的使用详解** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码以实现服务器端的交互功能。JSTL(JSP Standard Tag Library),即JSP标准标签库,是为了解决JSP中...
JSTL的核心标签库提供了处理流程控制、迭代、条件判断等功能,是Java Web开发中的重要组成部分。 在Java Web开发中,JSTL的核心标签库(Core Tag Library)包含以下几个主要方面: 1. **流程控制**: - `<c:if>`...
本案例将详细介绍JSTL的核心标签库及其使用方法,并提供相关的jar包资源。** **一、JSTL简介** JSTL由五个主要的标签库组成:Core(核心库)、Format(国际化和格式化库)、SQL(数据库操作库)、XML(XML处理库)...
**二、Struts核心标签库** Struts提供了丰富的JSP标签库,大大简化了视图层的开发,主要分为以下几类: 1. **Bean标签库**:用于处理和展示ActionForm中的属性,如`<bean:define>`, `<bean:write>`等。 2. **HTML...
Struts是一个开源的Java Web应用程序框架,由Apache软件基金会维护,用于帮助开发者...以上就是关于Struts框架的整体构架和核心标签库的介绍,通过学习和掌握这些知识点,开发者可以更高效地构建和管理Java Web应用。
《JSTL核心标签库使用详解》 JavaServer Pages Standard Tag Library(JSTL)是用于简化JSP开发的一种标准标签库,它提供了一系列的标签,使得开发者可以更方便地处理常见任务,如循环、条件判断、I/O操作等。本文...
本范例主要关注JSTL的核心标签库,该库包含了处理常见任务的标签,如流程控制、迭代、条件判断等。** **一、JSTL核心标签库介绍** JSTL的核心标签库(core library)包括以下主要部分: 1. `<c:set>`:设置变量。...
JSTL(JavaServer Pages Standard Tag Library)核心标签库是Java Web开发中的一个强大工具,它提供了一系列预定义的标签,用于简化JSP页面的逻辑,提高代码的可读性和维护性。JSTL核心标签库主要包含四个类别:...
1. **核心标签库(Core tag library)**:这是最基础的标签库,包含了用于基本流程控制、数据输出和URL操作的标签,如`<c:out>`、`<c:set>`、`<c:remove>`、`<c:if>`、`<c:forEach>`等。 - `<c:out>`:用于输出数据,...
【JSTL核心标签库应用详解】 JSTL(JavaServer Pages Standard Tag Library)是用于JSP的标准标签库,它提供了许多预定义的标签,帮助开发者编写更清晰、更易于维护的JSP页面。本篇将详细介绍JSTL的核心标签库,...
jstl-1.0.2.jar jstl.jar J2EE核心标签库 jstlJ2EE核心标签库jstl.jar
本文将详细介绍JSTL的核心标签库及其常用功能。 1. **简介** JSTL 1.2是目前广泛使用的版本,它包含了五个主要的标签库: - **Core(核心标签库)**:提供基本的操作,如条件判断、循环控制等。 - **I18N(国际...
本篇主要讨论两种模式下开发自定义标签:传统模式和简单模式,并涉及JSTL(JavaServer Pages Standard Tag Library)的核心标签库的使用。 **一、传统标签开发模式** 1. **标签接口与执行流程** - 标签接口通常是...
JSTL核心标签库
本教程将通过一个小例子来深入理解JSTL核心标签库的使用。** 在JSTL中,核心标签库(core tag library)是最常用的一部分,它提供了处理控制流、URL生成、条件语句、迭代等功能。下面我们将逐一探讨这些标签的用法...
本文将深入探讨Struts框架的核心组成部分以及其提供的核心标签库。 1. **Struts 压缩包内容** 在`jakarta-struts-1.0.2`压缩包中,有两个主要目录:`lib`和`webapps`。`lib`目录包含了构建Struts应用所需的JAR文件...
JSF核心标签库,包括h,f~~~~~~~~
在JavaServer Pages (JSP) 技术中,核心标签库是预定义的一组标签,它们为开发者提供了方便的方式来操作页面元素,如控制流程、输出数据、处理表单等。本篇文章将深入探讨JSP核心标签的使用方法,并介绍一些常用的...
JSTL有多个模块,如`core`(核心标签库)和`fmt`(格式化标签库),可以根据需要添加更多模块。 ### 三、JSTL标签的使用 JSTL提供了丰富的标签,包括控制流标签(`if`, `choose`, `when`, `otherwise`等)、迭代...