jsp程序设计:jstl之JSTL标签库(上)

1、JSTL标签库概述:
     JSTL通常被认为是一种单标签库。但JSTL实际上有4个标签库。这些标签库被概括为如下:  
    §核心标签库—包含一些Web应用的必要的标签。核心标签库的实例包括循环,表达式赋值和基本输入输出。.  
    §格式化/国际化标签库—包括被用来解析数据的标签库。这种标签会解析数据,比如日期,不同的场所区域等。  
    §数据库标签库—包含被用来访问SQL数据库的标签。这些标签通常仅仅只创建原形(prototype)程序。这个是因为大多数程序不会直接从JSP页面中来处理数据库访问。数据库访问应该被嵌入到能够被JSP页面所访问的EJB中。  
    §XML标签库—包含被用来访问XML元素的标签。因为XML广泛使用于Web开发,XML的处理是JSTL的一个重要的特征。
2、安装使用JSTL1.1
    JSTL1.1支持Servlet2.4且是JSP2.0以上版本的容器中,可以到 这儿下载jakarta-taglibs-standard-1.1.2.zip,解压后将lib目录中的jstl.jar、standard.jar复制到当前Web应用的“WEB-INF/lib”中,最好同时把tld文件的目录也复制到WEB-INF中,方便日后使用。
3、核心标签库,包含通用标签、条件标签、迭代标签、URL标签
    通用标签用于操作JSP页面创建存储在隐式对象中的变量;条件标签用于对JSP页面中的代码进行条件判断和处理;迭代标签用于循环遍历一个对象的集合;URL标签用于控制页面的跳转动作。
    要在JSP页面中使用核心标签库,首先需要导入核心标签的URI:
<%  taglib uri="http://java.sun.com/jstl/core" prefix="c"  %>
    1)通用标签(输入输出):<c:set>、<c:out>、<c:remove>
    §<c:set>标签主要用来将变量储存至JSP隐式对象中或JavaBean的 属性中,其语法为:
语法一:将value的值储存至范围为scope的VarName变量之中:
< c:set  value ="value"  var ="varName"  [scope ="{page|request|session|application}"] />
语法二:将本体内容储存至范围为scope的VarName变量之中:
< c:set  var ="varName"  [scope ="{page|request|session|application}]" >
本体内容
</ c:set >
value:要被储存的值
var:欲存入的变量名称
scope:指定变量的JSP范围
    §<c:out>w标签主要用来显示数据的内容,就像<%=JSP表达式%>一样,其语法为:
语法一:没有本体(body)内容:
< c:out  value ="value"  [escapeXml ="{true|false}"  [default ="defaultValue" ] />
语法二:有本体内容:
< c:out  value ="value"  [escapeXml ="{true|false}" />
defaultValue
</ c:out >
value:需要显示出来的值。
Default:如果value的值为null,则显示default的值。
escapeXml:是否转换特殊字符,如:
< 转换成&lt ;。
    §<c:remove>标签主要用来移除变量,其语法为:
< c:remove  var ="varname"  [scope ="{page|request|session|application}" ] />
var:欲移除的变量名称。
scope:var变量的JSP范围。
    2)通用标签使用演示:
<% @ page contentType="text/html;charset=gbk"  %>
<% @ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>
< c:set  value ="hello"  var ="sessionvar1"  scope ="session" />
< c:set  var ="sessionvar2"  scope ="session" >
 world!
</ c:set >
存储后显示:
< br >
< c:out  value ="${sessionScope.sessionvar1}" />
< c:out  value ="${sessionScope.sessionvar2}" />< br >
< c:remove  var ="sessionvar2"  scope ="session" />
删除后显示:
< br >
< c:out  value ="${sessionScope.sessionvar1}" />
< c:out  value ="${sessionScope.sessionvar2}" />
    3)条件标签:<c:if>、<c:choose>、<c:when>、<c:otherwise>等。
    §<c:if>标签用于有条件地执行代码,如果test属性的值为true,则会执行<c:if>标签的标签体。这是一个容器标签,其语法为:
语法一:没有标签体内容(body):
< c:if  test ="testCondition"  var ="varName"  [scope ="{page|request|session|application}" ] />
语法二:有标签体内容:
< c:if  test ="testCondition"  [var ="varName" ] [scope ="{page|request|session|application}" ] >
</ c:if >
test:如果表示的结果为true,则执行标签体内容,false则相反。
var:用来存储test运算后的结果,即true或false。
scope:变量的JSP范围。
    §<c:choose>标签类似于java中的switch语句,它用于执行条件语句块。
< c:choose >
本体内容(
< when > < otherwise
</c:choose
>
    §<c:when>标签的用途和switch语句中的case一样。
    §<c:otherwise>标签,相当于switch语句中的default。
    4)条件标签演示:
<% @ page contentType="text/html;charset=gbk"  %>
<% @ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>
<%
int i=(int)(Math.random()*10);
pageContext.setAttribute(
"signalStrength",new Integer(i));
%>
< c:if  test ="${pageScope.signalStrength<5}"  var ="value1" />
< c:if  test ="${pageScope.signalStrength>5}" >
    
< c:set  var ="value2"  value ="true"  scope ="page" />
</ c:if >
< c:choose >
    
< c:when  test ="${pageScope.value1 }" >
        产生的随机数小于5.
    
</ c:when >
    
< c:when  test ="${pageScope.value2 }" >
        产生的随机数大于5.
    
</ c:when >
    
< c:otherwise >
        产生的随机数等于5.
    
</ c:otherwise >
</ c:choose >
    5)迭代标签:<c:forEach>标签和<c:forTokens>标签等。
    §<c:forEach>标签为循环控制,它可以将集合中的成员循序浏览一遍,动作方式为当条件符合时,就会重复执行<c:forEach>标签的标签体内容。
