C标签使用

JSTL是Java中的一个定制标记库集。JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

使用JSTL优势:

1)实现了JSP页面的代码复用。基于标签库原理,重复率较高的代码块支持复用,提高效率。

2)书写JSP页面时可读性更强。长得像XML,方便前端查看和参与开发。

3)在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。

4)简化了JSP和WEB应用程序的开发。

C标签为JSTL的核心标签库。

引入jar包:【standard.jar、jstl.jar】

jar包地址:

链接:https://pan.baidu.com/s/1UAjW8is3CLK1gbTwd6LbMw 
提取码:3jfh ;

jsp页面引入标签格式:

<!--核心标签库-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!--函数库-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  
<!--格式化标签库-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!--SQL标签库(不常用)-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<!--XML 标签库(不常用)-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

 【根据实际情况引入需要的标签库,常见的有(核心标签库、函数库、格式化标签库)】

注意:C标签使用是会使用到EL表达式,以上两个必须引入;

1. scope 的作用域大小依次为:

        application > session > request > page(默认)

2. jsp 处理变量的作用域先后依次为:

        page(默认) -> request -> session -> application

C核心标签库:

 JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect

<c:forEach>, <c:forTokens> 标签

forEach 语法格式

<c:forEach [var="varName"] items="collection" 
           [varStatus="varStatusName"] 
           [begin="begin"] [end="end"] 
           [step="step"]>  

        //循环体取值

        方式一:<c:out value="${varStatusName.index}"></c:out>

        方式二:${status.index} // 考虑到代码的见解建议使用该方法

</c:forEach>

  forTokens 语法格式

<c:forTokens items="stringOfTokens" 
             delims="delimiters" [var="varName"] 
             [varStatus="varStatusName"] 
             [begin="begin"] [end="end"] 
             [step="step"]>  
        //循环体取值

        方式一:<c:out value="${status.index}"></c:out>

        方式二:${status.index} // 考虑到代码的见解建议使用该方法
</c:forTokens>

属性说明:

属性描述是否必要默认值
items要被循环的信息
begin开始的元素(0=第一个元素,1=第二个元素)0
end最后一个元素(0=第一个元素,1=第二个元素)Last element
step每一次迭代的步长1
var代表当前条目的变量名称
varStatus代表循环状态的变量名称

<c:forTokens>标签与<c:forEach>标签有相似的属性,不过<c:forTokens>还有另一个属性:

属性描述是否必要默认值
delims分隔符

varStatus 属性

属性描述类型
index当前这次迭代从 0 开始的迭代索引int        
count当前这次迭代从 1 开始的迭代计数(循环次数)int
frist用来表明当前这轮迭代是否为第一次迭代的标志(是否为第一个位置)boolean
last用来表明当前这轮迭代是否为最后一次迭代的标志(是否为最后一个位置)boolean

<c:forEach>实例演示

遍历 List列表:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>应用&lt;c:forEach&gt;标签遍历List集合</title>
</head>
<body>
<b>遍历List集合的全部元素:</b><br>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id">
	${id.index }&nbsp;${keyword}<br>
</c:forEach>
<b>遍历List集合中第1个元素以后的元素(不包括第1个元素):</b><br>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id" begin="1">
	${id.index }&nbsp;${keyword}<br>
</c:forEach>
</body>
</html>

遍历Map:
<c:if test="${!empty permissionMap}">    
<c:forEach items="${permissionMap}" var="item">  
<tr>  
    <td>${item.value.id}</td>  
    <td>${item.value.urlOnClass}</td>  
    <td>${item.value.urlOnMethod}</td>  
</tr>  
</c:forEach>  
</c:if>

<c:forTokens>实例演示

<%--提示:分隔符的作用是根据标识,截取字符串。
        如果未设定分隔符或在字符串中没有找到分隔付,将把整个元素作为一个元素截取。
        在实际应用中用于在除去某些符号在页面中显示。 --%>
<c:forTokens var="str" items="北、京、欢、迎、您" delims="、">
    <%--<c:out value="${str}"></c:out><br/>--%>
    ${str}
</c:forTokens>
<br/>
<c:forTokens items="123-4567-8854" delims="-" var="t">
    <%--<c:out value="${t}"></c:out><br/>--%>
    ${t}
</c:forTokens>
<br/>
<c:forTokens items="1*2*3*4*5*6*7" delims="*" begin="1" end="3" var="n" varStatus="s">
    <%--<c:out value="${n}" />的四种属性:<br>
        所在位置,即索引:<c:out value="${s.index}" /><br>
        总共已迭代的次数:<c:out value="${s.count}" /><br>
        是否为第一个位置:<c:out value="${s.first}" /><br>
        是否为最后一个位置:<c:out value="${s.last}" /><br> --%>
    ${n}的四种属性:<br>
        所在位置,即索引:${s.index}<br>
        总共已迭代的次数:${s.count}<br>
        是否为第一个位置:${s.first}<br>
        是否为最后一个位置:${s.first}<br>
    </c:forTokens>
  </body>
</html>

1)items:是集合,用EL表达式;
2)var:变量名,存放items各个项 ,代表集合中每一条数据
3)varStatus: 显示循环状态的变量,有一下几个属性:
        ①index:从0开始; 显示当前迭代的索引值
        ②count:元素位置,从1开始;  【显示当前迭代显示的行位置,通过配合判断语句,实现给奇、偶行着不同的色,以进行分区】
        ③first:如果是第一个元素则显示true;
        ④last:如果是最后一个元素则显示true;
4)begin:循环的初始值(整型);
5)end: 循环结束(整型);
6)step:步长,循环间隔的数值(整型);

<c:set> 标签

 用于设置变量值和对象属性。

语法格式

<c:set
   var="<string>"
   value="<string>"
   target="<string>"
   property="<string>"
   scope="<string>"/>

 属性说明: 

属性描述是否必要默认值
value要存储的值主体的内容
target要修改的属性所属的对象
property要修改的属性
var存储信息的变量
scopevar属性的作用域Page

使用实例:

<c:if> 标签

判断表达式的值,如果表达式的值为 true 则执行其主体内容。

语法格式

<c:if test="<boolean>" var="<string>" scope="<string>">
   ...
</c:if>

属性说明:

属性描述是否必要默认值
test条件
var用于存储条件结果的变量
scopevar属性的作用域page

<c:choose>, <c:when>, <c:otherwise> 标签

<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。

switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。

<c:when> <c:otherwise>无法单独使用,只能作为<c:choose>的子标签来使用。

语法格式

<c:choose>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:when test="<boolean>">
        ...
    </c:when>
    ...
    ...
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

属性说明:

<c:choose>标签没有属性。

<c:when>标签只有一个属性,在下表中有给出。

<c:otherwise>标签没有属性。

属性描述是否必要默认值
test条件

使用实例:

<c:set var="score">85</c:set>  
<c:choose>  
<c:when test="${score>=90}">
你的成绩为优秀!  
</c:when>  
<c:when test="${score>=70&&score<90}">  
您的成绩为良好!  
</c:when>  
<c:when test="${score>60&&score<70}">  
您的成绩为及格  
</c:when>  
<c:otherwise>  
对不起,您没有通过考试!  
</c:otherwise>  
</c:choose>

<c:remove> 标签

用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。【很少用】

语法格式

<c:remove var="<string>" scope="<string>"/>

属性说明:

属性描述是否必要默认值
var要移除的变量名称
scope变量所属的作用域所有作用域

<c:catch> 标签

用来处理产生错误的异常状况,并且将错误信息储存起来。【本人未使用】 

语法格式 

<c:catch var="<string>">
...
</c:catch>

属性说明: 

属性描述是否必要默认值
var用来储存错误信息的变量None

  实例演示:

<c:catch var="myexception">
      嵌套动作
</c:catch> 
<c:if test="${myexception!=null}">
    内容
</c:if>

<c:out> 标签

用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。

【无特殊要求不建议使用,可直接使用EL表达式(eg.${user.name})】。 

语法格式

<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

属性说明 

属性描述是否必要默认值
value要输出的内容
default输出的默认值主体中的内容
escapeXml是否忽略XML特殊字符true

<c:import> 标签

提供了所有<jsp:include>行为标签所具有的功能;与<jsp:include>的区别为:<jsp:include>只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。 

语法格式 

<c:import
   url="<string>"
   var="<string>"
   scope="<string>"
   varReader="<string>"
   context="<string>"
   charEncoding="<string>"/>

属性说明: 

属性描述是否必要默认值
url待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源
context当使用相对路径访问外部context资源时,context指定了这个资源的名字。当前应用程序
charEncoding所引入的数据的字符编码集ISO-8859-1
var用于存储所引入的文本的变量
scopevar属性的作用域page
varReader可选的用于提供java.io.Reader对象的变量

使用实例: 

<c:import var="data" url="http://www.runoob.com"/>
<c:out value="${data}"/>

<c:param> 标签

        于在 <c:url> 标签中指定参数,而且与 URL 编码相关。

        在 <c:param> 标签内,name 属性表明参数的名称,value 属性表明参数的值。

语法格式 

<c:param name="<string>" value="<string>"/>

属性说明: 

属性描述是否必要默认值
nameURL中要设置的参数的名称
value参数的值Body

<c:url> 标签

用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。 

语法格式: 

<c:url
  var="<string>"
  scope="<string>"
  value="<string>"
  context="<string>"/>

属性说明: 

属性描述是否必要默认值
value基础URL
context本地网络应用程序的名称当前应用程序
var代表URL的变量名Print to page
scopevar属性的作用域Page

使用实例:

实例1:
<c:url value="http://www.baidu.com" var="url1" scope="session"></c:url>
<a href="${url1}">百度首页(无参)</a>
实例2:
<c:url value="http://www.baidu.com" var="url2">
         <c:param name="userName" value="zhangsan"/>
         <c:param name="pwd">000000</c:param>
     </c:url>
<a href="${url2}">百度首页(含参)</a>

<c:redirect> 标签

用来实现请求的重定向。同时可以配合使用<c:param>标签在url中加入指定的参数。用于自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。 

 语法:

语法1:
<c:redirect url="<string>" context="<string>"/>
语法2:
<c:redirect url="url" [context="context"]>
    <c:param name="name1" value="value1">
</c:redirect>

属性说明:

属性描述是否必要默认值
url目标URL
context紧接着一个本地网络应用程序的名称当前应用程序


JSTL <c:if test=“eq ne lt..”></if> 用法

算术运算符 + 、 - 、 * 、 / (或 div )和 % (或 mod )
关系运算符 == (或 eq )、 != (或 ne )、 < (或 lt )、 > (或 gt )、 <= (或 le )和 >= (或 ge )
逻辑运算符 && (或 and )、 || (或 or )和 ! (或 not )
验证运算符 empty 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值