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>标签中作为子元素来使用。

     

  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/iCcccy/p/4646339.html
Copyright © 2011-2022 走看看