您的位置:首页 > Web前端 > JavaScript

JSP:JSTL--JSP Standard TAG Library

2015-11-20 14:54 225 查看
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位,不补位!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: