JSP-jstl标签库_jp

JSTL:第三方标签库,需要导入jar包才可以使用。
     该标签库可以完成更复杂的功能,比如可以
     完成遍历集合和数组,条件判断,循环等功能。
   目的:不希望在jsp页面中出现java逻辑代码。
   JSTL标签库可分5类:核心标签库
             I18N格式化标签库
             SQL标签库
             XML标签库
             函数标签库
主要讲核心标签库共13个:分为四类
standard.jar 标准jar包,定义规范
jstl.jar   具体实现jar包
注意:1)web工程导包需要将包copy到WEB-INF下lib文件夹中。
      2)在jsp页面中导入标签库
         taglib

WebContent
  文件夹:jstl
     jsp:  jstl.jsp
第一类:表达式控制标签
1、<c:out> 输出变量到JspWriter输出流中
1) 语法1:<c:out value="result"
    [escapeXml]="{true|false}"
    [default="defaultValue"]/>
注意:a)如果result为null,则输出default中的值
      b)escapeXml:设定是否转换特
      殊字符(如&lt;、&gt;等一些转
      义字符),在默认值为true的情况
      下直接在输出&lt;的,如果改为
      false将会进行转义输出“<”等。
2) 语法2:<c:out value="result"
    [escapeXml]="{true|false}">
    default value</c:out>

例如:  value可以使用el表达式
      <c:out value="${student.address.country}"/>

2、<c:set>
该标签用于在某个范围中设置指定变量,
或者设置某个对象的属性
1) 在scope中设置变量(value指定)、名字由var指定
<c:set var="name" value="attrValue"
    [scope="page|...."]/>
          注意: var指定的值-->属性名
       value指定的值-->属性值
          value可以通过el标签来取到数据,如:value="${user }"
相对于:scope.setAttribute("name","attrValue");

2) 带有一个Body体
<c:set var="varName" [scope]>
        body content
</c:set>
注:指定varName变量的值为body content.
scope指定变量存放的范围,默认为page
    
3) 设置某个特定对象的一个属性(attribute)
<c:set target="${student}"
    property="name" value="terry"/>
注:把一个值为terry赋值给指定的student对象的name属性,
相当与setter()方法。
4) 设置某个特定对象的一个属性,并且标签带有一个body
<c:set target="${target}"
 property="propertyName">  body content
</c:set>
注意:   1)scope属性不能在这里使用。
    2)把一个值为body content赋值给指定
的target对象的propertyName属性。

3、<c:remove>
<c:remove var="varName" [scope="page|...."]/>
相当于 scope.removeAttribute("varName");
在指定scope中根据属性名varName来删除属性值
 如果没有指定scope,那么依次从page、request、session和application范围中
根据该属性名去删除属性值。

4、<c:catch> 捕获由嵌套在它里面的代码抛出的异常
    语法:<c:catch [var="varName"]>
        nested actions
     </c:catch>
    var:用于存放这个异常对象的属性名,
        通过它可以输出异常对象的所有信息。
    scope:默认为page。

第二类:流程控制标签
5、<c:if>
语法:  
<c:if test="condition"
 var="varName" [scope]>
body content</c:if>
var为存放布尔型变量的属性名,
scope为该变量的存放范围。

6、<c:choose>
用于条件选择,它和<c:when>
          以及<c:otherwise>一起使用
语法:   <c:choose>
     (<when> and <otherwise>)
</c:choose>
注意: body体内容只能由以下的元素构成
    1) 空格
    2) 0个或者多个<when>子标签,
    <when>必须出现在<c:choose>和<c:ohterwise>之间
    3) 0个或者多个<ohterwise>

7、<c:when>
代表了<c:choose>的一个分支
语法: <c:when test="condition">
 body content
</c:when>
注意: 必须以<c:choose>作为它的父标签
      必须在<c:otherwise>之前出现

8、<c:otherwise>
<c:choose>的最后的选择
语法: <c:otherwise>
    body
</c:otherwise>    
注意: 必须以<c:choose>作为父标签
     必须是<c:choose>的最后分支

第三类:循环标签
9、迭代标签(用来迭代集合、数组、枚举
        或者迭代器(Iterator))
1) <c:forEach>
语法1:     <c:forEach [var="varName"]
    items="collection/array/Enumaration/Iterator"
    [varStatus="varStatusName"]
    [begin="begin"] [end="end"]
    [step="step"]>
    body
    </c:forEach>

语法2: 迭代固定的次数(做普通的循环输出,类似for循环)
<c:forEach [var="varName"]     
    [varStatus="varStatusName"]
    begin="begin" end="end"
    [step="step"]>
body content
</c:forEach>

名字        类型        描述
var        String        存放变量(迭代出来的)的属性名(scope为page)
items         任何支持的类型    将要迭代itmes的集合/数组/枚举/Iterator
varStatus    String        迭代的状态,可以访问迭代的自身信息,如索引号
begin        int        items从index[begin]开始迭代
                没有指定items从index开始做循环
end         int         items从index[end]结束
                没有指定items从end结束
step        int        迭代的步长(>0)

注意:varStatus中有index(索引),
   count(循环次数)
      ,first(是否是第一个位置),
      last(是否为最后一个位置)

2) <c:forTokens>类似java中的StringTokenizer
   这个标签专门用于处理TokenString的迭代,
可以指定一个或者多个分隔符号(delimiters)
语法: <c:forTokens items="stringOfTokens"
         delims="delimiters"
    [var="varName"]                                     [varStatus="varStatusName"]
    [begin="begin"] [end="end"]
    [step="step"]>
        body content
 </c:forTokens>

第四类:URL操作标签
10、URL相关的标签
1) <c:import>导入一个基于URL的资源
<c:import url="url" [var="varName"] [scope]>
    [<c:param/>]*
</c:import>
var:存放URL资源内容的属性名
scope:存放的范围

该标签可以把其他静态或动态文件包含到本JSP页面。
同<jsp:include>的区别为:只能包含同一个web应用中的文件。
而<c:import>可以包含其他web应用中的文件,
甚至是网络上的资源。
url分为
绝对路径: http://localhost:8080/jsp/a.jsp(web应用程序外部访问)
相对路径: a.jsp(web应用程序内部访问)

2) <c:url>
用于构造URL,主要用途是URL重写
语法: <c:url value="url"
    [var="varName"] [scope]>
    [<c:param/>]*
</c:url>
var:存放重写后的URL的属性名
scope:存放的范围
一般和a连用
如<a href="varName">test</a>

3) <c:redirect>
把客户的请求重定向到另一个资源
语法: <c:redirect url="url">
      [<c:param/>]*
 </c:redirect>
注意:重定向的标签已经对url重写过了
在重定向之前这个url先被重写,重定向的是被重写后的url。

注意: <c:url>和<c:redirect>也可以使用绝对路径http://localhost:8080/jsp/a.jsp(不能使用/jsp/a.jsp),但是url不能被重写,只有在使用相对路径后url才能被重写。

4) <c:param>
在<c:import>、<c:url>和<c:redirect>中添加请求的参数
语法1: <c:param name="name" value="value"/>
语法2: <c:param name="name">
    parameter value
</c:param>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值