< c:forEach  [var ="varName" ] items ="collection"  [varStatus ="varStatusName" ] [begin ="begin" ] [end ="end" ] [step ="step" ] >
本体内容
</ c:forEach >
语法二:迭代指定的次数:
< c:forEach  [var ="varName" ] [varStatus ="varStatusName" ] begin ="begin"  end ="end"  [step ="step" ] >
本体内容
</ c:forEach >
var:用来存放当前指到的成员。
items:被迭代的集合对象(包括:Arrays、Collection、Iterator、Enumeration、Map)。
varStatus:用来存放当前指到的相关成员信息。
begin:开始的位置,若有,其值必须大于等于0.
end:结束的位置,默认值最后一个成员,若有,end必须大于begin。
step:每次迭代的间隔数,若有,必须大于等于0。
    §<c:forTokens>标签用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。使用语法如下:
< c:forTokens  items ="stringOfTokens"  delimes ="delimiters"  [var ="varName" ] [varStatus ="varStatusName" ] [begin ="begin" ] [end ="end" ] [step ="step" ] >
本体内容
</ c:forTokens >
var:用来存放现在指到的成员。
items:被迭代的字符串。
delims:定义用来分割字符串的字符。
varStatus:用来存放现在指到的相关成员信息。
begin:开始的位置,若有,必须大于等于0.
end:结束的位置,若有必须大于begin。
step:每次迭代的间隔数,若有,step必须大于等于0.
    6)迭代标签演示:
<% @ page contentType="text/html;charset=gbk" import="java.util.*" %>
<% @ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>
<%
    
String[] fruits={"苹果","葡萄","雪梨","白桃","柿子"};
    pageContext.setAttribute(
"fruits",fruits);
    
    Vector books
=new Vector();
    books.add(
"《西游记》");
    books.add(
"《水浒传》");
    books.add(
"《三国演义》");
    books.add(
"《红楼梦》");
    pageContext.setAttribute(
"books",books);
    
    
String str="太阳、星星、月亮;地球|天空";
    pageContext.setAttribute(
"str",str);
    
%>
< h3 > 数组迭代 </ h3 >
< c:forEach  var ="fruit"  items ="${fruits}" >
< c:out  value ="${fruit}" />
</ c:forEach >
< h3 > 集合类迭代 </ h3 >
< c:forEach  var ="book"  items ="${books}" >
< c:out  value ="${book}" />
</ c:forEach >
< h3 > 自变量循环 </ h3 >
< c:forEach  var ="i"  begin ="1"  end ="10"  step ="2" >
< c:out  value ="${i}" />
</ c:forEach >
< h3 > 字符串分隔 </ h3 >
< c:forTokens  items ="${str}"  delims ="、;|"  var ="substr" >
< c:out  value ="${substr}" />
</ c:forTokens >
5)URL标签,包括<c:import>、<c:redirect>和<c:url>等。
    §<c:import>标签可以把其他静态或动态文件包含至本身JSP网页。它和JSP动作指令<jsp:include>最大的差别在于:<jsp:include>只能包含和自己同一个WEB应用下的文件;而<c:import>除了能包含和自己同一人WEB应用的文件外,也可以包含不同WEB应用或者是其他网站的文件。其语法如下:
语法一:
< c:import  url ="url"  [context] ="context"  [var ="varName" ] [scope ="{page|request|session|application}" ] [charEncoding ="charEncoding" ] >
本体内容
</ c:import >
语法二:
< c:import  url ="url"  [context ="context" ] varReader ="varReader"  [charEncoding ="charEncoding" ] >
本体内容
< c:import >
url:被包含文件的地址。
context:在相同web容器下,其他WEB应用必须以“/”开头。
var:储存被包含的文件内容(以String类型存入)。
scope:变量的JSP作用域。
charEncoding:被包含文件内容的编码格式。
varReader:储存被包含文件的内容。
例如:
< c:import  url ="http://www.163.com" /> 的功能就是用 < c:import > 把http://www.163.com的内容加到网页中。
    §<c:url>标签主要用来产生一个URL。
语法一:没有标签体内容:
< c:url  value ="value"  [context ="context" ] [var ="varName" ] [scope ="{page|request|session|application}" ] />
语法二:有标签体内容,代表查询字符串参数:
value:执行的URL。
context:在相同WEB容器下,其他WEB应用必须以“/”开头。
var:储存被包含文件的内容(以String类型存入)。
scope:变量的JSP作用域。
例如:
< c:url  value ="http://dog.xiaonei.com/pet-profile.do" >
< c:param  name ="portal"  value ="homeFootprint" />
< c:param  name ="id"  value ="233227104" />
</ c:url >
会产生一个到达我的校内的狗狗的链接地址。
    §<c:redirect>标签可以将客户端的请求从一个JSP网页导向到其它文件。语法如下:

你可能感兴趣的:(jsp程序设计:jstl之JSTL标签库(上))