• 自我学习而已——JSTL——标准标签库的使用


      首先表示开心,老夫我终于实习了,其次表示伤悲,我之前没用过jsp,现在努力学习中

      JSTL是jsp的标准库标签,使用jstl的话就可以减少或者不在jsp文件里面写java了,交由标签完成,一定程度上体现了一致性

      好了,废话不多说,本文持续更新中,完全自慰用途,如有不对,请轻拍

      核心标签:

      <c:out />

      <c:out />有3个属性,分别为 value、default、escpaeXml,这三个属性分别代表着 输出内容描述;如果value值为null的时候显示的default;是否转换

    特殊字符(比如标签的“<”);这里值得注意的是如果value=""的话,这不是value为null,而是值是空字符,要使得value为null的话,需要value="${null}"或者

    是取值其他的空值,而且基本上value都是要和${}一起使用的

      <c:set />和<c:remove />

      <c:set />常用的属性有value,var,scope,scope有page,request,session,application这几种,主要是对应的jsp内置对象

       

    <c:set scope="page" var="number">
            <c:out value="${2 }"></c:out>
        </c:set>
        
         <c:set scope="request" var="number">
             <%=3 %>
        </c:set>
        
        <c:set scope="session" var="number">
            4
        </c:set>
        
        c:set初始设置的值<br><hr>
        pageScope.number:<c:out value="${pageScope.number }" default="No Data"></c:out><br>
        requestScope.number:<c:out value="${requestScope.number }" default="No Data"></c:out><br>
        sessionScope.number:<c:out value="${sessionScope.number }" default="No Data"></c:out><br>
        
        <c:out value='<c:remove var="number" scope="page"/>之后' /><br><hr>
        <c:remove var="number" scope="page"/>    
        pageScope.number:<c:out value="${pageScope.number }" default="No Data"></c:out><br>
        requestScope.number:<c:out value="${requestScope.number }" default="No Data"></c:out><br>
        sessionScope.number:<c:out value="${sessionScope.number }" default="No Data"></c:out><br>
        
        <c:out value="<c:remove var='number'/>之后"></c:out><br><hr>
        <c:remove var="number"/>
        pageScope.number:<c:out value="${pageScope.number }" default="No Data"></c:out><br>
        requestScope.number:<c:out value="${requestScope.number }" default="No Data"></c:out><br>
        sessionScope.number:<c:out value="${sessionScope.number }" default="No Data"></c:out><br>
        
    View Code

    显示的值为:

      c:set初始设置的值


    pageScope.number:2
    requestScope.number:3
    sessionScope.number:4
    <c:remove var="number" scope="page"/>之后


    pageScope.number:No Data
    requestScope.number:3
    sessionScope.number:4
    <c:remove var='number'/>之后


    pageScope.number:No Data
    requestScope.number:No Data
    sessionScope.number:No Data

    相当于各个scope有自己的命名空间。然后可以在这里去,如果是没指定的话就是所有的变量

      和URL相关的标签:<c:url>,<c:param>,<c:redirect>

       <c:url>很好理解,就是改变链接地址就是了,常用的是

      

    <c:out var:"urll" value="/xiaosi2"></c:cout>

    这个样子使用,然后如果需要使用参数,并且访问对应的页面的话,要和<c:param>配合使用

        <c:url value="/xiaosi2.jsp" var="urll">
            <c:param name="Id" value="xiaosi_id"></c:param>
            <c:param name="Name" value="xiaosi_name"></c:param>
        </c:url>
        <a href="${urll }"> 不出意外的话点击这里会跳转到另一个页面</a>

    点击标签的话跳转的页面就是/xiaosi2.jsp?Id=xiaosi_id&Name=xiaosi_name 添加对应的参数

      如果是需要网页重定向的话:

      

        <c:redirect url="/xiaosi2.jsp">
            <c:param name="Id" value="xiaosi_id"></c:param>
            <c:param name="Name" value="xiaosi_name"></c:param>
        </c:redirect>

    也是一样的,稍微注意一下的是,<c:redirect>是把地址填在url内,而<c:url>是放在value里面的

      条件控制标签,<c:choose>,<c:when>,<c:otherwise>标签

      

      <c:when>,<c:otherwise>标签需要放在<c:choose>里面,而且<c:choose>里面只能放<c:choose>,<c:when>标签,不然都会页面报错

      

        <%
            Calendar rightNow=Calendar.getInstance();
            Integer Hour=new Integer(rightNow.get(Calendar.HOUR_OF_DAY));
            request.setAttribute("hour", Hour);
        %>
        <c:choose>
            <c:when test="${hour>=0&&hour<=11 }">
                <c:set value="上午好" var="sayHello"></c:set>
            </c:when>
            <c:when test="${hour>=12&&hour<=17 }">
                <c:set value="下午好" var="sayHello"></c:set>
            </c:when>
            <c:otherwise>
                <c:set value="晚上好" var="sayHello"></c:set>
            </c:otherwise>            
        </c:choose>
        <c:out value="现在时间:${hour }时"></c:out>
        <c:out value="${sayHello }"></c:out>

    <c:when>相当于if,<c:otherwise>就相当于else,然后判断条件卸载test里就可以,使用${}来获取值并且判断

      迭代运行循环标签:<c:forEach>,<c:fortonkes>

      <c:forEach>可以看做是实现了一个for功能,

    <c:forEach var="color" items="红,橙,黄,绿,青,蓝,紫" begin="2" step="3">
    <c:out value="${color }"></c:out><span style="color: red;">|</span>
    </c:forEach>


    <c:forEach var="i" begin="0" end="50" step="5" varStatus="status">
    <c:if test="${status.first }">
    begin:<c:out value="${status.begin }"></c:out><br>
    end:<c:out value="${status.end }"></c:out><br>
    step:<c:out value="${status.step }"></c:out><br>
    <c:out value="输出的元素:"></c:out>
    </c:if>
    <c:out value="${i}"></c:out>
    <span>++++++++</span>
    <c:out value="${ status.index}"></c:out><br>
    <c:if test="${status.last }">
    <br/>总共输出<c:out value="${status.count }"></c:out> 个元素
    </c:if>
    </c:forEach>

    输出结果和执行一个for循环是一样的,begin的话代表起始值,end是结束值,step是分隔多少的值,注意begin是从0开始的。varStatus指得是目前内容相关信息,.first  .last   .count  .index   

      <c:forTokens>是专门处理字符串数据使用的,items的内容必须是字符串

        <c:set var="star" value="红|橙,黄|绿,青|蓝,紫" scope="request"></c:set>
        <c:out value="原始数据为:${star }"></c:out><hr>
        <c:out value="使用‘|’作为分隔符"></c:out><hr>
        <c:forTokens items="${star }" delims="|" varStatus="status" var="str">
            <c:out value="${str }"></c:out><br>
            <c:if test="${status.last }">
                <br>
                总共输出<c:out value="${status.count }"></c:out>个元素。
            </c:if>
        </c:forTokens>

      这里的话是用"|"作为分隔符,如果需要其他的分隔符的话选取其他的不同的字符就好

  • 相关阅读:
    kickstart_Round C 2020
    4.26腾讯笔试题
    [jvm][面试]JVM 调优总结
    Django中的Model(操作表)
    C++ 无锁数据结构
    masstree Seastar
    java logAspect
    vimrc
    GopherChina 2018
    RocketMQ
  • 原文地址:https://www.cnblogs.com/yansi/p/3193568.html
Copyright © 2020-2023  润新知