自我学习而已——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>

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

posted @ 2013-07-16 16:07  小斯新手  阅读(374)  评论(0编辑  收藏  举报