17、JSTL标签库
程序员文章站
2022-07-12 14:30:23
...
一、JSTL 简介
- JSTL:JavaServer Pages Standard Tag Library
- 由JCP(Java Community Process)指定标准,提供给 Java Web 开发人员一个标准通用的标签函数库
- 和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性
二、JSTL1.1安装
- JSTL 主要由Apache组织的Jakarta Project 实现
- 下载地址:http://tomcat.apache.org/taglibs/standard/
- 容器必须支持Servlet 2.4 且JSP 2.0 以上版本
- JavaEE1.4
- 解压缩后将lib 中的jstl.jar、standard.jar 复制到WEB应用程序的WEB-INF\lib 下
三、JSTL标签库
- 核心标签库 (core) --- c
- 国际化标签 fmt
- 数据库标签 sql --Servlet
- XML标签 xml
- JSTL函数(EL函数) el
四、核心标签库
-
<c:out>标签:用于输出一段文本内容到pageContext对象当前保存的“out”对象中
c:out 输出内容到浏览器端 输出固定值 <c:out value="Hello c out~"/> 输出变量 <c:out value="${m}"/> 转义html,默认为转义,可以设置escapeXml属性为false,禁止转义 <c:out value="<a href='#'>link</a>" escapeXml="false"/> 允许输出默认值,如果给定值不存在,输出默认值 <c:out value="${city}" default="北京"/>
- <c:set>标签:用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。
c:set 设置值到四个域,设置四个范围中的java对象的属性、在指定域中增加、修改属性 <c:set var="name" value="value" scope="page"/> 设置一个保存在四个范围的java对象的属性值,cset不能设置对象进域,但是可以更改域中对象的属性 <c:set targe="${person}" property="name" value="lisi"/>
- <c:remove>标签:用于删除各种Web域中的属性
其语法格式如下: <c:remove var="varName" [scope="{page|request|session|application}"] />
c:remove用来删除四个域中的值 <c:remove var="age" scope="page"/>
- <c:catch>标签:用于捕获嵌套在标签体中的内容抛出的异常
语法格式如下: <c:catch [var="varName"]>nested actions</c:catch> var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=gb2312" %> <c:catch var="myex“ > <% 10/0; %> </c:catch> 异常:<c:out value="${myex}" /> ${myex}<br /> 异常 myex.getMessage:<c:out value="${myex.message}" /><br /> 异常 myex.getCause:<c:out value="${myex.cause}" /><br /> 异常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />
<c:catch var="e"> <% String s = null; s.charAt(1); %> </c:catch> ${e.message}
- <c:if>标签:可以构造简单的“if-then”结构的条件表达式
c:if 用来取代页面中if语句,请记住,没有c:else,想要写else,只能再写个c:if,然后条件是反的 <c:if test="${n>5}"></c:if>
- <c:choose>标签:用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=gb2312" %> <c:set value="${param.count}" var="count" /> <c:choose> <c:when test="${count == 0}"> 对不起,没有符合您要求的记录。 </c:when> <c:otherwise> 符合您要求的记录共有${count}条. </c:otherwise> </c:choose>
c:choose c:when c:otherwise 一起使用,取代if elseif else 或 swich case <c:choose> <c:when test="${weekday==1}"> 星期一 </c:when> <c:when test="${weekday==1}"> 星期二 </c:when> <c:when test="${weekday==1}"> 星期三 </c:when> <c:otherwise> 输入无效 </c:otherwise> </c:choose>
- <c:forEach>标签:用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
<% int atts[] = {1,2,3,4,5,6,7,8,9,10}; request.setAttribute("atts", atts); %> <c:forEach items="${atts}" var="item" begin="0" end="9" step="1" > ${item}</br> </c:forEach>
- varStatus属性:用来存放现在指到之成员的相关信息
<c:forEach begin="10" end="100" step="2" var="i"varStatus="status"> <c:if test="${status.count}%3 == 0"> <font color="red">${i}</font> </c:if> <c:if test="${status.count}%3 != 0"> <font color="blue">${i}</font> </c:if> </c:forEach> ------------------------------------------------------------------------------------------------- <c:forEach var="i" begin="100" end="200" step="5" varStatus="status"> <c:if test="${status.first}"> begin:<c:out value="${status.begin}">begin</c:out> end:<c:out value="${status.end}">end</c:out> step:<c:out value="${status.step}">step</c:out> <br/> sequence: </c:if> <c:out value="${i}"/> <c:if test="${status.last}"> <br/>There are <c:out value="${status.count}"/> numbers in the list. </c:if> </c:forEach> ---------------------------------------------------------------------------------------------- <% Map<String,String> map = new HashMap<String,String>(); map.put("001","aaa"); map.put("002","bbb"); map.put("003","ccc"); request.setAttribute("map",map); %> <c:forEach var="m" items="${requestScope.map}"> ${m.key } , ${m.value } <br/> </c:forEach>
- <c:forTokens>:用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的
c:forTokens 切割字符串(复习 StiringTokenize类) <c:forTokens items="${s}" delims="," var="e"> ${e} </c:forTokens>
- <c:param>标签 :在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数
- <c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处
- 示例:<c:param name="name" value="value" />
- <c:import> 标签:
引入1.jsp的输出,拼接到当前jsp的输出中 <c:import url="/1.jsp" context="/day08"/> 引入1.jsp的输出,保存到scope域中以var指定名为名称的属性中 <c:improt url="/1.jsp" context="/day08" var="content" scope="page"/>
- <c:url>标签:用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面
<c:url value="/index.jsp"context="/day04" var="myurl2"scope="page"> <c:param name="username" value="张三"></c:param> </c:url>
- <c:redirect>标签:用于实现请求重定向
<c:redirect url="/index.jsp" context="/day08"/>
下一篇: 15、JSP标签