SpringMVC学习之JSTL(JSP标准标签库)一

时间:2022-11-16 14:45:55

1.JSTL库

官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

jakarta-taglibs-standard-1.1.2.tar.gz    

JSTL是标准标签库,它是通过多个标签库来暴露其行为的,JSTL1.2中可以分为5类区域:

core:核心标签库,我们学习的重点;URL:http://java.sun.com/jsp/jstl/core  前缀 :c

fmt:格式化标签库,只需要学习两个标签即可;URL:http://java.sun.com/jsp/jstl/fmt    前缀 :fmt

fn:   函数标签库,集合长度,字符串操作    URL:http://java.sun.com/jsp/jstl/fn    前缀 :fn

sql:数据库标签库,  URL:http://java.sun.com/jsp/jstl/sql  前缀 :sql

xml: XML标签库,  URL:http://java.sun.com/jsp/jstl/xml  前缀 :x

在JSP页面中使用JSTL库,必须通过以下格式的taglib命令:

<%@ taglib uri="uri"  prefix="prefix" %>  prefix为前缀,可以任意, 但建议使用预定的前缀,以便其他人能理解


PS:以下讨论的属性中,属性名称加* 表示该属性是必需的,加号(+)表示该是的rtexprvalue为True的时候,该属性可以赋静态字符串或者动态值(Java表达式,EL表达式) ,但是为false时,表示该属性只能赋静态字符串的值


2.一般行为(Core 中用来操作有界变量的3个一般行为:out,set ,remove)

1) out标签,out实在运算表达式时,是将结果输出到当前的JspWriter,out的语法有两种,即有body content 和没有 body content,

<c:out value="value"  [escapeXml= "{true|false} " ]    [default =" defaultValue" ] />  //[]表示为可选属性

<c:out value="value"  [escapeXml= "{true|false} " ] > default value </c:out>

out标签的属性:              

属性 类型 描述
   value*+ 对象 要计算的表达式
escapeXml+ 布尔 表示结果中的字符< > & '   " 等转化为相应的实体码
default+ 对象 默认值

default可以赋一个默认值,当value中的EL表达式返回null时,就会显示默认值.default可以赋动态值

2)set标签

功能: a.创建一个字符串和一个引用该字符串的有界变量

         b.创建一个引用现存有界对象的有界变量

         c.设置有界对象的属性

用set设置有界变量,在该标签出现后的整个JSP页面都可以使用该变量 ,有四种形式:

a.用于创建一个有界变量,在value中定义一个现存有界对象或要创建的字符串

<c:set value="value" var="varName" [scope="{page|request|session|application}"]    />  //scope 指定有界变量的范围

<c:set var ="job"  value="${requestScope.position}" scope="page" />

b.和a相似,只是要创建的字符串或要引用的有界对象作为body content赋值

<c:set  var="varName" [scope="{page|request|session|application}"]    >body content </c:set>//body content中允许有JSP代码

c.设置有界对象的属性值,target属性定义有界对象,property 定义对象的属性 ,通过value赋值

<c:set target="target" property="propertyName" value="value" />

d.和c类似,通过bodycontent赋值

<c:set target="target" property="propertyName">body content</c:set>

<c:set target="${address}" property="city" />beijing</c:set>//给有界对象address的city属性赋值beijing

set属性:

属性 类型 描述
value+ 对象 要创建的字符串,或者要引用的有界对象,或者新的属性值
var 字符串 要创建的有界对象
scope 字符串 新创建的有界变量的范围
target+ 对象 其属性要被赋新值的有界对象,一定是一个JavaBeans实例或者java.util.Map对象
property+ 字符串 要被赋新值的属性名称

3)remove标签

用于删除有界变量

<c:remove var = "varName" [scope="{page|request|session|application}"] />

PS:有界变量引用的对象不能删除.

remove属性:

属性 类型 描述
var 字符串 要删除的有界变量的名称
scope 字符串 要删除的有界变量的范围