JSTL-CORE核心标签(c:forEach/c:forTokens/c:redirect)说明

16 篇文章 1 订阅

  核心标签库主要用来完成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 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服务端,由其它程序处理用户请求。在此期间可以对此请求的属性进行添加或者修改,然后再进行传递。两种语法格式如下:

<c:redirect url=”url” [context=”/context”]/>

<c:redirect url=”url” [context=”/context”]>

    <c:param/>......<!--用于转发时添加参数-->

 </c:redirect>

<c:param name=”paramName” value=”paramValue” />用于传递参数信息,并且name属性可以引用EL表达式。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值