JSTL
1. jstl的概述
  * apache的东西,依赖EL
  * 使用jstl需要导入jstl.jar、standard.jar
  * 四大库:
    > core:核心库,重点
    > fmt:格式化:日期、数字
    > sql:过时
    > xml:过时
2. 导入标签库
  * jar包
  * 在jsp页面中:<%@taglib prefix="前缀" uri="路径"%>
----------------------
core --> c标签
1. out和set
  * <c:out>:输出
    > value:可以是字符串常量,也可以是EL表达式
    > default:当要输出的内容为null时,会输出default指定的值
    > escapeXml:默认值为true,表示转义!
  * <c:set>:设置(创建域的属性)
    > var:变量名
    > value:变量值,可以是EL表达式
    > scope:域,默认为page,可选值:page、request、session、application
2. remove
  * <remove>:删除域变量
    > var:变量名
    > scope:如果不给出scope,表示删除所有域中的该名称的变量;如果指定了域,那么只删除该域的变量。
3. url
  * value:指定一个路径!它会在路径前面自动添加项目名。
    <> <c:url value="/index.jsp"/>,它会输出/day13_1/index.jsp
  * 子标签:<c:param>,用来给url后面添加参数,例如:
    <c:url value="/index.jsp">
      <c:param name="username" value="张三"/>  <!--可以对参数进行url编码!!-->
    </c:url>
    结果为:/day13_1/index.jsp?username=%ED%2C%3F%ED%2C%3F
  * var:指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成url保存到域中。
  * scope:它与var一起使用,用来保存url。
4. if:对应java中的if语句
  * <c:if test="布尔类型">...</c:if>,当test为值时,执行标签体内容!
5. choose:它对应java中的if/else if/ ... /else
  * 例如:
    <c:choose>
      <c:when test="">...</c:when>
      <c:when test="">...</c:when>
      <c:when test="">...</c:when>
       ... 
      <c:otherwise> ...</c:otherwise>
    </c:choose>
 
    等同与
    if(...) {
    } else if( ....) {
    } else if( ....) {
    } else if( ....) {
    } ...
    else { ...}
6. forEach
  它用来循环遍历数组、集合!
  它还可以用来计数方式来循环!
  计数方式:
  for(int i = 1; i <= 10; i++) {
    ...
  }
  <c:forEach var="i" begin="1" end="10">
    ${i}
  </c:forEach>
  属性:
    * var:循环变量
    * begin:设置循环变量从几开始。
    * end:设置循环变量到几结束。
    * step:设置步长!等同与java中的i++,或i+=2。step默认为1
----------------------
用来输出数组、集合!
<c:forEach items="${strs }" var="str">
 ${str }<br/>
</c:forEach>
等同于
for(String str : strs) {
  ...
}
属性:
* items:指定要循环谁,它可以是一个数组或一个集合
* var:把数组或集合中的每个元素赋值给var指定的变量。
----------------------
循环状态
可以使用varStatus来创建循环状态变量!
循环状态变量有如下属性:
  * count:循环元素的个数
  * index:循环元素的下标
  * first:是否为第一个元素
  * last:是否为最后一个元素
  * current:当前元素
<c:forEach items="${list }" var="ele" varStatus="vs">
${vs.index} ${vs.count } ${vs.first } ${vs.last } ${vs.current }<br/>
</c:forEach>
====================================
fmt库
  它是格式化库
<fmt:formatDate value="" pattern="">
value:指定一个Date类型的变量
pattern:用来指定输出的模板!例如:yyyy-MM-dd HH:mm:ss
--------------
<fmt:formatNumber value="${num1}" pattern="0.00">
  保留小数点后2位,它会四舍五入。如果不足2位,以0补位。
<fmt:formatNumber value="${num1}" pattern="#.##">
  保留小数点后2位,它会四舍五入。如果不足2位,不补位。
====================================
自定义标签
1. 步骤
  * 标签处理类(标签也是一个对象,那么就需要先有类!)
  * tld文件,它是一个xml
  * 页面中使用<%@taglib%>来指定tld文件的位置
2. 标签处理类
  SimpleTag接口:
  * void doTag():每次执行标签时都会调用这个方法;
  * JspTag getParent():返回父标签(非生命周期方法)
  * void setParent(JspTag):设置父标签
  * void setJspBody(JspFragment):设置标签体
  * void seetJspContext(JspContext):设置jsp上下文对象,它儿子是PageContext
  其中doTag()会在其他三个方法之后被tomcat调用。
3. 配置tld文件
tld文件一般都放到WEB-INF之下,这样保证客户端访问不到!
  <tag>
  
<name>myTag1</name> 指定当前标签的名称
  
<tag-class>cn.itcast.tag.MyTag1</tag-class> 指定当前标签的标签处理类!
  
<body-content>empty</body-content> 指定标签体的类型,我们这里使用的是空标签!
  </tag>
