JSTL核心库标签的使用

<c:out>

它是一个输出的标签,负责把计算出的结果输出到jspwriter,就跟调用 out.println()基本一样。没有BODY的时候,使用下面的语法:
<c:out value=”value” [escapeXml]=”{true|false}” [default=”defaultValue”]/>
有BODY的时候,使用下面的语法:
<c:out value=”value” [escapeXml]=”{true|false}” >
       这里是BODY,可以是任何合法的jsp或者是html代码。
</c:out>
注意,escapeXml的作用是是否将代码交给xml解析器解释,true为交给xml解析器解 释,false为交给浏览器解释,见红色部分代码
举例:c_out.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL: c:out的使用</title>
</head>
<body bgcolor="#FFFFFF">
<hr>
<c:set var="sessionAttr" value="sessionValue" scope="session"/>
<c:set var="pageAttr" value="pageValue" scope="page"/>
<c:set var="requestAttr" value="requestValue" scope="request"/>

 

<c:out value=" 以下输出的是前面设置的属性 <br>" escapeXml="false"/>

 

<c:out value="${sessionAttr}"/>
<c:out value="${pageAttr}"/>
<c:out value="${requestAttr}"/>
<c:out value="${test_nodef}" default="没有test_nodef这个变量"/>
</html>

 

<c:set>

这个标签用于在某个范围(page,request,session,application)里面设 置特定的值(默认为page),或者设置某个已经存在的javabean的属性。类似 于<%request.setAttribute(“name”,value)%>
语法:
1、使用value属性设置一个特定范围里面的属性:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”]/ >
2、使用value属性设置一个特定范围里面的属性,带有BODY:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”] >
       Body content
</c:set>
3、设置某个特定对象的一个属性:
<c:set value=”value” target=”target” property=”propertyName”/ >
4、设置某个特定对象的一个属性, 带有BODY:
<c:set value=”value” target=”target” property=”propertyName” >
       Body content
</c:set>

举例: c_set.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>

 

<jsp:useBean id="user" class="com.j2ee14.ch12.User"/>
<html>
<head>
 <title>JSTL:的使用c:set</title>
</head>
<body bgcolor="#FFFFFF">
<hr>
设置一个属性,然后输出它<br>
<c:set var="maxCount" value="100"/>
<c:out value="${maxCount}"/>
<hr>设置属性时,把它的值放在标签的body中。
<c:set var="password">
ksdjfxsdf234234
</c:set>
<c:out value="${password}"/>
<hr>设置javaBean的属性,然后输出这些属性值:
<c:set value="hellking" target="${user}" property="userName"/>
userName=<c:out value="${user.userName}"/>

 

<hr>设置属性,并且指定它们的范围,属性的默认范围是page。
<c:set value="20" var="maxIdelTime" scope="session"/>
<c:set value="next.jsp" var="nextPage" scope="page"/>

 

</body>
</html>

 

<c:remove>

它的作用是删除某个变量或者属性。类似 于<%session.removeAttribute(“name”)%>,它的语法是:<c:remove var=”varName” [scope= “{page|request|session|application}”]/ >
举例:c_remove.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL:c:remove的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:set value="10000" var="maxUser" scope="application"/>
<c:set value="10" var="count" scope="session"/>
maxUser=<c:out value="${maxUser}"/><br>
count=<c:out value="${count}"/>
<hr>调用c:remove...
<c:remove var="maxUser" scope="application"/>
<c:remove var="count"/>

 

调用了c:remove后,参数值为:
maxUser=<c:out value="${maxUser}"/>,
count=<c:out value="${count}"/>,
</body>
</html>

 

<c:catch>

它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似 于<%try{}catch{}%>,它的语法是:<c:catch [var=”varName”]>nested actions</c:catch>
举例:c_catch.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL:catch的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:catch var="error">
<%
 Integer.parseInt("sdkfj");
 %>
 </c:catch>
 <hr>异常:
 <c:out value="${error}"/>
 <hr>异常 exception.getMessage=
 <c:out value="${error.message}"/>
<hr> 异常exception.getCause=
 <c:out value="${error.cause}"/>
</body>
</html>


<c:if>; 它用来做条件判断,功能类似 jsp 中的 <%if(boolean){}%>

语法:
1 、无body的情况
       <c:if test=”testCondition” var=”varName” [scope= “{page|request|session|application}” ]/>
2、有body的情况
       <c:if test=”testCondition” var=”varName” [scope= “{page|request|session|application}” ]>
              Body 内容
</c:if>
举例: c_if.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL:c:if的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:set var="count" value="100"/>
<c:if test="${count>78}">
count>78
</c:if>
</body>
</html>

 

l         <c:choose>;  它是用于条件选择,和 <c:when>,<c:otherwise> 一起使用,它的条件选择是排斥性的,相当于 jsp 中的 <%switch(i){case 0: … case 1:… default :}%> ,也可以完成 <%if{}…else if{}….else if{} else{} %> 的功能

语法:<c:choose>
                     Body 内容(<c:when>,<c:otherwise>)
        </c:choose>
注意:它的body内容只能是由以下的元素组成:
1.         空 格;
2.         0 个或多个<c:when>子标签,<c:when>必须在<c:otherwise>子标签之前出现;
3.         0 个或多个<c: otherwise >子标签

 

l         <c:when> 它是 <c:choose> 的一 个分支
语法:
       <c:when test=”testCondition”>
              Body 内容
