首先,来介绍一下JSTL标签库
JSTL(jsp Standard Tog Libray,JSP标准标签库)标签库的使用是为了弥补HTML标签的不足,规范自定义标签的使用而诞生
jstl主要提供了5大类标签库,分别是:
一.核心标签库
1.为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作
2.核心标签库共有13个,从功能分为4类:
A.表达式控制标签:out标签,set标签,remove标签,catch标签
B.流程控制标签:if标签,choose标签,when标签,otherwise标签
C.循环标签:forEach标签,forTokens标签
D.URL操作标签:import标签,url标签,redirect标签
3.在JSP页面加入核心标签库的代码:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4.简单介绍一下13个核心标签的使用
1><c:out value="object" [escapeXml="true/false"] default="Object"/>
核心标签库中最为基本的标签就是<c:out>,他可以在页面中显示一个字符串或者一个EL表达式的值,其功能与JSP中的
<%=表达式%>类似
<c:out>中各属性的说明如下:
value:可以指定一个字符串作为输出的内容,也可以指定为EL表达式
escapeXml:类型为boolean,确定,<,>,&,',"等字符在结构的字符串中是否被转换成字符串实体代码,默认值是
true(就是是否按html中的样式进行输出,设置true就是按照字符串原样进行输出,false就是按
照html标识符进行输出)
default:默认值
示例:(1)<c:out value="Hello World"/>
<%
String name="Tom";
request.setAttribute("userName",name);
out.println("<br>");
%>
<c:out value="${userName}"></c:out>
(2)<c:out value="<B>hello world</B>"/><br>
<c:out value="<B>hello world</B>" escapeXml="false"></c:out><br>
<B> hello world <B><br>
<B> hello world!</B>
2><c:set var="varName" value="varValue" [scope="page|request|session|application"]></c:set>
set标签用来在某个范围(request,session或者application)内设置值,或者设置某个对象的属性值.
<c:set>中各属性的说明如下:
value:该属性指定变量或者对象中某个属性的值,并且可以是EL表达式
var:变量名称,value属性指定的值就保存在这个变量中
scope:设置变量的有效范围,如果不设定,默认为page
示例:(1)<c:set var="number" value="2"/>
<c:out value="number的值为:${number}"/><br>
<c:set var="number">2</c:set>
<c:out value="number的值为:${number}"/><br>
(2)<c:set var="userName" value="brain"/>
<c:set var="number" value="${1+1}"/>
<%
String userName=(String)pageContext.getAttribute("userName");
Long number=(Long)pageContext.getAttribute("number");
%>
<%=userName%>
<%=number%>
3><c:remove var="varName" [scope="page|request|session|application"]
remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性
<c:remove>中各属性的说明如下:
var:需要删除的变量或者对象属性的名称
scope:设置这个需要删除的变量的所在范围
示例:(1)<c:set var="number" value="${1+1}" scope="page"/>
<c:out value="${pageScope.number}" default="No NUmber"/><br>
<c:remove var="number" scope="page"/>
<c:out value="${pageScope.number}" default="TWO"/><br>
4><c:catch var="name">
容易产生异常的代码
</c:catch>
<c:out value="${name1.message}"/>
该标签用来吃力JSP页面中产生的异常,并存储异常信息
示例:
下面是使用JSTL标签进行错误捕捉:
<c:catch var="exception">
<%
out.println("10/0的高为:<br>");
out.println(10/0);
out.println("<br>");
%>
</c:catch>
下面是对异常进行处理:<br>
<c:out value="${exception.message}"></c:out>
5><c:if test="条件1" var="name" [scope="page|request|session|application"]/>
该标签同Java程序中的if作用相同
<c:if>中各属性的说明如下:
test:判断条件的表达式,返回条件为true或者false
var:这个变量用于保存test条件表达式判断所返回的true或者false值(if条件执行后所得到的boolean值将要保存在
var变量中)
scope:指定var变量所在的指定范围
示例:
<c:set var="number" value="3" scope="request"/>
<c:if test="${number==1}">
<c:out value="给定数字的值为1"></c:out>
</c:if>
<c:if test="${number==2}">
<c:out value="给定数字的值为2"></c:out>
</c:if>
<c:if test="${number==3}">
<c:out value="给定数字的值为3"></c:out>
</c:if>
6><c:choose>
<c:when>AAA</c:when>
<c:when>BBB</c:when>
<c:otherwise>CCC</c:otherwise>
</c:choose>
示例:
<c:set var="IDE" value="Eclipse"/>
<c:choose>
<c:when test="${IDE=='JBuilder'}">
<c:out value="你使用的工具是JBuilder"/>
</c:when>
<c:when test="${IDE=='Eclipse'}">
<c:out value="你使用的工具是Eclipse"/>
</c:when>
<c:when test="${IDE=='JCreator'}">
<c:out value="你是用的工具是JCreator"/>
</c:when>
<c:otherwise>
<c:out value="用记事本写代码"/>
</c:otherwise>
</c:choose>
7><c:forEach var="name" items="collection" varStatus="StatusName" begin="begin" end="end"
step="step">
具体内容
</c:forEach>
该标签根据循环条件遍历集合(Collection)中的元素
<c:forEach>中各属性的说明如下:
var:设置变量名,用于存储从集合中取出的元素
items:指定要遍历的集合
varStatus:设定变量名,该变量用于存放集合中元素的信息
begin end:用于指定遍历的起始位置和终止位置
step:指定循环的步长
循环标签属性说明:
名称 EL 类型 是否必须 默认值
var N String 是 无
items Y Arrays,Colleation,Iterator,Enumeration,Map,String[]args 是 无
begin Y int 否 0
end Y int 否 集合中最后一个元素
step Y int 否 1
varStatus N String 否 无
varStatus的四个状态:
属性名 类型 说明
index int 当前循环的索引值
count int 循环的次数
first boolean 表明当前这轮迭代是否为第一次迭代
last boolean 表明当前这轮迭代是否为最后一次迭代
示例:(1)<%
ArrayList list=new ArrayList();
for(int i=0;i<15;i++){
list.add(i,(i+1)*5);
}
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="current" varStatus="status" >
<c:out value="序号:"/>
<c:out value="${status.index}"/>
<c:out value="值:"/>
<c:out value="${current}"/><br>
</c:forEach>
8><c:forTokens items="stringOfTokens" delims="delimiters" var="varName"
[varStatus="varStatusName"] [begin="begin"][end="end"][step="step"]>
具体内容
</c:forTokens>
这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items属性来指定一个特定的字符串,然后通过
delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach
标签一样,forTokens标签也可以指定begin和end以及step属性值
<c:forTokens>中各属性的说明如下:
var:进行迭代的参数名称
items:指定的进行标签化的字符串
varStatus:每次迭代的状态信息
delims:使用这个属性指定的分隔符来分隔items指定的字符串
begin:开始迭代的位置
end:迭代结束的位置
step:迭代的步长
示例:
<%
String question="what*is*your*name*?";
request.setAttribute("question",question);
%>
<c:forTokens items="${question}" var="current" delims="*" varStatus="status">
第<c:out value="${status.count}"/>取出的单词为:
<c:out value="${count}"/><br>
</c:forTokens>
9>A.<c:Import url="url" [context="context"][value="value"][charEncoding="encoding"]
[scope="page|request|session|application"]/>
B.<c:import url="url"[context="context"][value="value"]var="name"/>
该标签可以把其他静态或动态文件包含在本JSP页面
与<jsp:include>的区别为:只能包含同一个web应用中的文件,而<c:import>可以包含其他web应用中的文件,甚至可以
包含网络上的资源
<c:import>中各属性的说明如下:
名称 说明 EL 类型 是否必须 默认值
url 被导入资源的URL路径 Y String Y 无
context 相同服务器下其他的web工程必须以"\" Y String N 无
var 以String类型存入被包含文件的内容 N String N 无
scope var变量的JSP范围 N String N page
charEncoding 导入文件的编码格式 Y String N 无
varReader 以Reader类型存储被包含文件内容 N String N 无
示例:
<c:import var="include" url="inc\content.txt" charEncoding="gb2312"/>
<c:out value="下面是引入的内容:"/><br>
<c:out value="${include}"></c:out>
10>A.<c:url value="value" [var="name"][context="context"]
[scope="page|request|session|application"]/>
B.<c:url value="value" [var="name"][scope="page|request|session|application"]/>
c.<c:url value="value" [var="name"][scope="page|request|session|application"]
[context="context"]>
<c:param name="参数名" value="值">
</c:url>
该标签用于动态生成一个String类型的URL,可以同时<c:redirect>标签共同使用,也可以使用HTML的<a>标签实现超链
接
<c:url>中各属性的说明如下:
value:将要处理的URL地址
context:当使用相对路径方法指定外部文件时,这个属性指定的是外在文件的名称
var:给这个URL地址起一个标识
scope:规定这个var属性所指定变量的有效范围
示例:
<c:url value="http://www.baidu.com"></c:url><br>
<a href="<c:url value='http://www.baidu.com'></c:url>">百度</a>
<c:url value="http://www.baidu.com">
<c:param name="pwd" value="java"/>
</c:url>
11><c:Redirect></Redirect>