4. 页面中指定tld文件位置
<%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast-tag.tld" %>
导标签库,就是为页面指定tld文件的位置!
-------------------------------
标签体内容<body-content>
  * empty:无标签体!
  * JSP:jsp2.0已经不在支持这个类型了!表示标签体内容可以是:java脚本,可以是标签,可以是el表达式
  * scriptless:只能是EL表达式,也可以是其他的标签!
  * tagdependent:标签体内容不会被执行,而是直接赋值标签处理类!
不在执行标签下面内容的标签!
在标签处理类中的doTag()中使用SkipPageException来结束!
  Tomcat会调用标签处理类的doTag()方法,然后Tomcat会得到SkipPageException,它会跳过本页面其他内容!
--------------------------------
标签属性<attribute>
步骤:
1. 给你的标签处理类添加属性!
  为标签处理类添加属性,属性至少要且一个set方法!这个set方法会在doTag()方法之前被tomcat执行!所在doTag()中就可以使用属性了。
2. 在tld文件中对属性进行配置
  
<attribute>
  
<name>test</name> 指定属性名
  
<required>true</required> 指定属性是否为必需的
  
<rtexprvalue>true</rtexprvalue> 指定属性是否可以使用EL
  
</attribute>
==========================================

JavaWeb笔记——JSTL标签的更多相关文章

  1. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  2. JavaWeb之JSTL标签

    JSP中有了EL可以很方便的引用对象和属性,但是也有一些不足的地方,比如不能遍历对象列表这些,再加上JSTL(Java Standard Tag Library)的话那就完美了.JSTL主要包括cor ...

  3. 【JavaWeb】JSTL标签库

    JSTL标签库 JSTL标准标签库: JSTL用于简化JSP开发,提高代码的可读性与可维护性: JSTL由SUN(Oracle)定义规范,由Apache Tomcat团队实现: 引用JSTL核心库 核 ...

  4. JavaWeb 之 JSTL 标签

    JSTL 标签库 一.概述 1.概念 JSTL : JavaServer Pages Tag Library  JSP标准标签库. 是由 Apache 组织提供的开源的免费的 jsp 标签. 2.作用 ...

  5. 【JavaWeb】JSTL 标签库

    JSTL 标签库 简介 JSTL(JSP Standard Tag Library),即 JSP 标准标签库.标签库是为了替换代码脚本,使得整个 jsp 页面变得更加简洁. JSTL 有五个功能不同的 ...

  6. JavaWeb学习----JSTL标签库

    一.JSTL简介: JSTL全名为JavaServer Pages Standard Tag Library,中文名称为JSP标准标签函数库,目前最新的版本为1.2.JSTL是由JCP(Java Co ...

  7. IT兄弟连 JavaWeb教程 JSTL标签的使用

    假定甲方打算使用乙方开发的标签库,乙方把与标签库相关的所有文件打包成为了一个JAR文件(假定名为standard.jar),在这个JAR文件中包含以下内容: ●  标签处理类及相关的.class文件 ...

  8. [jsp学习笔记]jstl标签的使用

    jstl常用在html嵌套 <body> <% session.setAttribute("q", "yushi"); request.set ...

  9. 超全面的JavaWeb笔记day13<JSTL&自定义标签>

    1.JSTL标签库(重点) core out set remove url if choose when otherwise forEach fmt formatDate formatNumber 2 ...

随机推荐

  1. UIStepper swift

    // // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...

  2. Android -- Webview自适应屏幕

    第一种                                                                                          WebSett ...

  3. android 开发对gif解码(适配android 4.2、4.3、4.4版本)

    android 开发对gif解码(适配android 4.2.4.3.4.4版本) 使用方法: public class ImageInputActivity extends Activity imp ...

  4. python 数据结构-字典

    原文地址:http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 理解字典的最佳方式是把它看做无序的键: 值 ...

  5. maven插件:tomcat插件和jetty插件的区别

    在程序是多模块结构的时候,使用tomcat的maven插件和jetty的maven插件有细微差别: 1.tomcat7-maven-plugin   可以直接在parent的邮件直接运行:tomcat ...

  6. 【BZOJ】【1025】【SCOI2009】游戏

    DP/整数拆分 整个映射关系可以分解成几个循环(置换群的预备知识?),那么总行数就等于各个循环长度的最小公倍数+1(因为有个第一行的1~N).那么有多少种可能的排数就等于问有多少种可能的最小公倍数. ...

  7. Hdu 1010 Tempter of the Bone 分类: Translation Mode 2014-08-04 16:11 82人阅读 评论(0) 收藏

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. Hadoop伪分布模式配置

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 请先按照上一篇文章H ...

  9. Sqli-labs less 42

    Less-42 Update更新数据后,经过mysql_real_escape_string()处理后的数据,存入到数据库当中后不会发生变化.在select调用的时候才能发挥作用.所以不用考虑在更新密 ...

  10. *args和**kw魔法参数

    学Python挺久了,现在才搞懂这个还是有点惭愧 *args:传入元组,无关键字 **kw:传入字典,有关键字 示例: *args **kw 一起使用时args的参数需在前: