JSTL标签详解以及应用实例

JSTL

Apache提供的标签库,jar包:jstl-1.2.jar,如果用MyEclipse,它会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入。

------------------

导入JSTL核心标签库
  <%taglib prefix="c" uri="http://java.sun.com/jstl/core"%>

<c:set>
  * <c:set var="a" value="hello"/> 创建名为a,值为hello的域属性,范围:page
  * <c:set var="a" value="hello" scope="session"/> 范围为session

<c:out>
  * <c:out value="aaa"/> 输出字符串aaa
  * <c:out value="${aaa"/> 输出域属性aaa,其中与${aaa}相同
  * <c:out value="${aaa}" default="xxx"/>如果${aaa}不存在,那么输出xxx字符串
  * <c:out value="${aaa}" escapeXml="true"/>如果${aaa}中包含特殊字符,那么转义它。这可以防止javascript攻击

<c:remove>
  * <c:remove var="a"/> 删除名为a的域属性
  * <c:remove var="a" scope="page"/> 删除page域中名为a的域属性

<c:url>
  * <c:url value="/AServlet"/> 输出URL:/项目名/AServlet
  * <c:url value="/AServlet" var="url" scope="page"/> 把生成的url保存到page域中,而不会输出
  * <c:url value="/AServlet">:输出URL:/项目名/AServlet?username=%xx%xx%xx%xx%xx%xx,其中张三会被URL编码
    <c:param name="username" value="张三"/>
  </c:url/>

<c:if>
  * <c:if test="${条件}"> 当条件为true时执行标签体内容
    hello
   </c:if>

<c:choose>
    * <c:choose>
      <c:when test="${条件1}">a</c:when>
      <c:when test="${条件2}">b</c:when>
      <c:when test="${条件3}">c</c:when>
      <c:otherwise>d</c:otherwise>
      </c:choose>

  等同与:
    if() {
    } esle if() {
    } esle if() {
    } else if() {
    } else {
    }

<c:forEach>

  可以用来遍历数组、List、Map、

    1. 计数循环

      <c:forEach begin="1" end="10" var="i">
        ${i}
      </c:forEach>
    等同于
      for(int i = 1; i <= 10; i++) {
      out.println(i);
      }

      <c:forEach begin="1" end="10" var="i" step="2">
        ${i}
      </c:forEach>
    等同于
      for(int i = 1; i <= 10; i+=2) {
      out.println(i);
      }

    2. 遍历数组

      <%
        String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};
        pageContext.setAttribute("ns", names);
      %>
      <c:forEach var="item " items="${ns } ">
        <c:out value="name: ${item } "/><br/>
      </c:forEach>

    3. 遍历List

      <%
        List<String> names = new ArrayList<String>();
        names.add("zhangSan");
        names.add("liSi");
        names.add("wangWu");
        names.add("zhaoLiu");
        pageContext.setAttribute("ns", names);
      %>
      <c:forEach var="item" items="${ns }">
        <c:out value="name: ${item }"/><br/>
      </c:forEach>

    4. 遍历Map

      <%
        Map<String,String> stu = new LinkedHashMap<String,String>();
        stu.put("number", "N_1001");
        stu.put("name", "zhangSan");
        stu.put("age", "23");
        stu.put("sex", "male");
        pageContext.setAttribute("stu", stu);
      %>
      <c:forEach var="item " items="${stu }">
        <c:out value="${item.key }: ${item.value } "/><br/>
      </c:forEach>

    5. 循环状态对象

      循环状态对象是用来说明循环的状态的,属性如下:
          count:int类型,当前以遍历元素的个数;
          index:int类型,当前元素的下标;
          first:boolean类型,是否为第一个元素;
          last:boolean类型,是否为最后一个元素;
          current:Object类型,表示当前项目。

            <c:forEach var="item" items="${ns }" varStatus="vs" >
              <c:if test="${vs.first } ">第一行:</c:if>
              <c:if test="${vs.last } ">最后一行:</c:if>
              <c:out value="第${vs.count } 行: "/>
              <c:out value="[${vs.index } ]: "/>
              <c:out value="name: ${vs.current } "/><br/>
            </c:forEach>

导入JSTL格式化标签库

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

    <%
      Date date = new Date();
      pageContext.setAttribute("d", date);
    %>
    <fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss "/>

    <%
        double d1 = 3.5;
        double d2 = 4.4;
        pageContext.setAttribute("d1", d1);
        pageContext.setAttribute("d2", d2);
    %>
    <fmt:formatNumber value="${d1 }" pattern="0.00 "/><br/>
    <fmt:formatNumber value="${d2 }" pattern="#.## "/>

      * pattern:0.00,表示小数不足两位时,使用0补足两位
      * pattern:#.##,表示小数不足两位时,有几位显示几位,不会补足

示例代码:

  1 <%@ page language="java" import="java.util.*,cn.yzu.*" pageEncoding="UTF-8"%>
  2 <%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  5 <%
  6 String path = request.getContextPath();
  7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  8 %>
  9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 10 <html>
 11   <head>
 12     <base href="<%=basePath%>">
 13     <title>My JSP ‘index.jsp‘ starting page</title>
 14     <meta http-equiv="pragma" content="no-cache">
 15     <meta http-equiv="cache-control" content="no-cache">
 16     <meta http-equiv="expires" content="0">
 17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 18     <meta http-equiv="description" content="This is my page">
 19   </head>
 20   <body>
 21           <!-- JSTL标签以及EL表达式的使用与区别 -->
 22           <!-- 输出标签 -->
 23           <%
 24           request.setAttribute("a", "<font color=‘red‘>aaaaa</font>");
 25           request.setAttribute("b", null);
 26            %>
 27           ${a}&nbsp;&nbsp;&nbsp;
 28           <c:out value="a"/>&nbsp;&nbsp;&nbsp;
 29           <c:out value="${a}"/><br>
 30           <c:out value="b" default="bbbbb"></c:out><br>    <!-- 如果b为空,输出default内容 -->
 31           <c:out value="${a}" escapeXml="false"/><hr>        <!-- 转义,默认的true -->
 32
 33
 34           <!-- 在域中设置值,默认是pageScope -->
 35           <c:set var="c" value="ccccc"/>
 36           <c:set var="d" value="ddddd" scope="request"/>
 37           <c:out value="${pageScope.c}"/>&nbsp;&nbsp;&nbsp;
 38           <c:out value="${d}"/><hr>
 39
 40
 41           <!-- 删除域中的值,默认是删除所有域中的值,如下例是删除所有域中的键为e的元素 -->
 42           <c:remove var="e"/>
 43           <c:remove var="c" scope="page"/>
 44           <c:out value="${pageScope.c}"/><hr>
 45
 46
 47           <!-- URL标签 -->
 48           <c:url value="/"/>&nbsp;&nbsp;    <!-- 输出项目名,加/ -->
 49           ${pageContext.request.contextPath }<br><!-- 输出项目名,不加/ -->
 50           <!-- 下面两个可以达到一样的效果 -->
 51           <c:url value="/AServlet"/>&nbsp;&nbsp;
 52           ${pageContext.request.contextPath }/AServlet<br>
 53           <c:url value="/AServlet">
 54               <c:param name="username">张三</c:param><!-- 可以为URL增加参数 -->
 55           </c:url>
 56           <c:url value="/AServlet" var="f" scope="page"/><br>    <!-- 将地址赋给page域的f -->
 57           <c:out value="${f}"/>&nbsp;&nbsp;
 58           <!-- 下例相当于<a href="/webBegin/index.jsp">重新请求本页面</a> -->
 59           <a href="<c:url value=‘/index.jsp‘/>">重新请求本页面</a><hr>
 60
 61
 62           <!-- if,choose选择标签 -->
 63           <c:set var="g" value="87"/>
 64           <c:if test="${g>=0&&g<=100 }">
 65               你得了${g }分
 66           </c:if>&nbsp;
 67           <c:choose>
 68               <c:when test="${g>=85}">成绩优秀</c:when>
 69               <c:when test="${g>=60}">成绩及格</c:when>
 70               <c:otherwise>不及格</c:otherwise>
 71           </c:choose><hr>
 72
 73
 74           <!-- 循环遍历标签 -->
 75           <c:forEach begin="1" end="10" step="2" var="h">
 76               ${h }&nbsp;
 77           </c:forEach><br>
 78           <%
 79               String str[]={"one","two","three"};
 80               request.setAttribute("str", str);
 81           %>
 82           <c:forEach items="${str}" var="nstr">    <!-- 注意,items="${str}"千万不可写成items="${str} ",后面不可有空格 -->
 83               ${nstr }&nbsp;
 84           </c:forEach><br>
 85           <c:forEach items="${str}" var="nstr" varStatus="vs">
 86               ${vs.count }:${nstr }&nbsp;
 87           </c:forEach><hr>
 88
 89
 90           <!-- 格式化标签 -->
 91           <%
 92               request.setAttribute("date", new Date());
 93               request.setAttribute("m", 3.1415);
 94            %>
 95            <fmt:formatDate value="${date }" pattern="yyyy-MM-dd  HH:mm:ss"/><br>
 96            <fmt:formatNumber value="${m }"  pattern="0.000"/><br>
 97            <fmt:formatNumber value="${m }"  pattern="0.00000"/><br><!-- 四舍五入保留五位小数,小数不足时,使用0补足两位 -->
 98            <fmt:formatNumber value="${m }"  pattern="#.#####"/><br><!-- 四舍五入保留五位小数,小数不足时,不补足 -->
 99   </body>
100 </html>

index.jsp

运行结果:

时间: 2024-08-26 15:54:45

JSTL标签详解以及应用实例的相关文章

jstl标签详解

今天起得比较晚,又浪费了点时间,真可耻.. 下午又为校赛出了俩题,至此,校赛的四道题目已经完毕.又检查了一番,没有错误,就等待着明天的汇总了~. AC自动机的题目今天就刷了三道,还是没有完成之前的目标.现在vj也进不去了,想通宵,都不给机会~~ 只能等明天再刷完了,拖延不是一个好习惯. ----------------------------------------------------------------------------------------------------------

jsp页面中jstl标签详解

JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库. Web程序员能够利用JSTL和EL来开发We

jstl标签详解 (转载)

JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库. Web程序员能够利用JSTL和EL来开发We

HTML5移动开发之路(14)——Video标签详解

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(14)--Video标签详解 一.使用技巧 在HTML5中可以使用<audio>或者<video>标签播放html5媒体,使用方式如下: [html] view plaincopyprint? <video src="move.mp4"></video> video标签中有很多属性,例如controls属性可以控制是否有控制台. [html] vie

HTML 中的marquee标签详解

该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果 该标签是个容器标签 语法: <marquee></marquee> 以下是一个最简单的例子: 代码如下: <marquee><font size=+3 color=red>Hello, World</font></marquee> 下面这两个事件经常用到: onMouseOut=&q

Meta标签详解

Meta标签详解,在网上转的,希望对大家有用 引言 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个人网站的链接 ● 在论坛中发帖子宣传你的个人网站 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧! META标签是HTML语言HEAD区

【转载】html中object标签详解

[转载自http://blog.csdn.net/soliy/archive/2010/03/22/5404183.aspx] html标签之Object标签详解 作者:网络    出处:网络    2010年3月22日13:36:29 定义和用法定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码.<object> 标签用于包含对象,比如图像.音频.视频.Java applets.Acti

meta标签详解(meta标签的作用)///////////////////////////转

meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个人网站的链接 ● 在论坛中发帖子宣传你的个人网站 很多人却忽视了HTML标签META的强大功效,一个好的MET

Linux I/O 重定向详解及应用实例

简解 > 输出 < 输入 >> 追加 & [> | < | >>]之前:输入输出; ls /dev &>filename #"&"在这里代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了. [> | < | >>]之后:重定义文件标志符 echo 123 1>&tmp #相当于 echo 123 : echo 123 > tmp. &q