</c:when>
注意:它有两个限制:
1.         必 须以<c:choose>作为它的父标签
2.         必 须在<c:otherwise>标签之前出现

 

l         <c:otherwise> 他 代表了 <c:choose> 的最后选择相当于 jsp <%switch(i){case 0: … case 1:… default :}%> 中的 default 语句。
语法:
       <c:otherwise>
              Conditional block
</c:otherwise>
它的使用有两个限制:
1.         必 须以<c:choose>作为它的父标签;
2.         必 须以<c:choose>的最后分支方式出现;

 

<c:choose>,<c:otherwise>,<c:when> 举例:c_choose.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<c:set var="count" value="100"/>

 

<html>
<head>
 <title>JSTL:c:choose的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:choose>
    <c:when test="${count <=0}">
      <font color="blue">
    </c:when>
    <c:when test="${count<=60&&count>0}">
      <font color="red">
    </c:when>
    <c:otherwise>
      <font color="green">
    </c:otherwise>      
 </c:choose>
count的值是:<c:out value="${count}"/>
</font>
</body>
</html>

在前面的一次中,我们开发过一个迭代标签,JSTL中也提供了对迭代进行支持的标 签,并且,他的功能比上一章的强大的多。JSTL中的迭代标签有两个:
l         <c:forEach>;
l         <c:forTokens>;
1、<c:forTokens>专门处理TokenString的迭 代,可以指定一个或者是多个分隔符。由于他们使用的很少,在这里就不介绍了。
2、<c:forEach>是最常用的,他几乎能够完成所有的迭代任 务,就象jsp中的for(int i=j;i<k;i++)下面我来详细介绍。(注意,“[]”里面的是可选条件)
语法:a、在Collection中迭代:
       <c:forEach [var=”varName”] items=”collection”  [varStatus=”varStatusName”]
       [begin=”begin”] [end=”end”] [step=”step”]>
       Body 内容
       </c:forEach>
      b、迭代固定的次数:
       <c:forEach [var=”varName”] [varStatus=”varStatusName”]
       begin=”begin” end=”end” [step=”step”]>
       Body 内容
       </c:forEach>

<c:import>
作用:导入一个url的资源,相当于jsp 中的<jsp:include page=”path”>标签,同样也可以把参数传递到被导入的页面。
语法:a、资源的内容使用string对象向外暴露
              <c:import url=”url” [context=”context”]
[var=”varName”] [scope=”{page|request|session|application}”]
[charEncoding=”charEncoding”]>
Optional body content for <c:param> subtags
</c:import>
      b 、资源的内容使用redirect对象向外暴露
              <c:import url=”url” [context=”context”]
varReader=”varReaderName”
[charEncoding=”charEncoding”]>
Body content where varReader is consumed by another action
</c:import>
举例:c_import.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL:c:import的使用</title>
</head>
<body bgcolor="#FFFFFF">
<h3>绝对路径 URL</h3>
<blockquote>
<ex:escapeHtml>
 <c:import url="http://127.0.0.1:8080/ch12/footer.jsp"/>
</ex:escapeHtml>
</blockquote>
 
<h3>相对路径并且传递参数到指定的URL</h3>
<blockquote>
 <c:import url="footer.jsp" charEncoding="gb2312">
 <c:param name="userName" value="hellking"/>
 </c:import> 
</blockquote>
</body>
</html>

 

<c:redirect>
作用:把客户的请求发送到另一个资源,相当于jsp中 的<% request.sendRedirect(“other.jsp”)%>或者servlet中的 RequestDispatch.forward(“other.jsp”)的功能。
语法:a、没有body的情况
              <c:redirect url=”value” [context=”context”]/>
      b 、有body,在body 中查询指定的参数
              <c:redirect url=”value” [context=”context”]>
                     <c:param> subtags
              </c:redirect>
举例:c:redirect.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL:c:redirect的使用</title>
</head>
<body bgcolor="#cc99cc">
<c:url value="footer.jsp" var="nextpage"><c:param name="userName" value="hellking"/></c:url>
<c:redirect url="${nextpage}"/>
</body>
</html>

 

<c:url>
作用:用于构造URL,主要的用途是URL的重写。
语法:a、没有body的情况
              <c:url value=”value” [context=”context”]
[var=”varName”] [scope=”{page|request|session|application}”]/>
      b 、有body ,并在body 中有重写的参数
              <c:url value=”value” [context=”context”]
[var=”varName”] [scope=”{page|request|session|application}”]>
<c:param> subtags
</c:url>
举例:c_url.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL c:url 的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:url var="footer" value="footer.jsp" scope="page">
       <c:param name="id" value="hellking"/>
</c:url>
<c:out value="${footer}"/>
<br>另一种没有参数的URL<br>
<c:url value="footer.jsp"/>
</body>
</html>

 

<c:param>
作用:它是 在<c:import>,<c:redirectt>,<c:url>中添加请求的参数。和一般的参数没什么区别。
语法:a、参数的值使用value属性指定
              <c:param name=”name” value=”value”/>
      b 、参数的值在body 中指定
              <c:param name=”name”>
                     参数值
              </c:param>
举例:c_param.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
 <title>JSTL c:param的使用</title>
</head>
<body bgcolor="#FFFFFF">

 

<c:redirect url="footer.jsp">
<c:param name="userName">
   hellking
</c:param>
</c:redirect>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值