JSP:JSTL--JSP Standard TAG Library

1. jstl的概述
  * apache出品,依赖EL
  * 使用jstl需要导入jstl1.2.jar
  * 四大库:
    > core:核心库,重点
    > fmt:格式化:日期、数字

    > sql:过时

    > xml:过时

2. 导入标签库
  * jar包
  * 在jsp页面中:<%@taglib prefix="前缀" uri="路径"%>

3.core --> c标签!

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

out和set、remove

属性名

是否支持EL

属性类型

属 性 描 述

Value

true

Object

指定要输出的内容

escapeXml

true

Boolean

指定是否将>、<、&、'、" 等特殊字符进行HTML编码转换后再进行输出。默认值为true

default

true

Object

指定如果value属性的值为null时所输出的默认值


  * <c:out>:输出
    > value:可以是字符串常量,也可以是EL表达式
    > default:当要输出的内容为null时,会输出default指定的值
    > escapeXml:默认值为true,表示转义!

* <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:set>:设置(创建域的属性)

<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。

属性名

是否支持EL

属性类型

属 性 描 述

value

true

Object

用于指定属性值

var

false

String

用于指定要设置的Web域属性的名称

scope

false

String

用于指定属性所在的Web域

target

true

Object

用于指定要设置属性的对象,这个对象必须是JavaBean对象或java.util.Map对象

property

true

string

用于指定当前要为对象设置的属性名称


    > var:变量名
    > value:变量值,可以是EL表达式
    > scope:域,默认为page,可选值:page、request、session、application
* <c:set var="a" value="hello"/> 创建名为a,值为hello的域属性,范围:page
* <c:set var="a" value="hello" scope="session"/> 范围为session2. remove

  * <remove>:删除域变量
    > var:变量名
    > scope:如果不给出scope,表示删除所有域中的该名称的变量;如果指定了域,那么只删除该域的变量。

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

url

<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面

属性名

是否支持EL

属性类型

属 性 描 述

value

true

String

指定要构造的URL

Context

true

String

当要使用相对路径导入同一个服务器下的其他WEB应用程序中的URL地址时,context属性指定其他WEB应用程序的名称

var

false

String

指定将构造出的URL结果保存到Web域中的属性名称

scope

false

String

指定将构造出的URL结果保存到哪个Web域中


  * 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。

* <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/>

 if:对应java中的if语句

<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达式 

<c:if var="aaa" test="${user==null}" scope="page"></c:if>

 

属性名

是否支持EL

属性类型

属 性 描 述

test

true

boolean

决定是否处理标签体中的内容的条件表达式

var

false

String

用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称

scope

false

String

指定将test属性的执行结果保存到哪个Web域中


  * <c:if test="布尔类型">...</c:if>,当test为值时,执行标签体内容!

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

 choose:它对应java中的if/else if/ ... /else  *

<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。

使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “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 { ...}


forEach

<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。

属性名

是否支持EL

属性类型

属 性 描 述

var

false

String

指定将当前迭代到的元素保存到page这个Web域中的属性名称

items

true

任何支持的类型

将要迭代的集合对象

varStatus

false

String

指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称,是第几次接待

begin

true

int

如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代

end

true

int

参看begin属性的描述

step

true

int

指定迭代的步长,即迭代因子的迭代增量


  它用来循环遍历数组、集合!
  它还可以用来计数方式来循环!

  计数方式:

  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>

c:param标签

在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。


4.fmt标签

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位,不补位!


阅读更多
个人分类: JavaEE
上一篇JSP:JSP中的EL表达式
下一篇JSP:自定义标签的实现步骤及小例
想对作者说点什么? 我来说一句

JSTL_EN

2007年07月05日 2.25MB 下载

jsp标签库jstl入门教程

2008年10月27日 72KB 下载

jstl学习资料jstl学习资料

2009年01月08日 8.78MB 下载

jstl.jar (JSP Standard Tag Library)

2010年10月09日 21KB 下载

jstl标签详解

2012年02月13日 33KB 下载

使用jstl需要的jar包

2017年11月09日 356KB 下载

jstl.jar和standard.jar

2018年03月21日 352KB 下载

没有更多推荐了,返回首页

关闭
关闭