`
liyiye
  • 浏览: 423975 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSTL详解

阅读更多

JSTL详解(一)

 
       先来搭下环境,jstl的包当然是不能少的拉。其次,下载必须的标签库或者是java的标签库文件。没有的话,也可以联系我 xxx_programer@163.com  
     将jstl 1.1.jar加到class中,(这就不要我详细的讲了吧),然后将标签库放到WEB-INF下或则将java的标签库文件(*.jar)放到WEB-INF\lib下,就可以写测试代码了。
     first_jstl.jsp
     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core " %>
    <%@ page contentType="text/html; charset=gb2312" language="java" %>
    <c:set var="userName" value="hellking"/>
    <c:set value="16" var="age"/>
    欢迎您,<c:out value="${userName}"/><hr>
   <c:forEach var="i" begin="1" end="5">
   <font size=${i}>${i}</font>
   <br>
   </c:forEach>
   <c:if test="${age<18}">
    对不起,你的年龄过小,不能访问这个网页◎!
   </c:if>
   <br>
   </body>
   </html>

    web.xml
(使用java的标签库文件*.jar)
  
    <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="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>jstl test</display-name>
  <description>
     jstl test
  </description>
</web-app>

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

  <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="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-uri>http://java.sun.com/jstl/fmt</taglib-uri>
    <taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
    <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
    <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
    <taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
    <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
    <taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
    <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</web-app>
好了,一个最简单的包含有jstl的页面设计完成了。下面测试。
http://localhost:8080/jstl/frist_jstl.jsp
页面输出结果:

欢迎您,hellking

1
2
3
4
5
对不起,你的年龄过小,不能访问这个网页◎!
 
 JSTL详解(二)
 
一般用途的标签


     在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有:
l         <c:out>
l         <c:set>
l         <c:remove>
l         <c:catch>
下面,我来讲述一下他们的作用:

<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>
 
JSTL详解(三)
条件标签包括以下几种:
l         <c:if>;
l         <c:choose>;
l         <c:when>;
l         <c:otherwise>;
下面,我来分别介绍:

 

l         <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详解(四)
迭代标签的使用


 
如果使用scriptlets,那么,我们经常使用Iterator或者Enumeration来进行迭代,如:
       Iterator it = collection.iterator();
       while(it.hasNext()){
              SomeBean someBean = (SomeBean)it.next();
              out.println(someBean.getXXX());
              …………..
}
在前面的一次中,我们开发过一个迭代标签,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_forEach1.jsp(在Collection中迭代)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 

<%@ page import="java.util.*,com.j2ee14.ch12.User"%>

 

<%

 

   Collection users_c=new ArrayList();

 

   for(int i=0;i<3;i++)

 

   {

 

      User user=new User();

 

      user.setUserName("foo"+i);

 

      user.setPassword("foo"+i);      

 

      users_c.add(user);

 

   }

 

   session.setAttribute("users",users_c);

 

%>

 

<html>

 

<head>

 

  <title>JSTL:c:forEach的使用之一</title>

 

</head>

 

<body bgcolor="#FFFFFF"><center>

 

<h4>迭代某个collection中的元素。</h4>

 

<table border=1>

 

<tr><td>用户名</td><td>密码</td></tr>

 

<c:forEach var="users" items="${users}">

 

  <tr>

 

  <td><c:out value="${users.userName}"/></td>

 

  <td><c:out value="${users.password}"/></td>

 

  </tr>

 

</c:forEach>

 

   </table>  

 

</center></body>

 
</html>


 
举例:c_forEach2.jsp(迭代固定的次数)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 

<html>

 

<head>

 

  <tcounttle>JSTL:c:forEach的使用之二</tcounttle>

 

</head>

 

<body bgcolor="#FFFFFF"><center>

 

<h4>第二种迭代:50-60</h4>

 


 

<c:forEach var="count" begin="50" end="60">

 

  <c:out value="${count}"/> **

 

</c:forEach>

 

<h4>第二种迭代:10 to 100,step=10</h4>

 

<c:forEach var="count" begin="10" end="100" step="10">

 

  <c:out value="${count}"/>**

 

</c:forEach>

 

</center>

 

</body>

 
</html>
分享到:
评论
1 楼 qzxiaofeng 2008-12-26  

    :lol: 

相关推荐

    JSTL详解 DOC文档 较全的JSTL标记说明

    ### JSTL详解 #### 一、JSTL简介与环境搭建 JSTL(JavaServer Pages Standard Tag Library,JavaServer Pages 标准标签库)是为简化和标准化 JavaServer Pages 开发而设计的一组标准标签。通过使用 JSTL,开发者...

    JSTL详解---附源码

    **JSTL详解** JSTL,全称JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它提供了一套用于处理常见JSP任务的标签,如迭代、条件判断、XML处理等,旨在减少在JSP页面中的脚本代码,提高页面的...

    JSTL详解--jsp页面编写规范详解

    ### JSTL详解—JSP页面编写规范 #### 概述 JSTL(JSP Standard Tag Library,JSP标准标签库)是一种被广泛应用于JavaServer Pages (JSP) 页面中的标准化标签库,旨在简化JSP页面开发过程,提高代码可读性和可维护...

    JSTL详解--Core 标签库介绍

    **JSTL详解--Core标签库介绍** JavaServer Pages(JSP)标准标记库(JSTL)是一个关键的工具,旨在减少JSP页面中的脚本元素,提高代码的可维护性和可读性。JSTL包含了一系列定制的标记库,用于实现常见的Web应用...

    JSTL详解--标签库介绍.doc

    ### JSTL详解--标签库介绍 #### 一、引言 JSTL(JavaServer Pages Standard Tag Library),即JavaServer Pages标准标签库,是一种专为简化和增强JSP(JavaServer Pages)页面开发而设计的技术。通过提供一组预定...

    Java版数据结构和IO结构图+JSTL详解

    本资料包涵盖了三个关键主题:Java数据结构、IO(输入/输出)结构图以及JSTL(JavaServer Pages Standard Tag Library)的详解,这些都是Java开发中的核心概念。下面将逐一深入探讨这些知识点。 首先,我们来谈谈...

    EL JSTl详解word文档

    **JSTL (JavaServer Pages Standard Tag Library)** 是一套用于简化JSP开发的标签库,由Apache Jakarta组织维护,并遵循Sun公司的Java规范。它旨在提供一种标准的方式来处理常见的页面逻辑,减少在JSP中直接使用Java...

    JSTL详解--EL表达式

    **JSTL(JavaServer Pages Standard Tag Library)**是Java社区为了解决JSP页面中大量Java代码嵌入问题而提出的一种标准标签库。它提供了一系列的预定义标签,用于简化JSP页面的开发,增强可读性和可维护性。JSTL的...

    jsp JSTL详解

    **JSP JSTL详解** JavaServer Pages (JSP) 是一种用于开发动态网页的技术,而JSP Standard Tag Library (JSTL) 是一套标准标签库,它为JSP提供了强大的功能,使得开发者可以更方便地处理常见的任务,如迭代、条件...

    el与jstl详解

    - **引入必要的JAR包**:为了使用JSTL,需要在项目中添加`jstl-1.2.jar`和`standard.jar`两个JAR包。 - **定义标签库前缀**:在JSP页面顶部使用`&lt;%@ taglib %&gt;`指令定义JSTL的前缀。例如: ```jsp ...

    JSTL详解.pdf

    在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示 逻辑已经不是新技术了...鉴于此,出现了 JSTL(JSP Standard Tag Library)。大多数 JSP 页面逻辑 提供了实现的 JSTL 技术,该技术本身就是一个标签库。

    JSTL详解,一份很不错的JSTL学习文档

    **JSTL(JavaServer Pages Standard Tag Library)**是Java服务器端的一个标准标签库,它提供了一系列的标签来简化JSP页面的开发,使得开发者能够更专注于业务逻辑而不是底层的Java代码。本篇文档将深入讲解JSTL的核心...

Global site tag (gtag.js) - Google Analytics