JSTL详解

 
JSTL 详解 ( )(转)
 
        先来搭下环境, jstl 的包当然是不能少的拉。其次,下载必须的标签库或者是 java 的标签库文件。没有的话,也可以联系我 [email protected] 
    
jstl 1.1.jar 加到 class 中,(这就不要我详细的讲了吧),然后将标签库放到 WEB-INF 下或则将 java 的标签库文件( *.jar )放到 WEB-INF\lib 下,就可以写测试代码了。
     first_jstl.jsp
     <!---->
    <!---->
    <c:set var="userName" value="hellking"></c:set>
    <c:set var="age" value="16"></c:set>
   
欢迎您, <c:out value="${userName}"></c:out>

   <c:foreach var="i" begin="1" end="5">
   ${i}
  

   </c:foreach>
   <c:if test="${age&amp;lt;18}">
    </c:if>
  

  
  

    web.xml
(
对不起,你的年龄过小,不能访问这个网页
  
使用 java 的标签库文件 *.jar)
  
    <!---->
<web-app xmlns="&amp;lt;a href=" java.sun.com="" xml="" ns=" _fcksavedurl="></web-app>http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
    version="2.4">
  <display-name></display-name>jstl test
  <description></description>
     jstl test
 


(
使用标签库文件 *.tld)

  <!---->
<web-app xmlns="&amp;lt;a href=" java.sun.com="" xml="" ns=" _fcksavedurl="></web-app>http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 
  <taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/fmt
    <taglib-location></taglib-location>/WEB-INF/fmt.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/fmt-rt
    <taglib-location></taglib-location>/WEB-INF/fmt-rt.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/core
    <taglib-location></taglib-location>/WEB-INF/c.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/core-rt
    <taglib-location></taglib-location>/WEB-INF/c-rt.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/sql
    <taglib-location></taglib-location>/WEB-INF/sql.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/sql-rt
    <taglib-location></taglib-location>/WEB-INF/sql-rt.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/x
    <taglib-location></taglib-location>/WEB-INF/x.tld
<taglib></taglib>
    <taglib-uri></taglib-uri>http://java.sun.com/jstl/x-rt
    <taglib-location></taglib-location>/WEB-INF/x-rt.tld

好了,一个最简单的包含有 jstl 的页面设计完成了。下面测试。
http://localhost:8080/jstl/frist_jstl.jsp
页面输出结果:

欢迎您, hellking

1
2
3
4
5
对不起,你的年龄过小,不能访问这个网页
 
 JSTL 详解(二)
 
一般用途的标签
 
     JSTL 中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在 jsp 中使用很频繁,它们有:
l          <c:out></c:out>
l          <c:set></c:set>
l          <c:remove></c:remove>
l          <c:catch></c:catch>
下面,我来讲述一下他们的作用:
<c:out></c:out>
它是一个输出的标签,负责把计算出的结果输出到 jspwriter ,就跟调用 out.println() 基本一样。没有 BODY 的时候,使用下面的语法:
<c:out value="”value” [escapeXml]=”{true|false}” [default=”defaultValue”]/"></c:out>
BODY 的时候,使用下面的语法:
<c:out value="”value” [escapeXml]=”{true|false}”"></c:out>
    这里是 BODY ,可以是任何合法的 jsp 或者是 html 代码。
注意, escapeXml 的作用是是否将代码交给 xml 解析器解释, true 为交给 xml 解析器解释, false 为交给浏览器解释,见红色部分代码
举例: c_out.jsp
<!---->
<!---->
 

<c:set var="sessionAttr" value="sessionValue" scope="session"></c:set>
<c:set var="pageAttr" value="pageValue" scope="page"></c:set>
<c:set var="requestAttr" value="requestValue" scope="request"></c:set>
 
<c:out value="&lt;/span&gt;&amp;lt;span style=">以下输出的是前面设置的属性</c:out>
" escapeXml="false"/>
 
<c:out value="${sessionAttr}"></c:out>
<c:out value="${pageAttr}"></c:out>
<c:out value="${requestAttr}"></c:out>
<c:out value="${test_nodef}" default="&lt;/span&gt;&amp;lt;span style=">没有</c:out> test_nodef 这个变量 "/>
 
<c:set></c:set>
这个标签用于在某个范围 (page,request,session,application) 里面设置特定的值 ( 默认为 page) ,或者设置某个已经存在的 javabean 的属性。类似于 <!---->
语法:
1 、使用 value 属性设置一个特定范围里面的属性:
<c:set value="”value” var=”varName”"></c:set>
2 、使用 value 属性设置一个特定范围里面的属性,带有 BODY
<c:set value="”value” var=”varName”"></c:set>
    Body content
3 、设置某个特定对象的一个属性:
<c:set value="”value” target=”target” property=”propertyName”/"></c:set>
4 、设置某个特定对象的一个属性 , 带有 BODY
<c:set value="”value” target=”target” property=”propertyName”"></c:set>
    Body content
举例: c_set.jsp
<!---->
<!---->
 
<jsp:usebean class="com.j2ee14.ch12.User" id="user"></jsp:usebean>
 

设置一个属性,然后输出它
<c:set var="maxCount" value="100"></c:set>
<c:out value="${maxCount}"></c:out>

设置属性时,把它的值放在标签的 body 中。
<c:set var="password"></c:set>
ksdjfxsdf234234
<c:out value="${password}"></c:out>

设置 javaBean 的属性,然后输出这些属性值:
<c:set value="hellking" target="${user}" property="userName"></c:set>
userName=<c:out value="${user.userName}"></c:out>
 

设置属性,并且指定它们的范围,属性的默认范围是 page
<c:set var="maxIdelTime" value="20" scope="session"></c:set>
<c:set var="nextPage" value="next.jsp" scope="page"></c:set>
 
 
<c:remove></c:remove>
它的作用是删除某个变量或者属性。类似于 <!---->, 它的语法是: <c:remove var="”varName”"></c:remove>
举例: c_remove.jsp
<!---->
<!---->
 
<c:set var="maxUser" value="10000" scope="application"></c:set>
<c:set var="count" value="10" scope="session"></c:set>
maxUser=<c:out value="${maxUser}"></c:out>
count=<c:out value="${count}"></c:out>

调用 c:remove...
<c:remove var="maxUser" scope="application"></c:remove>
<c:remove var="count"></c:remove>
 
调用了 c:remove 后,参数值为:
maxUser=<c:out value="${maxUser}"></c:out>
count=<c:out value="${count}"></c:out>
 
<c:catch></c:catch>
它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似于 <!----> ,它的语法是: <c:catch>nested actions</c:catch>
举例: c_catch.jsp
<!---->
<!---->
 
<c:catch var="error"></c:catch>
<!---->
 
 
异常:
 <c:out value="${error}"></c:out>
 
异常 exception.getMessage=
 <c:out value="${error.message}"></c:out>

异常 exception.getCause=
 <c:out value="${error.cause}"></c:out>
 
JSTL 详解(三)
条件标签包括以下几种:
l          <c:if>;</c:if>
l          <c:choose>;</c:choose>
l          <c:when>;</c:when>
l          <c:otherwise>;</c:otherwise>
下面,我来分别介绍:
 
l          <c:if>; </c:if> 它用来做条件判断,功能类似 jsp 中的 <!---->
语法:
1 、无 body 的情况
    <c:if var="”varName”" test="”testCondition”"></c:if>
2 、有 body 的情况
    <c:if var="”varName”" test="”testCondition”"></c:if>
        Body 内容
举例: c_if.jsp
<!---->
<!---->
 
<c:set var="count" value="100"></c:set>
<c:if test="${count&amp;gt;78}"></c:if>
count>78
 
l          <c:choose>; </c:choose> 它是用于条件选择,和 <c:when>,<c:otherwise></c:otherwise></c:when> 一起使用,它的条件选择是排斥性的,相当于 jsp 中的 <!----> ,也可以完成 <!----> 的功能
语法: <c:choose></c:choose>
            Body 内容 ( <c:when>,<c:otherwise></c:otherwise></c:when> )
     
注意:它的 body 内容只能是由以下的元素组成:
1.          空格;
2.          0 个或多个 <c:when></c:when> 子标签, <c:when></c:when> 必须在 <c:otherwise></c:otherwise> 子标签之前出现;
3.          0 个或多个 子标签
 
l          <c:when></c:when> 它是 <c:choose></c:choose> 的一个分支
语法:
    <c:when test="”testCondition”"></c:when>
        Body 内容
注意:它有两个限制:
1.          必须以 <c:choose></c:choose> 作为它的父标签
2.          必须在 <c:otherwise></c:otherwise> 标签之前出现
 
l          <c:otherwise></c:otherwise> 他代表了 <c:choose></c:choose> 的最后选择相当于 jsp <!----> 中的 default 语句。
语法:
    <c:otherwise></c:otherwise>
        Conditional block
它的使用有两个限制:
1.          必须以 <c:choose></c:choose> 作为它的父标签;
2.          必须以 <c:choose></c:choose> 的最后分支方式出现;
 
<c:choose>,<c:otherwise>,<c:when></c:when></c:otherwise></c:choose> 举例: c_choose.jsp
<!---->
<!---->
<c:set var="count" value="100"></c:set>
 
 
<c:choose></c:choose>
    <c:when test="${count &lt;=0}"></c:when>
     
   
    <c:when test="${count&lt;=60&amp;&amp;amp;count&amp;gt;0}"></c:when>
     
   
    <c:otherwise></c:otherwise>  
        
   
 
count 的值是: <c:out value="${count}"></c:out>
 
JSTL 详解(四)
迭代标签的使用
 
如果使用 scriptlets, 那么,我们经常使用 Iterator 或者 Enumeration 来进行迭代,如:
       Iterator it = collection.iterator();
       while(it.hasNext()){
              SomeBean someBean = (SomeBean)it.next();
              out.println(someBean.getXXX());
              …………..
}
在前面的一次中,我们开发过一个迭代标签, JSTL 中也提供了对迭代进行支持的标签,并且,他的功能比上一章的强大的多。 JSTL 中的迭代标签有两个:
l         <c:foreach>;</c:foreach>
l         <c:fortokens>;</c:fortokens>
1 <c:fortokens></c:fortokens> 专门处理 TokenString 的迭代,可以指定一个或者是多个分隔符。由于他们使用的很少,在这里就不介绍了。
<div style="LINE-HEIGHT: 130%" align="le

你可能感兴趣的:(C++,c,Web,jsp,C#)