JSTL标签库学习.docx
《JSTL标签库学习.docx》由会员分享,可在线阅读,更多相关《JSTL标签库学习.docx(24页珍藏版)》请在冰点文库上搜索。
JSTL标签库学习
JSP标准标签库
1.JSTL简介
JSTL全名JspServerPagesStanddardTagLibrary(Jsp标准标签库),它是sun公司发布的一个针对JSP开发的新组件,它允许使用标签开发Jsp页面.
JSTL是一个标准的已制定好的标签库,它可以应用到很多领域.如:
基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。
JSTL所提供的标签库主要分为五大类:
JSTL
前置名称
URI
范例
核心标签库
c
out>
I18N格式标签库
fmt
formatDate>
SQL标签库
sql
query>
XML标签库
Xml
forEach>
函数标签库
fn
split>
2.核心标签库
功能分类
标签名称
表达式操作
out、set、remove、catch
流程控制
if、choose、when、otherwise
迭代操作
forEach、forTokens
URL操作
import、param、url、redirect
2.1out>
功能:
out>主要用来显示数据的内容
属性列表:
名称
说明
必须
默认值
value
需要显示出来的值
是
无
default
如果value的值为null,则显示default的值
否
无
escapeXml
是否转换特殊字符,如:
<转换成<
否
true
实例:
使用核心标签库,并输出数据
步骤一:
将标签库中所有的.jar包(内部是所有的标签处理器)放到/WEB_INF/lib下,将所有的.tld(内部是所有的标签库描述)放到/WEB-INF/tlds下
步骤二:
在Jsp页面中引用核心标签(c_out.jsp)
<%@pagecontentType="text/html;charset=gbk"language="java"%>
<%@tagliburi="prefix="c"%>
<%--default的两种使用方式--%>
<%--如果在uri中输入参数name=jgl,则显示输入的value中的值,否则显示默认信息(default)--%>
outvalue="${param.name}"default="welecomejgltomywebsite!
"/>
outvalue="${param.name}">welecomejgltomywebsite!
out>
<%--value属性是必添的,escapeXml属性是true时,不解析特殊字符,false时,解析特殊字符--%>
outvalue="${param.name}"ecapeXml="false"><c:
out>
out>
2.2set>
功能:
set>主要用来将变量存储至JSP范围中或是JavaBean的属性或Map对象中。
属性列表:
名称
说明
必须
默认值
value
要被存储的值
否
无
var
欲存入的变量名称
否
无
scope
var变量的JSP范围
否
page
target
JavaBean或Map对象
否
无
property
指定target对象的属性
否
无
实例1:
将变量设置到Jsp范围内,并输出
<%--将变量定义在Jsp范围内--%>
<%--value属性的两钟使用方式--%>
setvar="username"value="jack"scope="session"/>
setvar="pwd"scope="session">000
set>
<%--通过el表达式语言输出--%>
${sessionScope.username}
${sessionScope.pwd}
<%--通过jstl中out>标签输出--%>
outvalue="${sessionScope.username}"/>
实例2:
将变量设置到javaBean对象内,并输出
useBeanid="stu"class="net.pcedu.student"/>
<%--通过set>标签给javaBean对象的age属性设值--%>
setvalue="16"target="${stu}"property="age"/>
<%--输出javaBean对象的属性值--%>
年龄:
outvalue="${stu.age}"/>
2.3remove>
功能:
主要负责移除变量
属性列表:
名称
说明
必须
默认值
var
欲移出的变量名称
是
无
scope
Var变量的JSP范围
否
page
如:
removevar="username"scope="session"/>
${sessionScope.username}—输不出结果
2.4catch>
功能:
主要用于捕获异常
属性列表:
名称
说明
必须
默认值
var
用来储存错误信息的变量
否
无
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%--捕获异常,并将异常信息存储在var变量中--%>
catchvar="myexp">
<%
inti=0;
intj=3/0;
%>
catch>
异常
outvalue="${myexp}">
out><%--输出异常--%>
异常信息
outvalue="${myexp.message}"/><%--获取异常信息--%>
引起原因
outvalue="${myexp.cause}"/><%--获取引起异常的原因--%>
2.5if>
功能:
主要用于进行if判断,如果为true,则输出标签体中的内容
名称
说明
必须
默认值
test
如果表达式的结果为true,则执行体内容,false则相反
是
无
var
用来存储test运算的结果(true或false)
否
无
scope
Var变量的JSP范围
否
page
实例:
利用set>标签设置javaBean的属性age,在jsp页面中获取age,如果age<18,输出相应信息
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%--jsp页面默认是true,EL表达式被忽略--%>
<%@pageisELIgnored="false"%>
<%--定义一个javaBean对象--%>
useBeanid="stu"class="net.pcedu.student"/>
<%--通过set>标签给javaBean对象的age属性设值--%>
setvalue="16"target="${stu}"property="age"/>
<%--输出javaBean对象的属性值--%>
年龄:
outvalue="${stu.age}"/>
<%--当if判断为true时,输出标签体的内容--%>
iftest="${stu.age<18}"var="young"scope="session">对不起,未成年,不能访问这个网站...
if>
<%--输出if语句的判断结果--%>
判断结果:
outvalue="${sessionScope.young}"/>
2.6choose>,when>,otherwise>
when>中属性列表:
名称
说明
必须
默认值
test
如果表达式的结果为true,则执行本体内容,false则相反
是
无
实例:
从javaBean中获取color属性,并根据不同的属性值显示不同的颜色
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%@pageisELIgnored="false"%>
<%--定义一个Color对象--%>
useBeanid="c"class="net.pcedu.Color"/>
<%--为Color对象设置属性--%>
setvalue="blue"target="${c}"property="color"/>
<%--获取Color对象的属性值,并根据不同的属性值显示不同的颜色--%>
outvalue="${c.color}">
out>
choose>
whentest="${c.coloreq'red'}">
你选择的颜色是:
outvalue="${c.color}"/>
when>
whentest="${c.coloreq'blue'}">
你选择的颜色是:
outvalue="${c.color}"/>
when>
otherwise>
你选择的颜色是:
outvalue="${c.color}"/>
otherwise>
choose>
2.7forEach>
功能:
forEach>为循环控制,它可以将数组,集合(Collection)中的成员循序浏览一遍。
属性列表:
名称
说明
必须
默认值
var
用来存放现在指定的成员
否
无
items
被迭代的集合对象
否
无
varStatus
用来存放现在指的相关成员信息
否
无
begin
开始的位置
否
0
end
结束的位置
否
最后一个成员
step
每次迭代的间隔数
否
1
实例:
<%@pagecontentType="text/html;charset=gbk"%>
<%@tagliburi="prefix="c"%>
<%@pageimport="java.util.*,net.pcedu.core.UserInfo"%>
<%--将javabean对象存放到集合中--%>
<%
Listusers=newArrayList();
for(inti=0;i<5;i++)
{
UserInfou=newUserInfo();
u.setName("jack-"+i);
u.setPwd("00"+i);
users.add(u);
session.setAttribute("users",users);
}
%>
<%--注意:
EL中只可通过11个隐含对象来输出表达式中的内容(因此直接将List对象添加到EL表达式中不可用)--%>
<%--通过forEach>迭代出集合中的信息>--%>
用户信息
用户名 | 密码 | 当前行的索引 | 已遍历的行数 | 是否第一行 | 是否最后一行 |
---|
forEachvar="user"items="${users}"varStatus="status"><%--加上begin="1"end="3"step="1"属性,将只显示前三条记录--%>
outvalue="${user.name}"/> | outvalue="${user.pwd}"/> | outvalue="${status.index}"/> | <%--输出当前行的索引号--%>outvalue="${status.count}"/> | <%--输出已遍历的行数--%>outvalue="${status.first}"/> | <%--输出当前行是否是第一行--%>outvalue="${status.last}"/> | <%--输出当前行是否是最后一行--%>
forEach>
<%--通过forEach>输出从1到10的数据--%>
forEachvar="num"begin="1"end="10"step="2">
outvalue="->${num}">
out>
forEach>
<%--通过forEach>遍历数组,枚举,集合等--%>
<%
int[]intarr=newint[]{10,20,30,40,50};
String[]strarr=newString[]{"I","am","a","handsome","boy"};
Vectorv=newVector();
v.add("This");
v.add("is");
v.add("a");
v.add("Enumeration");
v.add("example");
Enumeratione=v.elements();
HashMaph=newHashMap();
h.put("hello","0");
h.put("hello1","1");
h.put("hello2","2");
h.put("hello3","3");
h.put("hello4","4");
request.setAttribute("intarr",intarr);
request.setAttribute("strarr",strarr);
request.setAttribute("e",e);
request.setAttribute("h",h);
%>
--遍历整形数组--
<%--遍历整形数组--%>
forEachvar="i"items="${intarr}">
outvalue="${i}">
out>
forEach>
--遍历字符串数组--
<%--遍历字符串数组--%>
forEachvar="s"items="${strarr}">
outvalue="${s}">
out>
forEach>
--遍历枚举--
<%--遍历枚举--%>
forEachvar="ee"items="${e}">
outvalue="${ee}">
out>
forEach>
--遍历HashMap--
<%--遍历HashMap--%>
forEachvar="hh"items="${h}">
outvalue="${hh.key}"/>=outvalue="${hh.value}"/>
forEach>
2.8forTokens>
功能:
将字符串以指定的一个或多个字符分割开来
属性列表
名称
说明
必须
默认值
var
用来存放现在的成员
否
无
items
被迭代的字符串
是
无
delims
定义用来分割字符串的字符
是
无
varStatus
用来存放现在指定的相关成员信息
否
无
begin
开始位置
否
0
end
结束位置
否
最后一个成员
step
每次迭代的间隔数
否
1
实例:
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%--通过一个分割符将字符串划分为数组,并遍历出来--%>
forTokensvar="ele"items="blue,red,green|yellow|pink,black|white"delims="|">
outvalue="${ele}"/>||
forTokens>
<%--通过多个分割符将字符串划分问数组,并遍历出来--%>
forTokensvar="ele"items="blue,red!
green|yellow;pink;black|white"delims="|;,!
">
outvalue="${ele}"/>||
forTokens>
2.9import>
功能:
import>可以把其他静态或动态文件包含至本身JSP网页。
属性列表:
名称
说明
必须
默认值
url
文件被包含的地址
是
无
context
相同容器下,其它web必须以“/”开头
否
无
var
储存被包含文件的内容
否
无
scope
var变量的JSP范围
否
page
charEncoding
被包含文件内容的编码格式
否
无
varReader
储存被包含的文件的内容
否
无
注意:
import>与include>的区别
include>只能包含和自己同一个Web应用程序下的文件;而import>除了能包含和自己同一个Web应用程序的文件外,亦可以包含不同Web应程序或者是其它网站的文件。
实例:
包含同一个web应用程序的文件和不同webweb应用程序的文件
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%--引入绝对路径的文件--%>
<%--注意:
被引入的文件将被解析为html的形式嵌入引用文件--%>
引入绝对路径的文件
importurl="http:
//127.0.0.1:
8080/test/c_beimported.jsp"var="file"charEncoding="gbk"/>
outvalue="${file}">
out>
<%--引入相对路径的文件--%>
引入相对路径的文件
importurl="c_beimported.jsp"var="f"/>
outvalue="${f}">
out>
<%--传递参数到被引入文件--%>
传递参数到被引入文件
importurl="c_beimported.jsp"var="ff">
paramname="name"value="jack"/>
import>
outvalue="${ff}">
out>
2.10.url>
功能:
url>主要用来产生一个URL
名称
说明
必须
默认值
value
执行的URL
是
无
context
相同容器下,必须以“/”开头
否
无
var
储存被包含文件的内容
否
无
scope
var变量的JSP范围
否
page
实例:
将一个url存放到一个变量中,并输出url
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%--将一个url存放到一个变量中,并输出url--%>
urlvar="myurl"value="c_beimported.jsp"scope="session">
paramname="name"value="jgl"/>
url>
outvalue="${myurl}"/>
2.11redirect>
功能:
redirect>可以将客户端的请求从一个JSP网页导向到其它文件。
属性列表:
名称
说明
必须
默认值
url
导向的目标地址
是
无
context
相同容器下,必须以“/”开头
否
无
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%--通过url>获得url--%>
urlvalue="c