您的位置:首页 > Web前端 > JavaScript

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

2013-07-16 16:07 337 查看
  首先表示开心,老夫我终于实习了,其次表示伤悲,我之前没用过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>


  这里的话是用"|"作为分隔符,如果需要其他的分隔符的话选取其他的不同的字符就好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: