关键字: JSTL
一.JSTL简介
JSTL全名为JSP Standard Tag Libaray(JSP标准标签函数库),目前最新的版本为
1.1,它是由JCP(Java Commnunity Process)制定的标准规范,提供给我们一个标准通用的
标签函数库.主要分为5大类:
(1)核心标签库(Core)
(2)I18N格式标签库(I18N-capable format tab libaray)
(3)SQL标签库(SQL tag libaray)
(4)XML标签库(XML tag libaray)
(5)函数标签库(Functions tag libaray)
二.使用JSTL的好处
Web程序员能供利用JSTL和EL来开发Web程序,取代传统直接的在页面上脚本的方式
(scriplet),提高程序的可读性,易如维护,和开发。使得在视图页面上基本不用使用
脚本代码的,从而页面设计人员和标签的功能开发人员分离,甚至页面设计人员不用学
习JSP脚本语言
三.前提条件:
JSTL1.1必须在Servlet2.4和JSP2.0以上的容器才能正常工作
下载JSTL1.1
地址:http://jakarta.apache.org/builds/jakata-tablibs/releases/standard/
MyEclipse5.1以后的版本自带了JSTL1.1
下载后把jstl.jar,standard.jar复制到你的web工程/WEB-INF/lib/目录下,还有这
些标签库描述文件:c-1_0-rt.tld,c-1_0.tld,c.tld等等
在jsp页面中添加
<%@ taglib uri=“uri” prefix=“prefix” %>
四.核心标签库(CTL)
功能表:
分类
功能分类
标签名称
Core
表达式操作
out、set、remove、catch
流程控制
if、choose、when、otherwise
迭代操作
forEach
forTokens
URL操作
import param
url param
redirect param
下面我们来具体看看:
* 表达式操作
1.< c:out value=“${value}” [escapeXml=“true | false”]
[default=“defaultvalue”] />
用途:页面写(出入)数据
属性:
value 显示得值,它是object类型,可以为EL
escapeXml 是否是使用转换符号,比如:< (<) 、 > ($gt)等等
default 设置默认值
2.< c:set>
< c:set value=“${value}” var=“unable-EL” scope=“unable-EL”
target=“${target}” property=“${property}” />
用途:变量设置
属性:
value
设置变量的值、Object类型
var
设置变量的名称、String类型、不能为EL表达式
scope
设置变量的范围、String类型、不能为EL表达式、默认值:page、
可为application,session,request
target
查找的JavaBean或java.util.Map对象,Object
property
targer指定的对象的属性
3.< c:remove>
< c:remove var=“variable” scope=“page | application | session
| request”/>
用途:变量容器去变量
属性(均不能为EL):
scope
变量存储的范围
var 为变量名称
4.< c:catch [var=“variable”] />
用途:捕捉异常
属性:
var :用类存储错误信息的变量
* 流程控制
1.< c:if test=“${value1 == value2}” var=“save_test_result” scope=“
application | request | ….” />
判断语句
属性:
test 为Boolean类型、逻辑表达式结果
var 为String类型,保存test的结果,为”true”|”false”
scope 为String类型、变量var的存储范围
2.< c:choose>
为< c:when>、< c:otherwise>的父标签
主题内容(BodyContent)
1或多个< c:when>
0或多个< c:otherwise>
例如:
< c:choose>
< c:when/>
< c:otherwise>
< c:when/>
< /c:choose>
3.< c:when>
用法和< c:if>差不多,但是它必须在< c:otherwise>之前(相当于if必须
在else之前)
属性:
test
和c:if test属性一样
4.< c:otherwise>
相当于else语句,当<c:when>的条件不成立时,运行其主题内容
比如:
< c:when test=“${user.role == “admin”}” >
< c:out value=“你好管理员先生:${user.name}”/>
< /c:when>
< c:otherwise >
<c:out value=“你好!”/>
< /c:otherwise>
* 迭代操作
1.< c:forEach var=“unable-el” item=“Collection” [varStatus=
“unable-el”] [begin=“begin-index”] [end=“end-index”] [step=“step-
length”]>
在Collection对象中迭代操作
属性:
var: 变量名称,String类型,不能为EL
Item:Collection对象, 可以为EL
varStatus:变量的成员信息,String类型,不能为EL
begin:迭代时候的变量开始位置,int类型,默认值:0
end:迭代时候的变量结束位置,int类型
step:为步长,int类型,默认值为1
2.< c:forTokens item=“StringTokens” delims=“delimiters” [var=
“variableName”] [varStatuts=“uanble-el”] [begin=“begin-index”] [end=
“end-index”] [step=“step-length”] >BodyContent< /c:forTokens>
从StringToken利用界定符号迭代
属性:
var: 变量名称,String类型,不能为EL
Item:String对象,多为正则表达式, 可以为EL
varStatus:变量的成员信息,String类型,不能为EL
begin:迭代时候的变量开始位置,int类型,默认值:0
end:迭代时候的变量结束位置,int类型
step:为步长,int类型,默认值为1
* URL操作
1.BodyContent
用于把其他静态或动态的文件包含至本身的JSP页面。又区别于,他不但能够包含自身web
应用程序的文件,还能够
包含不同的web应用程序的的文件。
属性
uri 文件包含的地址 String类型
context 在相同容器下,不同的web站台必须”/”开头,String类型
var: 变量名称,存储文件中的内容,String类型,不能为EL
scope 为String类型、变量var的存储范围,不能为EL
charEncoding 文件内容的编码
String类型
varReader 以Reader对象的形式存储文件中的内容,不能为EL
2.< c:param name=“${name}” value=“${param.name}” />
请求中的参数
属性:
name : 参数名称 ,String类型
value : 对应参数的值
比如:
< c:import url=“www.xxxx.com “ >
<c:param name=“name” value=“yourname” />
< /c:import >
等同于:
http://www.xxxx.com?name=yourname
3.< c:url value=“${value}” [context=“${context}”] [var=“varName
”] [scope=“application | request”] />
产生一个url,其中主题内容必须文
属性:
value url地址 String类型
context 在相同容器下,不同的web站台必须”/”开头,String类型
var: 变量名称,存储文件中的内容,String类型,不能为EL
scope 为String类型、变量var的存储范围,不能为EL
比如:
< img src=“<c:url value=‘www.xxxx.com’ >< c:param name=‘picture’
value=‘picName’/></c:url>” />
< img src=“www.xxxx.com/?pictue=picName” />
4.< c:redirect url=“${url}” [context=“${context}”] />
从定向到url
属性:
uri 文件包含的地址 String类型
context 在相同容器下,不同的web站台必须”/”开头,String类型
比如:
< c:redirect url=“<c:url value=‘www.xxxx.com’>< c:param name=‘
paramName’ value=‘paramName’ /></c:url>” context=“/contextName” />
等同< c:redirect url=“< c:url value=‘www.xxxx.com’ /></c:url>”
context=“/contextName” >< c:param name=“paramName” value=‘paramValue’
/></c:redirect>
1.1,它是由JCP(Java Commnunity Process)制定的标准规范,提供给我们一个标准通用的
标签函数库.主要分为5大类:
二.使用JSTL的好处
(scriplet),提高程序的可读性,易如维护,和开发。使得在视图页面上基本不用使用
脚本代码的,从而页面设计人员和标签的功能开发人员分离,甚至页面设计人员不用学
习JSP脚本语言
三.前提条件:
些标签库描述文件:c-1_0-rt.tld,c-1_0.tld,c.tld等等
四.核心标签库(CTL)
功能表:
分类
功能分类
标签名称
Core
表达式操作
out、set、remove、catch
流程控制
if、choose、when、otherwise
迭代操作
forEach
forTokens
URL操作
import param
url param
redirect param
下面我们来具体看看:
[default=“defaultvalue”] />
target=“${target}”
可为application,session,request
| request”/>
application | request | ….” />
在else之前)
“unable-el”] [begin=“begin-index”] [end=“end-index”] [step=“step-
length”]>
“variableName”] [varStatuts=“uanble-el”] [begin=“begin-index”] [end=
“end-index”] [step=“step-length”] >BodyContent< /c:forTokens>
用于把其他静态或动态的文件包含至本身的JSP页面。又区别于,他不但能够包含自身web
应用程序的文件,还能够
”] [scope=“application | request”] />
value=‘picName’/></c:url>” />
< img src=“www.xxxx.com/?pictue=picName” />
paramName’ value=‘paramName’ /></c:url>” context=“/contextName” />
context=“/contextName” >< c:param name=“paramName” value=‘paramValue’
/></c:redirect>