JSTL-JSTL核心标签库03

条件标签
在程序中,使用条件标签可以根据指定的条件执行相应的代码来产生不同的运行结果。在JSTL中提供了<c:if>,<c:choose>,<c:when>和<c:otherwise>4个条件标签。使用这些标签可以处理程序中任何可能发生的事情。

<c:if>标签
语法1:可判断条件表达式,并将条件的判断结果保存在var属性指定的变量中,而这个变量存在于scope属性所指定的范围内。
<c:if test="condition" var="name" [scope="page|request|session|application"]/>
语法2:不但可以将test属性的判断结果保存在指定范围的变量中,还可以根据条件的判断结果执行标签主体。标签主体可以是JSP页面能够使用的任何元素,如HTML标记,Java代码或者嵌入的其他JSP标签。
<c:if test="condition" var="name" [scope="page|request|session|application"]>
  标签主体
<c:if>标签的属性说明
属性类型描述引用EL
testboolean必选属性,用于指定条件表达式可以
varString可选属性,用于指定变量名。这个属性会指定test属性的判断结果将存放在哪个变量中,如果该变量不存在就创建它不可以
scopeString存储范围,该属性用于指定var属性所指定的变量的存在范围不可以

例:应用<c:if>标签根据发表过评论,决定是否显示发表评论表单及表单元素。
1
2
3
4
5
6
7
8
9
10
11
<%@ target prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
hello
< c:if   test = "${empty param.comment}" >
    < form   name = "form1"   method = "post"   action = "" >
       评论:
       < textarea   name = "comment"   cols = "30"   rows = "4"   ></ textarea >
      < br >
      < br >
      < input   type = "submit"   name = "Submit"   value = "发表评论" >
    </ form >
</ c:if >
<c:choose>,<c:when>和<c:otherwise>标签
<c:choose>标签可以根据不同的条件完成指定的业务逻辑,如果没有符合的条件,则会执行默认条件的业务逻辑。需要注意的是,<c:choose>标签只能作为<c:when>和<c:otherwise>标签的父标签,可以在其中嵌套这两个标签完成条件选择逻辑。在 <c:otherwise>标签中,必须有一个 <c:when>标签,但是 <c:choose>标签是可选的。
语法格式如下:
<c:choose>
   <c:when test="condition">
         业务逻辑
   </c:when>
   ....      <!--多个<c:when>标签
  <c:oherwise>
        业务逻辑               在一个<c:choose>标签中只能有一个该标签,并且应该在全部的<c:when>标签的后面
  </c:otherwise>
</c:choose>

例:
应用 <c:choose>,<c:when>和<c:otherwise>标签在页面中显示分时问候。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ target prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
< jsp   : useBean   id = "noe"   class = "java.util.Date" />
< c:choose >
    < c:when   test="${now.hours>=0 && now.hours< 5 }">
         凌晨好!
    </ c:when >
    < c:when   test="${now.hours>=5 && now.hours< 8 }">
         早晨好!
    </ c:when >
    < c:when   test="${now.hours>=8 && now.hours< 11 }">
         上午好!
    </ c:when >
    < c:when   test="${now.hours>=11 && now.hours< 13 }">
         中午好!
    </ c:when >
    < c:when   test="${now.hours>=13 && now.hours< 17 }">
         下午好!
    </ c:when >
    < c:otherwise >
         晚上好
    </ c:otherwise >
</ c:choose >
现在时间是:${now.hours}时${now.minutes}分

循环标签

JSTL提供了<c:forEach>和<c:forTokens>两个循环标签。

<c:forEach>标签

<c:forEach>标签可以根据循环条件遍历数组和集合类中的所有或部分数据。语法格式如下:

语法格式1:数字索引迭代,该语法中,begin和end属性是必选属性,其他为可选属性。

    
    
<c:forEach begin="start" end="finish" [var="name"] [varStatus="statusName"]>
[step="step"]
标签主体
</c:forEach>
语法格式2:集合成员迭代。items属性是必选属性,通常用EL表达式指定,其他属性为可选属性。
     
     
<c:forEach items="data"[var="name"] [ begin="start"] [end="finish" ] [step="step"] [varStatus="statusName"]>
标签主体
</c:forEach>
<c:forEach>标签的属性
属性类型描述引用EL
items数组,集合类,字符串和枚举类型被循环遍历的对象,多用于数组和集合类可以
varString循环体的变量,用于存储items指定的对象的成员不可以
beginint循环的起始位置,如果没有指定,则从集合的第一个值开始迭代可以
endint循环的终止位置,如果没有指定,则一直迭代到集合的最后一位可以
stepint循环的步长可以
varStatusString循环的状态信息,该属性还有4个状态属性不可以

varStatus属性的状态属性
属性类型描述
indexint当前循环的索引值,从0开始
countint当前循环的循环计数,从1开始
firstboolean是否为第一次循环
lastboolean是否为最后一次循环

例:应用<c:forEach>标签遍历List集合中第二个元素以后的元素(包括第二个元素)
    
    
<%@ page language="java" pageEncoding="GBK" import="java.util.*"%>
<%@ target prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
List list =new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
request.setAttribute("list",list);
%>
利用<c:forEach>标签遍历List集合的结果如下:<br>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id" begin="1">
${id.index}&nbsp;${keyword}<br>
</c:forEach>
<c:forTokens>标签
可以用于指定的分隔符将一个字符串分割开,根据分割的数量确定循环的次数。语法格式如下:
    
    
<c:forTokens items="String" delim="char" [var="name"] [begin="start"] [end="end"] [step="step"] [varStatus="statusName"]>
标签主体
</c:forTokens>

<c:forTokens>标签的属性
属性类型描述引用EL
itemsString被循环遍历的对象,多用于数组和集合类可以
delimsString字符串的分隔符,可以同时有多个分隔符不可以
varString变量名称不可以
beginint循环的起始位置可以
endint循环的终止位置可以
stepint循环的步长可以
varStatusString循环的状态变量不可以

URL操作标签
是指与文件导入,重定向,URL地址生成以及参数传递相关的标签。JSTL中提供的与URL相关的标签有<c:import>,<c:redirect>,<c:url>和<c:param>4个。

<c:import>文件导入标签


可以导入站内或其他网站的静态和动态文件到web页面中。
例如使用<c:import>标签导入其他网站的天气信息到自己的网页中,而<jsp:include>只能导入站内志愿,相比之下,<c:import>灵活性更高。
语法格式:
语法1:
<c:import url="url" [context="context"] [var="name"] [scope="page|request|session|application"] [charEncoding="encoding"]>
    标签主体
</c:import>

语法2:
<c:import url="url"  varReader="name" [context="context"] [charEncoding="encoding"]>

<c:import >标签的属性说明
属性类型描述引用EL
urlString被导入的文件资源的URL路径可以
contextString上下文路径,用于访问同一个服务器的其他Web工程,其值必须以"/"开头;如果指定了该属性,那么url属性值也必须以"/"开头。可以
varString变量名称,将获取的资源存储在变量中。不可以
scopeString变量的存在范围。不可以
varReaderString以Reader类型存储被包含文件内容。不可以
charEncodingString被导入文件的编码格式。可以

例1:应用<c:import>标签包含网站导航栏
1)编写nav.jsp用于存放导航栏
2)编写index.jsp用于引用导航栏
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core "%>
<c:import url="nav.jsp" charEncoding="GBK"/>


例2:应用<c:import>标签在网页中显示天气预报。以调用中国天气网提供的天气预报插件为例。
<%@ 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/p5/weather1.htm" charEncoding="GBK"/>
        </c:catch>
        <c:if test="${empty error}">
             该网址不存在,请确认是登陆到internet
        </c:if>
    </body>
 </html>

<c:redirect>重定向标签


可以将客户端发出的request请求重定向到其他URL服务端,由其他程序处理客户的请求;而在此期间可以对request请求中的属性进行修改或添加,然后把所有属性传递到目标路径。
语法1:没有标签主体,并且不添加传递到目标路径的参数信息。
<c:redirect url="url" [context="context"]/>
例:<c:redirect url="login.jsp"/>
语法2:将客户请求重定向到目标路径,并且在标签主体中使用<c:param>标签传递其他参数信息。
<c:redirect url="url" [context="context"]>
      <c:param/><!--可以有多个<c:param>标签-->
</c:redirect>
url属性:必选属性,用于指定待定向资源的URL,可以使用EL。
context属性:用于在使用相对路径访问外部context资源时指定资源的名称。
例:<c:redirect url="LinkmanServlet">
             <c:param name="action" value="query">
       </c:redirect>

<c:url>生成URL地址标签

用于生成一个URL路径的字符串,这个生成的字符串可以赋予HTML的<a>标签实现URL连接,或者用这个生成的URL字符串实现网页转发与重定向等。还可以使用<c:param>标签动态添加URL的参数信息。
语法1: 将输出产生的URL字符串信息,如果指定了var和scope属性,相应的URL信息将不再输出,而是存储在变量中以备后用。
<c:url value="url" [var="name"] [scopr="page|request|session|application"] [context="context"]/>
语法2:
<c:url value="url" [var="name"] [scopr="page|request|session|application"] [context="context"]>
   <c:param/><!--可以有多个<c:param>标签-->
</c:url>

<c:url>标签的属性说明
属性类型描述引用EL
valueString将要处理的URL地址可以
contextString上下文路径,用于访问同一个服务器的其他Web工程,其值必须是以"/"开头;如果指定了该属性,那么URL属性值也必须以"/"开头。可以
varString变量名称,将获取的资源存储在变量中。不可以
scopeString变量的存在范围。不可以
contextStringURL属性的相对路径。可以

<c:param>参数传递标签

只用于为其他标签提供参数信息,他与其他3个标签组合可以动态定制参数,从而完成更复杂的程序应用。
语法格式:name用于指定参数名,可以用EL表达式,value用于指定参数值。
<c:param name="paramName" value="paramValue"/>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值