核心标签库主要用来完成JSP页面的常用功能,减少内嵌代码量。其中JSTL核心标签库包含表达式标签,条件标签,循环标签和URL操作4类。
使用JSTL核心标签之前必须在JSP首行使用使用指令taglib来包含JSTL库:<%@ taglib
Prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %> 其它标签库的引入类似。
【1】表达式标签
<c:out>输出标签主要用于将表达式的值输出到JSP页面当中,该标签可以代替JSP表达式<%=表达式%>,<c:out>有以下两种标签格式,有标签体和没有标签体。没有标签体语法格式如:<c:out value=”expression” [escapeXML=”true|false”] [defaultValue=”defaultValue”] /> 有标签体的语法如:<c:out value=”expression” [escapeXML=”true|false”] >defaultValue</c:out>
Value:是一个Object对象,用于要指定的变量或表达式;
escapeXML:是一个boolean值,用于指定是否转换特殊字符,默认为true,表示转换defaultValue:是一个Object对象,用于指定value属性值等于null值时,显示的默认值。
<c:set>设置标签用于在指定范围(page,request,session,application)内定义保存某个变量或者指定对象设置属性值。使用这个标签就可以在页面中定义变量,而不用在JSP页面中嵌入打乱HTML结构的Java代码。用于设置变量的标签语法:<c:set value=”value” var=”name”
[scope=”request|page|session|application] /> 用于设置对象的标签语法:<c:set value=”value”
Target=”object” property=”propName” />
Value:是一个Object对象,用于指定变量值
var:是一个String对象,用于指定变量名
Target:是一个Object对象,用于指定目标对象,可以是JavaBean和Map集合对象
property:是一个String对象,用于指定目标对象存储数据的属性名
scope:是一个String对象,用于指定变量作用域,默认值是页面(page)
<c:remove>标签可以从指定的JSP范围内移除指定的变量,语法如:<c:remove var=”name”
[scope=”request|page|session|application] />
Var:用于指定要移除的变量名称
Scope:用于指定变量的存在范围,默认值是页面(page)。
<c:catch>标签用于捕捉异常,还能将异常信息保存在指定的变量中,用一个例来说明这个标签的使用:
<c:catch var="exception">
<%
int number=Integer.parseInt(request.getParameter("number"));
out.println("合计金额为:"+0.8*number);
%>
</c:catch>
<c:out value="${exception}"/>
【2】条件标签
<c:if>标签可以根据不同的条件处理不同的业务,执行不同的代码。相对于Java代码当中的IF语句。语法如下:
<c:if test=”condition” var=”name” [scope=”request|page|session|application] />(无标签主体格式)。Test:是boolean类型,并且是必选属性用于指定条件表达式,可以引用EL表达式
Var:是String类型,指定存储判断结果的变量,如果不存在就创建。不可以引用EL表达式。
<c:chose> <c:when> <c:otherwise>标签组结构来完成条件选择逻辑,根据不同条件选择不同的代码来完成不同的业务功能。语法如下:
<c:choose>
<c:when test=”condition”>
</c:when>
....<!--多个<c:when>标签-->
<c:otherwise>
</c:otherwise> <!--默认逻辑处理-->
</c:choose>
【3】循环标签
<c:forEach>标签可以根据循环条件遍历数组和集合类中的所有或部分数据。主要用于遍历从数据库获得的数据。如:数组,java.util.List和java.util.Map对象,它们封装了从数据库中所取出的数据,可以使用循环标签来遍历这些数据,使页面看起来更加整洁。
数字索引迭代语法格式如下:
<c:forEach begin=”start” end=”finish” [var=”name”] [varStaus=”stausName”][step=”step”]>
标签主体
</c:forEach>
集合成员迭代语法如下:
<c:forEach items=”data” [begin=”start”] [end=”finish”] [var=”name”] [step=”step”]
[varStaus=”stausName”]>
标签主体
</c:forEach>
Begin:int类型,循环的起始位置,默认从集合的第一个开始
End:int类型,循环的结束位置,默认
var:String类型,循环体的变量,用于存储items指定的对象成员
step:int类型,循环的步长
items:集合对象,被循环遍历的对象,多用于数组与集合类
varStaus:String类型,循环的状态信息有以下四个:
index是int型,说明当前循环的索引值,从0开始。
Count是int型,当前的循环计数肉1开始。
Last是boolean型,否为最后一次循环。
First是boolean型,否为第一次循环。
例如:
<span style="font-family:Times New Roman;font-size:18px;"><%List list=new ArrayList(); list.add("明日科技"); list.add("编程词典"); list.add("www.bccd.com"); request.setAttribute("list",list);%> <c:forEach items="${requestScope.list}" var="keyword" varStatus="id" begin="1"> ${id.index } ${keyword}<br> </c:forEach></span>
<c:forTokens>标签是根据指定的分隔符将字符串分开,再进行循环的一种标签。语法格式:
<c:forTokens items=”string” delims=”char” [var=”name”] [begin=”start”] [end=”finish”]
[varStaus=”stausName”]>
标签主体
</c:forTokens>
Items:被循环遍历的字符串对象。
delims:字符串的分割字符。
例如:
<span style="font-family:Times New Roman;font-size:18px;"><c:forTokens items="${sourceStr}" delims=",、。" var="item"> ${item}<br> </c:forTokens></span>
【4】URL操作标签
<c:import>标签可以导入站内或其它网站的静态和动态文件到web页面中,可以用此标签导入其它网站的天气信息加入自己的网页中,相比于<jsp:include>动作标签只能导入站内资源,这个标签更加有用。两种语法格式如下:
(1)<c:import url=”url” [context=”context”][var=”name”][charEncoding=”encoding”]
scope=”request|page|session|application]>标签主体
</c:import>
(2)<c:import url=”url” varReader=”name”] [context=”context”] [charEncoding=”encoding”]/>
Url:被导入文件资源的URL
Context:上下文路径,其值必须以’/’开头,如果指定该属性,那么url也必须以’/’开头
Var:变量名称,将获取的资源存取在该变量中
varReader:以Reader类型存储包含文件内容
charEncoding:被导入文件的编码格式
例如:
<span style="font-family:Times New Roman;font-size:14px;"><%@ page language="java" pageEncoding="GBK"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <title>应用<c:import>标签在网页中显示天气预报</title> </head> <body> <c:catch var="error"> <c:import url="http://m.weather.com.cn/m/p11/weather1.htm" charEncoding="GBK"/> </c:catch> <c:if test="${!empty error}"> 该网址不存在,请确认是否登录到Internet! </c:if> <c:url value="http://localhost:8080/userServlet" var="url" scope="session"> <c:param name="action" value="query"/> </c:url> <a href="${url}">查询全部用户信息</a> </body> </html></span>
<c:redirect>标签可以将客户端发出的request请求重定向到其它URL服务端,由其它程序处理用户请求。在此期间可以对此请求的属性进行添加或者修改,然后再进行传递。两种语法格式如下:
(1)<c:redirect url=”url” [context=”/context”]/>
(2)<c:redirect url=”url” [context=”/context”]>
<c:param/>......<!--用于转发时添加参数-->
</c:redirect>
<c:param name=”paramName” value=”paramValue” />用于传递参数信息,并且name属性可以引用EL表达式。