zoukankan      html  css  js  c++  java
  • JSTL标签——核心标签库

    JSP 标准标记库( Standard Tag Library , JSTL)是实现Web应用程序中常见的通用功能的定制标签库集,程序员通过JSTL标签避免在JSP页面中使用脚本。

    JSTL是一个标准的已制定好的标签库,它可以应用到很多领域. 如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。

    JSTL所提供的标签库主要分为五类:

    JSTL 前置名称 URI 范例
    核心标签库 c http://java.sun.com/jsp/jstl/core <c:out>
    I18N格式标签库 fmt http://java.sun.com/jsp/jstl/fmt <fmt:formatDate>
    SQL标签库 sql http://java.sun.com/jsp/jstl/sql <sql:query>
    XML标签库 xml http://java.sun.com/jsp/jstl/xml <x:forEach>
    函数标签库 fn http://java.sun.com/jsp/jstl/functions <fn:split>

    配置 JSTL

    包括两个 JAR 文件, jstl.jar 和 standard.jar 。

    引入:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

    Core 标签库

    Core 标签库主要包括了一般用途的标签、条件标签、迭代标签和 URL 相关的标签。

    1.<c:out>

    用于结果输出。类似于 JSP 中 <% %> 表达式,或者是 EL 中 ${ } 。

    <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />

    注意:value属性为必填,escapeXml属性是true时,不解析特殊字符,false时,解析特殊字符。

     eg:

    default的两种使用方式

    <c:out value="${info}" default="hello!"/>
    
    <c:out value="${info}">hello!</c:out>

     如果在uri中传递了参数info的值,那么显示value接收的值,否则显示default默认值。

    2.<c:set>

    用于将变量存储至JSP范围内或JavaBean的属性中或Map对象中。

    <c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>

    属性列表:

    名称

    说明

    必须

    默认值

    value

    要被存储的值

    var

    欲存入的变量名称

    scope

    var变量的JSP范围

    page

    target

    JavaBean或Map对象

    property

    指定target对象的属性

     eg:

    将变量存储到Jsp范围内输出

    <c:set var=”username” value=”iccccy” scope=”session”/>
    
    <c:set var="password" scope="session">123</c:set>

    对比:

    若通过el表达式输出

    ${sessionScope.username}
    ${sessionScope.
    password}
    通过jstl中<c:out>标签输出
    <c:out value="${sessionScope.username}"/>
    <c:out value="${sessionScope.password}"/>

    将变量存储到javaBean对象内输出

    <jsp:useBean id="stu" class="school.student"/>
    
    <c:set value="22" target="${stu}" property="age"/>

    输出javaBean对象的属性值

    年龄:<c:out value="${stu.age}"/>

    3.<c:remove>

    相对 <c:set> 来移除范围变量。

    <c:remove var="varName" [scope="{ page|request|session|application }"] />

    eg:

     <c:remove var=”username” scope=”session”/>

    4.<c:catch>

     用于捕获抛出的异常对象,并将异常信息保存到变量中。

    <c:catch [var="varName"] >nested actions</c:catch>

    可以抛出异常的代码放置到开始标签 :<c:catch> 和结束标签 :</c:catch> 之间。如果其中代码出现异常,异常对象将被捕获,保存在 var 声明的变量中,该变量总是有 page 范围。如果没有发生异常,而 var 所标识的范围变量将被移除。

    如果没有指定 var 属性,异常只是简单的被捕获,异常信息不会被保存。

    eg:

    <c:catch var=”exception”>
    
    <%
     int i=5/0;
    %>
    
    </c:catch>
    异常:<c:out value="${exception}"></c:out><br>
    
    异常原因:<c:out value="${exception.cause}"></c:out><br> 
    
    异常消息:<c:out value="${exception.message}"></c:out><br>

    后一句相当于: exception.getMessage()

    条件标签包括 <c:if><c:choose><c:when><c:otherwise>

    1.<c:if>

    用作条件判断,功能类似于JSP中的<%if(boolean){}%>

    <c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>

    eg:

    <c:if test="${userName==null}" var="xx" scope="session">  该用户没有登录</c:if>
     ${xx}

    2.<c:choose>

    <c:choose> 和 <c:when> 、<c:otherwise> 一起实现条件执行,类似于 java 中的 if else。

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

    <c:when>有一个test属性,该属性的值为布尔型,如果test的值为true,则执行<c:when>标签体的内容。<c:otherwise>标签没有属性,它必须作为<c:choose>标签的最后分支出现。

    eg :

    <% request.setAttribute("age",18);%>
    
       <c:choose>
    
            <c:when test="${age>70}">老年人</c:when>
    
            <c:when test="${age<=70&&age>35}">中年人</c:when>
    
            <c:when test="${age<=35&&age>18}">青年</c:when>
    
            <c:when test="${age<=18&&age>0}">少年或儿童</c:when>
    
            <c:otherwise>输入错误</c:otherwise>
    
       </c:choose>
    
     

    迭代标签

    迭代标签有 <c:forEach> <c:forTokens>.

    1、<c:forEach>

    用于遍历一个对象集合。

    <c:forEach var="变量名" items="集合" varStatus="遍历状态名"  begin="begin" end="end" step="step" > 标签体 </c:forEach>

    eg:

    <c:forEach items="${mapInfos}" var="mapInfo">
    
    <td>${mapInfo.key}</td>
    
       <td>${mapInfo.value.timestamp}</td>
    
       <td>${mapInfo.value.total}</td>
    
       <td>${mapInfo.value.used}</td>
    
       <td>${mapInfo.value.rate}</td>
    
       <td>${mapInfo.value.host}</td>    
    
    </c:forEach>

    也可以设定固定次数。

    <c:forEach var =”i” begin=”100 “ end= “110”>
    
           ${i}
    
    </c:forEach>

    如果再加个 step= “ 2 ”那么每次增长为 2 。

    2、<c:forTokens>

    用于遍历字符串,而且每次遍历结果返回字符串中的一个单词。

    <c:forTokens items="字符串" delims="分界符" var="变量名"  varStatus="遍历状态名" begin="begin" end="end" step="sep"> 标签体 </c:forTokens>

    eg:

    <c:forTokens items="zhangsan:lisi:wangwu" delims=":" var="name">
    
    ${name}
    
    </c:forTokens>

    URL相关的标签

    1、<c:url>

     有标签体:用于对URL地址进行编码

    <c:url value="URL" context="路径" var="变量名" scope="作用域">  标签体</c:url>

    eg:

        <c:url value="/index.jsp" var="strUrl" scope="request">
    
          <c:param name="userName" value="张三"></c:param>
    
          <c:param name="age" value="22"/>
    
        </c:url>  
    
        ${strUrl}

    运行结果:http://localhost:8080/index.jsp?userName=张三&age=22

    无标签体:用于编辑上下文URL。

    <c:url value="URL" context="路径" var="变量名" scope="作用域"/>
    
     <c:url value="/logon.jsp">登录</c:url> 

    若当前路径为context=abc,则输出为:/abc/logon.jsp   

    2、<c:import>:

    用于向当前JSP页面中引入URL资源。

    它和JSP 动作指令的<jsp:include>最大的差别在于,include指令和include动作不能向JSP页引入Web程序以外的资源,引入的资源必须位于当前Web程序中。

    以String对象引入:

    <c:import url="地址" context="上下文路径" var="变量名" scope="作用域" charEncoding="字符集">标签体使用</c:import>

    eg:

    <c:import url="http://www.baidu.com" var="myurl" charEncoding="gb2312">
    </c:import>
    <a href="${myurl }">地址</a>
    以Reader对象导入:
    <c:import url="地址" context="上下文路径" varReader="变量名" scope="作用域" charEncoding="字符集">标签体使用</c:import>

    3、<c:redirect>

    用于向用户的浏览器发送HTTP重定向响应,与javax.servlet.http.HttpServletResponse的sendRedirect()方法功能相当。

    <c:redirect url="地址" context="上下文路径"/>
    
    <c:redirect url="/login.jsp"></c:redirect>

    eg:

    <c:redirect url="/login.jsp" context="/ch16">
    
    <c:param name="name" value="张三"/>
    
    <c:param name="age" value=" 22 "/>
    
    </c:redirect>

    4、<c:param>

    用于为一个URL添加请求参数。

    <c:param name="name" value="value">
    只能在<c:url>、<c:import>、<c:redirect>标签中作为子元素来使用。

     

  • 相关阅读:
    MySQL-3(练习题)-三套知识点看完SQL没问题
    MySQL知识点-2(超详细)
    MySQL知识点-1(超详细)
    MySQL表结构笔记9
    MySQL增删改查&数据类型笔记8
    07:表联结MySQL笔记7
    spring事务传播机制
    MySQL查看两个查询的差集
    python连接数据库
    chrome一款可以在浏览器编辑hosts文件的插件HostAdmin App
  • 原文地址:https://www.cnblogs.com/iCcccy/p/4646339.html
Copyright © 2011-2022 走看看