1. <c:out>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 :<c:out> 标签是一个最常用的标签,用于在   JSP   中显示数据。 它的作用是用来替代通过 JSP 内   置对象 out 或者 <%=%> 标签来输出对象的值。

语法 :

没有Body时的语法

<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”]/>

有Body时的语法

<c:out value=”value” [escapeXml=”{true|false}”]>

这里是Body部分

</c:out>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

value

需要显示的值

Object

Y

Y

Y

用来定义需要求解的表达式。

escapeXml

是否转换特殊字符

boolean

Y

Y

N

true

用于指定在使用 <c:out> 标记输出诸如“ < ”、“ > ”、“ ’ ”、“” ”和“ & ”之类的字符(在  HTML  和  XML  中具有特殊意义)时是否应该进行转义。如果将  escapeXml  设置为 true ,则会自动的进行编码处理。

default

缺省值

Object

Y

Y

N

当求解后的表达式为 null 或者 String 为空时将打印这个缺省值。

Null和错误说明

假若value为null,会显示default的值;假若没有设定default的值,则会显示一个空的字符串。

实例 :

------------------------------------------------------------------------------------------------------------------------------------------

Example1

<c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>

该示例将从Session查找名为“anyValue”的参数,并显示在页面,若没有找到则显示“no value”。

------------------------------------------------------------------------------------------------------------------------------------------

Example2

您的用户名是: <c:out value=”${user.username}” default=”guest”/>

显示用户的用户名,如为空则显示guest

<c:out value="${sessionScope.username}"/>

指定从session中获取username的值显示;

<c:out value="${username}" />

显示username的值,默认是从request(page)中取,如果request中没有名为username的对象则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显示

------------------------------------------------------------------------------------------------------------------------------------------

2.  <c:set>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : <c:set>标 签用于为变量或JavaBean中的变量属性赋值的工作。这个标签用于在某个范围(page、request、session、application 等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。他类似 于<%request.setAttrbute("name","value");%>

语法 :

语法1: 没有body

将value的值存储至范围为scope的varName变量之中

<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>

语法2: 有body

将body内容存储至范围为scope的varName变量之中

<c:set value="value" [scope="{page|request|session|application}"]>

body.....

</c:set>

语法3: 将value的值存储至target对象属性中

<c:set value="value" target="target" property="propertyNmae"/>

语法4: 将body内容的数据存储至target对象属性中

<c:set target="target" property="propertyNmae">

body....

</c:set>

Ø  Null 和 错误处理:

语法3和语法4会产生异常错误,有以下两种情况:

.target 为null

.target 不是java.util.Map或JavaBean对象

假若value为null时:将由存储变量改为移除变量

.语法1: 由var和scope所定义的变量,将被移除

.若scope已指定时,则PageContext.removeAttribute(varName,scope);

.若scope未指定时,则PageContext.removeAttribute(varName);

.语法3:

.假若target为Map时,则Map.remove(property);

.假若target为JavaBean时,propertye指定的属性为null

注意: var和scope这两个属性不能使用表达式来表示,我们不能写成 scope="${ourScope}"或var="${a}"

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

value

要被存储的值

Object

true

Y

被计算的表达式

var

变量名

String

false

N

被导出的保存了value属性计算结果的范围变量的名称

scope

范围

String

true

N

page

var的JSP范围

target

目标 对象

String

true

Y

要设置属性的对象。必须是JavaBean对象或java.util.Map对象

property

指定target对象属性

Object

true

Y

要设置的target对象的属性的名称

实例 :

------------------------------------------------------------------------------------------------------------------------------------------

Example1

<c:set value="this is andy" var="oneString"/>

该示例将为名为“oneString”的变量赋值为“this is andy”,其作用范围为page。

------------------------------------------------------------------------------------------------------------------------------------------

Example2

<c:set target="${cust.address}" property="city" value="$"/>

将对象cust.address的city属性值保存到变量city中。

------------------------------------------------------------------------------------------------------------------------------------------

Example3

设置不同的属性,并且指定它们的范围:

<c:set value="10000" var="maxUser" scope="application"/>

<c:set value="20" var="maxIdelTime" scope="session"/>

<c:set value="next.jsp" var="nextPage" scope="page"/>

------------------------------------------------------------------------------------------------------------------------------------------

Example4

<c:set var="bid" value="${param.bookId}"/>

<jsp:setProperty name="bookDB" property="bookId"   value="${bid}" />

------------------------------------------------------------------------------------------------------------------------------------------

Example5

<% Foo foo = new Foo(); pageContext.setAttribute("foo", foo); %>

<c:out value="${foo.date}"/><br> <c:set target="${foo}" property="day" value="1"/>

<c:out value="${foo.date}"/>

------------------------------------------------------------------------------------------------------------------------------------------

3.   <c:remove>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : <c:remove>标签用于删除存在于scope中的变量。 类似于 <%session.removeAttribute(“name”)%>  、

<%request.removeAttribute(“name”)%>...

语法 :

<c:remove var="varName" [scope="{page|request|session|application}"]/>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

var

变量名

String

N

N

欲移除变量的名称

scope

范围

String

N

N

page

var变量的JSP范围; 若没有指定,默认为全部查找

------------------------------------------------------------------------------------------------------------------------------------------

实例 :

Example1

<c:remove var="sampleValue" scope="session"/>

${sessionScope.sampleValue}

------------------------------------------------------------------------------------------------------------------------------------------

Example2

<c:remove var="username" scope="session"/>

将username变量从session范围移除。若我们不设定scope,则<c:remove>会移除所有范围名称为username

的数据。

------------------------------------------------------------------------------------------------------------------------------------------

4. <c:catch>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : <c:catch>动作用于捕获JSP元素在其体中抛出的异常,从而提供细粒度的错误控制,   此异常也可以保存为一个页面作用域变量。当错误发生<c:catch>和</c:catch>之间时,只有<c:catch>和</c:catch>之间的程序会被中止忽略,但整个网页不会被中止。 它包含一个var属性,是一个描述异常的变量,该变量可选。若没有var属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了var属性,则可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。

语法 :

<c:catch [var="var"]>

//可能发生错误的部分

JSP elements

</c:catch>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

var

变量名

String

N

N

N

用来存储错误信息的变量

实例 :

------------------------------------------------------------------------------------------------------------------------------------------

Example1

<c:catch var="importException">

<fmt:parseDate value="${param.empDate}" dateStyle="short" />

</c:catch>

<c:if test="${importException != null}">

<jsp:forward page="input.jsp">

<jsp:param name="msg" value="Invalid date format" />

</jsp:forward>

</c:if>

------------------------------------------------------------------------------------------------------------------------------------------

Example2

<c:catch var="err">

${param.sampleSingleValue[9] == 3}

</c:catch>

${err}

当“${param.sampleSingleValue[9] == 3}”表达式有异常时,可以从var属性“err”得到异常的内容,通常判断“err”是否为null来决定错误信息的提示。

------------------------------------------------------------------------------------------------------------------------------------------

5. <c:if>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : <c:if>动作仅当所指定的表达式计算为true时才计算其体。计算结果也可以保存为一个作用域Boolean变量。

语法 :

语法1:没有体

<c:if test=" booleanExpression  "

var=" var  " [scope=" page   |request|session|application"]/>

语法2:有体

<c:if test=" booleanExpression ">

JSP elements

</c:if>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

test

测试表达式

boolean

Y

Y

如果表达式的结果为true则执行body,false则相反

var

变量名

String

N

N

用来存储test运算后的结果,即true或false

scope

变量作用域

String

N

N

page

var变量的JSP范围

实例 :

<c:if test="${empty param.empDate}">

<jsp:forward page="input.jsp">

<jsp:param name="msg" value="Missing the Employment Date" />

</jsp:forward>

</c:if>

6. <c:choose>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : <c:choose>动 作用于控制嵌套<c:when>和<c:otherwise>动作的处理,它只允许第一个测试表达式计算为true 的<c:when>动作得到处理;如果所有<c:when>动作的测试表达式都计算为false,则会处理一 个<c:otherwise>动作。<c:choose>标签没有属性,可以被认为是父标 签,<c:when>、<c:otherwise>将作为其子标签来使用。

语法 :

<c:choose>

body(<when>和<otherwise>)

</c:choose>

限制:

<c:choose>的本地内容只能有:

.空白

.1或多个<c:when>

.0或多个<c:otherwise>

属性 :

实例 :

----------------------------------------------------------------------------------------------------------------------------------------

Example1

<c:choose>

<c:when test="${product.onSale}">

${product.salesPrice} On sale!

</c:when>

<c:otherwise>

${product.price}

</c:otherwise>

</c:choose>

---------------------------------------------------------------------------------------------------------------------------------------

Example2

<c:choose>

<c:when test="${condition1}">

condition1 为 true

</c:when>

<c:when test="${condition2}">

condition2 为 true

</c:when>

<c:otherwise>

condition1和conditon2都为false

</<c:otherwise >

说明:

在同一个<c:choose>中,假如所有的<c:when>的test都不为true时,则执行<c:otherwise>的本体内容。

在同一个<c:choose>中,假若有好几个<c:when>都会true时,只能有一个<c:when>成立。

</c:choose>

----------------------------------------------------------------------------------------------------------------------------------------

7. <c:when>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 :<c:when>标签等价于“if”语句,它包含一个test属性,该属性表示需要判断的条件。

语法 :

<c:when test="testCondition">

Body content

</c:when>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

test

测试表达式

boolean

Y

Y

如果表达式的结果为true则执行body,false则相反

实例 :

8. <c:otherwise>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 :<c:otherwise>标签没有属性,它等价于“else”语句。

语法 :

<c:otherwise>

conditional block

</c:otherwise>

属性 :

实例 :

<c:choose>、<c:when>、<c:otherwise>标签 综合实例

<c:choose>

<c:when test="${paramValues.sampleValue[2] == 11}">

not 12 not 13,it is 11

</c:when>

<c:when test="${paramValues.sampleValue[2] == 12}">

not 11 not 13,it is 12

</c:when>

<c:when test="${paramValues.sampleValue[2] == 13}">

not 11 not 12,it is 13

</c:when>

<c:otherwise>

not 11 、12、13

</c:otherwise>

</c:choose>

9. <c:forEach>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : <c:forEach>动作将其体反复计算固定次数,或者针对一个集合中的每个元素分别计算一次体。当前元素(如果未指定集合则为当前索引)和迭代状态可以通过嵌套变量提供给体中的动作元素。

此 动作接受属性表中所列的类型集合。当前元素的类型即为底层集合的类型,仅有两个例外。对于一个基本类型的数组,当前元素将作为相应包装类 (Integer、Float等等)的一个实例提供。对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提 供。

语法 :

语法1:基于集合元素进行迭代

<c:forEach items="collection" [var="var"] [varStatus="varStatus"]

[begin="startIndex"] [end="stopIndex"] [step="increment"]>

JSP elements

</c:forEach>

语法2:迭代固定次数

<c:forEach [var="var"] [varStatus="varStatus"]

begin="startIndex" end="stopIndex" [step="increment"]>

JSP elements

</c:forEach>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

begin

开始位置

int

Y

Y

0

结合集合使用时的开始索引,从0计起。对于集合来说默认为0

end

结束位置

int

Y

Y

最后一个成员

结合集合使用时的结束索引(元素引要小于等于此结束索引),从0计起。默认为集合的最后一个元素。如果end小于begin,则根本不计算体集合,迭代即要针对此集合进行。

items

被迭代的集合对象

Collection,

Iterator, Enumeration,

Map,

数组

Y

Y

集合,迭代即要针对此集合进行。

step

步长

int

Y

Y

 

1

每次迭代时索引的递增值。默认为1。

var

当前项目

String

N

N

保存当前元素的嵌套变量的名字。

varStatus

循环状态

String

N

N

保存LoopTagStatus对象的嵌套变量的名字。

Null 和 错误处理

.假若items为null时,则表示为一空的集合对象

.假若begin大于或等于items时,则迭代不运算

注意:

varName的范围只存在<c:forEach>的本体中,如果超出了本题,则不能取得varName的值。如:

<c:forEach items="${atts}" var="item">

</c:forEach>

${item}</br>

${item}则不会显示item的内容。<c:forEach>除了支持数组之外,还有标准的J2SE的结合类型,例如:

ArrayList,List,LinkedList,Vector,Stack和Set等等;另外包括java.util.Map类的对象,例如:

HashMap,Hashtable,Properties,Provider和Attributes。

另外<c:forEach>还提供了varStatus属性,主要用来存放现在指到成员的相关信息。例如:我们写成

varStatus="s",那么就会把信息存放到名称为s的属性当中。varStatus属性还提供另外四个属性:index,

count,fist和last,它们个自的意义如下:

属性                   类型                                  意义

index                  number                    现在指到成员的索引

count                  number                    总共指到成员的总和

first                   boolean                    现在指到成员是否为第一个

last                    boolean                   现在指到成员是否为最后一个

实例 :

----------------------------------------------------------------------------------------------------------------------------------------

Example1

%@page contentType="text/html;charset=gb2312"%>

%@taglib prefix="c" uri=" http://java.sun.com/jsp/jstl/core"%>

<%

String atts[] = new String[5];

atts[0]="hello";

atts[1]="this";

atts[2]="is";

atts[3]="a";

atts[4]="girl";

request.setAttritue("atts",atts);

%>

<c:forEach items="${atts}" var="item" varStatus="s">

<h2><c:out value="${item}"/>的四种属性></h2>

index: ${s.index}</br>

count: ${s.count}</br>

first: ${s.first}</br>

last: ${s.last}</br>

</c:forEach>

----------------------------------------------------------------------------------------------------------------------------------------

Example2

综合实例

< select >

< c:forEach  items = " ${model.options} "   var = "forum" >

< c:choose >

< c:when  test = " ${forum.id == model.forumId} " >

< option  value = " ${forum.id} "   elected > ${forum.name} </ option >

</ c:when >

< c:otherwise >

< option  value = " ${forum.id} " > ${forum.name} </ option >

</ c:otherwise >

</ c:choose >

</ c:forEach >

</ select >

Example3

奇偶行样式

<c:forEach items="${model.page.list}" var="observer" varStatus="loop">

< tr class="row$(loop.count%2)">

<td>迭代observer</td>

<td>迭代observer</td>

...

</tr>

</c:forEach>

Example4

分页条1

< c:set  var = "page"  value = " ${model.page} " ></ c:set >

< table  width = "800"  align = "center"  cellpadding = "0"  cellspacing = "0" >

< tr  class = "even" >

< td  height = "20"  align = "center"  colspan = "3"  valign = "top" >

< a  href = "javascript:page(1)"  class = "gr_pages" > 首页 </ a >

< c:if  test = " ${page.currentPage > 1} " >

< a  href = " javascript:page( < c:out   value = " ${page.currentPage -1 } "   /> ) "   class = "gr_pages" > 上页 </ a >

</ c:if >

< c:if  test = " ${page.currentPage < page.totalPage} " >

< a    href = " javascript:page( < c:out   value = " ${page.currentPage +1 } "   /> ) "   class = "gr_pages" > 下页 </ a >

</ c:if >

< a  href = " javascript:page( < c:out   value = " ${page.totalPage} "   default = "1"   /> ) "   class = "gr_pages" > 末页 </ a >

当前第 < c:out  value = " ${page.currentPage} "   /> / < c:out  value = " ${page.totalPage} "   /> 页

</ td >

</ tr >

</ table >

Example5

分页条2

< div  align = "center" >< span  class = "all_font12" >   < a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=1&subareaCode= ${param.subareaCode} "   class = "gr_pages" >  首页  </ a >     < c:if

test = " ${page.currentPage > 1 } " >

< a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage - 1} &subareaCode= ${param.subareaCode} "

class = "gr_pages" >  前页  </ a >

</ c:if >   < a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage} &subareaCode= ${param.subareaCode} " >

< c:out  value = " ${page.currentPage} "   /></ a >

< c:if

test = " ${page.currentPage + 1 <= page.totalPage} " >

< a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 1} &subareaCode= ${param.subareaCode} " >< c:out

value = " ${page.currentPage + 1} "   /></ a >

</ c:if >   < c:if  test = " ${page.currentPage + 2 <= page.totalPage} " >

< a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 2} &subareaCode= ${param.subareaCode} " >< c:out

value = " ${page.currentPage + 2} "   /></ a >

</ c:if >   < c:if  test = " ${page.currentPage + 3 <= page.totalPage} " >

< a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 3} &subareaCode= ${param.subareaCode} " >< c:out

value = " ${page.currentPage + 3} "   /></ a >

</ c:if >   < c:if  test = " ${page.currentPage <page.totalPage} " >

< a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 1} &subareaCode= ${param.subareaCode} "

class = "gr_pages" > 后页 </ a >

</ c:if >   < a

href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.totalPage} &subareaCode= ${param.subareaCode} "

class = "gr_pages" > 末页 </ a >   < a > 当前第 < c:out

value = " ${page.currentPage} "   /> / < c:out

value = " ${page.totalPage} "   /> 页 </ a ></ span ></ div >

Example6

综合实例

<%@  page  import="java.util.Map"  %>

<%@  page  import="java.util.HashMap"  %>

<%@  taglib  prefix="c"  uri="http://java.sun.com/jsp/jstl/core"  %>

<%

Map  map  =  new  HashMap();

map.put("a",  "12345");

map.put("b",  "abcde");

out.println(map.get("a"));

request.setAttribute("map",map);

%>

<!--  完全迭代  -->

<c:forEach  items="${map}"  var="mymap"  >

<c:out  value="${mymap.key}"  />

<c:out  value="${mymap.value}"  />

</c:forEach>

<!-- 根据map的key来找到特定的值 -->

<c:forEach    items="${map}"    var="mymap">

<c:if    test="${mymap.key=='a'}">

<c:out    value="${mymap.value}"/>

</c:if>

</c:forEach>

10. <c:forTokens>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : 标签可以根据某个分隔符分隔指定字符串,相当于 java.util.StringTokenizer  类。

语法 :

<c:forTokens items="stringFoTokens" delims="delimmmmiters" [var="varName"]

[varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>

...body内容....

</c:forTokens>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

var

变量名

String

false

Y

用来存放现在指到的成员

items

被迭代的字符串

String

true

Y

被迭代的字符串

delims

分隔符

String

true

N

定义用来分割字符串的字符

varStatus

循环状态变量

String

false

N

用来存放现在指到的相关成员信息

begin

开始条件

int

true

Y

0

开始的位置

end

结束条件

int

true

Y

最后一个成员

结束的位置

step

步长

int

true

Y

1

每次迭代步长

限制:

.假若有begin属性时,begin必须大于等于0

.假若有end属性时,必须大于begin

.假若有step属性时,step必须大于等于1

Null 和 错误处理

.假如itmes为null时,则表示为有空的集合对象

.假若begin大于等于items的大小时,则迭代不运算

实例 :

<c:forToken items="A,B,C,D,E,F,G" delims="," var="item>

${item}

</c:forToken>

items属性也可以用EL,例如:

<%

String phonenumber="123-456-7899";

request.setAttribute("userPhone",phonenumber);

%>

<c:forTokens items="${userPhone}" delims="-" var="item">

${item}

</c:forTokens>

11. <c:import>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : 标签允许包含另一个 JSP  页 面到本页面来。jsp有两种内置机制可以将来自不同 URL 的内容合并到一个 JSP 页面:include 伪指令 和 <jsp:include> 操作。不过,不管是哪种机制,要包含的内容都必须属于与页面本身相同的 Web 应用程序 (或 servlet 上下文)。两个标记之间的主要区别在于: include 伪指令在页面编译期间合并被包含的内容, 而 <jsp:include> 操作却在请求处理 JSP 页面时进行。

core 库 的 <c:import>和 <jsp:include> 一样, <c:import> 也是一种请求时操作,它 的基本任务就是将其它一些 Web 资源的内容插入 JSP 页面中。 通过 url 属性指定将要导入内容的 URL,这个属性 是 <c:import> 的唯一一个必选属性。这里允许使用相对 URL,并且根据当前页面的 URL 来解析这个相对 URL。但是,如 果 url 属性的值以斜杠开始,那么它就被解释成本地 JSP 容器内的绝对 URL。如果没有为 context 属性指定值,那么就认为这样的绝 对 URL 引用当前 servlet 上下文内的资源。如果通过 context 属性显式地指定了上下文,那么就根据指定的 servlet 上下文 解析绝对(本地)URL。 但 <c:import> 操作并不仅仅限于访问本地内容。也可以将包含协议和主机名的完整 URI 指定 为 url 属性的值。实际上,协议甚至不仅局限于 HTTP。 <c:import> 的 url 属性值可以使 用 java.net.URL 类所支持的任何协议。

语法 :

语法1:资源的内容使用String对象向外暴露

<c:import url="url" [context="context"]

[var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]>

内容

</c:import>

语法2:资源的内容使用Reader对象向外暴露。

<c:import url="url" [context="context"]

varReader="varReaderName" [charEncoding="charEncoding"]>

内容

</c:import>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

url

统一资源定位器

String

true

Y

待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源

context

上下文

String

true

Y

当使用相对路径访问外部context资源时,context指定了这个资源的名字。

var

变量

String

false

N

参数的名字。

scope

范围

String

false

N

page

var参数的作用范围。

cahrEncoding

字符编码

String

true

Y

输入资源的字符编码。

varReader

资源 阅读器

String

false

N

这个参数的类型是Reader,用于读取资源。

说明

<c:import>中必须要有 url 属性,它是用来设定被包含网页的地址。它可以为绝对地址或是相对地址.

<c:import>也支持FTP协议,假设现在有一个 FTP站台,地址为 ftp.javaworld.com.tw,它里面有一个文件data.txt,那么可以写成如下方式将其内容显示出来:

<c:import url="ftp://ftp.cse.yzu.edu.tw/data.txt" />

另外,可以在<c:import>的本体内容中使用<c:param>,它的功用主要是:可以将参数传递给被包含的文件,它有两个属性name和value.如:

<c:import url="http://java.sun.com" >

<c:param name="test" value="1234" />

</c:import>

这样的做法等于是包含一个文件,并且所指定的网址会变成如下:

http://java.sun.com?test=1234

实例 :

----------------------------------------------------------------------------------------------------------------------------------------

Example1

<c:catch var="exception">

<c:import url="ftp://ftp.example.com/package/README"/>

</c:catch>

<c:if test="${not empty exception}">

Sorry, the remote content is not currently available.

</c:if>

<c:import> 操 作用来包含通过 FTP 协议访问的文档内容。此外,还使用了 <c:catch> 操作,以便在本地处理 FTP 文件传送期间可能发生的 任何错误。错误处理是这样实现的:使用 <c:catch> 的 var 属性为异常指定一个限定了作用域的变量,然后使 用 <c:if> 检查其值。如果产生了异常,那么就会对那个限定了作用域的变量进行赋值:如清单 18 中的 EL 表达式所显示的那样, 该变量的值将 不会为空。由于 FTP 文档的检索将会失败,因此会显示有关这种情况的错误消息。<c:import> 操作的最后两个(可 选的)属性是 var 和 scope 。 var 属性会导致从指定 URL 获取的内容(作为 String 值)被存储在一个限定了作用域的变量 中,而不是包含在当前 JSP 页面中。 scope 属性控制该变量的作用域,缺省情况下是页面作用域。如同我们在今后的文章中将要看到的那 样,JSTL xml 库中的标记利用了 <c:import> 这种能力,即将整个文档存储在一个限定了作用域的变量中。

还要注意的是,可以使用(可选的)嵌套的 <c:param> 标记来为正在导入的 URL 指定请求参数。与在 <c:url> 中嵌套 <c:param> 标记一样,必要时也要对参数名称和参数值进行 URL 编码。

----------------------------------------------------------------------------------------------------------------------------------------

Example2

<c:import url="/MyHtml.html" var="thisPage" />

<c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/>

<c:import url="www.sample.com/MyHtml.html" var="thisPage"/>

该示例演示了三种不同的导入方法,第一种是在同一 Context 下的导入,第二种是在不同的 Context 下导入,第三种是导入任意一个 URL 。

---------------------------------------------------------------------------------------------------------------------------------------

12. <c:url>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : 主要用来产生一个URL。

语法 :

语法1:没有本体内容

<c:url value="value" [context="context"] [var="varName"]

[scope="{page|request|session|application}"] />

语法2:本体内容代表查询字符串(Query String)参数

<c:url value="value" [context="context"] [var="varName"]

[scope="{page|request|session|application}"] >

<c:param> 标签

</c:url>

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

value

 

String

true

Y

执行的URL

context

 

String

true

Y

相同Container下,其他web站台必须以“/”开头

var

 

String

false

N

储存被包含文件的内容(以String 类型存入)

scope

 

String

false

N

page

var变量的JSP范围

实例 :

<c:url value="http://www.javafan.net " >

<c:param name="param" value="value"/>

</c:url>

上面执行结果将会产生一个网址为http://www.javafan.net?param=value,我们更可以搭配 HTML 的<a>使用,如下:

<a href="

<c:url value="http://www.javafan.net " >

<c:param name="param" value="value"/>

</c:url>">Java爱好者</a>

如果<c:url>有 var属性时,则网址会被存到 varName中,而不会直接输出网址。

13. <c:redirect>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 : 可以将客户端的请求从一个 JSP 网页导向到其他文件。

语法 :

语法1:没有本体内容

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

语法2:本体内容代表查询字符串(Query String)参数

<c:redirect url="url" [context="context"] >

<c:param>

</c:redirect >

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

url

统一资源定位器

String

true

Y

导向的目标地址,它可以是相对或绝对地址。

context

上下文

String

true

Y

相同Container下,其他web站台必须以“/”开头

实例 :

<c:redirect> 的功能不止可以导向网页,同样它还可以传递参数给目标文件。如:

<c:redirect url="http://java.sun.com">

<c:param name="param" value="value"/>

</c:redirect>

14. <c:param>

库 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : c

描述 :用于传递参数,用来为包含或重定向的页面传递参数。

语法 :

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

name

参数名

String

true

Y

传递的参数名

value

参数值

String

true

Y

传递的参数值(可选)

实例 :

<c:redirect url="/MyHtml.jsp">

<c:param name="userName" value=”RW” />

</c:redirect>

该示例将为重定向的“MyHtml.jsp”传递指定参数“userName=’RW’”。

jstl标签经典的更多相关文章

  1. JSTL标签出错:<c:forEach var="book" items="${requestScope.books}" varStatus="status">

    今天在运行书里的JSTL标签代码的时候出错,总结一下: 问题1.The JSP specification requires that an attribute name is preceded by ...

  2. jstl标签库基础教程及其使用代码

    概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Sta ...

  3. 十、JSTL标签库

      l JSTL标签库(重点) l 自定义标签(理解) l MVC设计模式(重点中的重点) l Java三层框架(重点中的重点) JSTL标签库 1 什么是JSTL JSTL是apache对EL表达式 ...

  4. JSTL标签 参考手册

    前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多 ...

  5. JSTL标签库

    JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大 ...

  6. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  7. 简单实用JSTL标签库

    1. JSTL标签库是一个什么东东? 简单来说,有了它你就可以在类似HTML的JSP页面里面运用一些高级语法,实现迭代.条件判断.XML文档操作.国际化标签.SQL标签. 2. 如何使用 ? 参考网址 ...

  8. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  9. jstl 标签库的使用

    JSTL 核心标签库 使用   JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.ot ...

随机推荐

  1. poj 1056 IMMEDIATE DECODABILITY(KMP)

    题目链接:http://poj.org/problem?id=1056 思路分析:检测某字符串是否为另一字符串的前缀,数据很弱,可以使用暴力解法.这里为了练习KMP算法使用了KMP算法. 代码如下: ...

  2. SEO市场是在扩大还是缩小 Seoer终于会变成什么?

    近期有两件全然背道而驰的事情同一时候发生.第一件事情是以SEO业务为主要业务的业者逐渐降低,很多原本是SEO的业者都纷纷转向其它业务.SEO业务反而变成副业.第二件事情是中小企业的SEO需求添加了.而 ...

  3. windows简单杀死进程的批处理程序

    新建一个txt文档,命令为taskkill.bat,复制下面的命令保存 @echo offtaskkill /F /IM vm* /Ttaskkill /F /IM apple* /Ttaskkill ...

  4. iOS 如何自定义NavigationBar的高度

    UINavigationBar的高度在苹果官方的SDK中是固定的44个点,但是实际项目中我们却有可能遇到这样的情况,如下图: 这样的一个UINavigationBar的高度达到了84个点,这就需要我们 ...

  5. 【转载】Java重构示例【1】

    序言 本文通过Java示例代码片段展示了常用重构原则和技巧,供初级开发人员参考.精致的代码能够清楚传达作者的意图,精致的代码是最好的注释,精致的代码非常容易维护和扩展.程序员阅读精致的代码如同大众欣赏 ...

  6. BZOJ 1026: [SCOI2009]windy数( dp )

    dp..dp(x, t) 表示共x位, 第x位为t有多少个windy数. 对答案差分, 我们只需统计1 ~ l-1和1 ~ r的windy数数量. 考虑如何计算[1, n]的答案 : 从最高位到最低位 ...

  7. js默认行为(也称默认事件)

    对应于智能社21课, 在浏览器的空白页面右击时会出现一个提示框,实际上这是用的document.oncontextmenu属性,如果用下面的代码就能够阻止这样的默认行为: <!DOCTYPE h ...

  8. nginx+apache 404错误页面

    公司新系统  随风做的  给客户演示出错不想让客户看到   自动返回上一页面. 刚开始按照网上说的 在nginx 处理: # 定义错误提示页面 error_page 500 502 503 504 / ...

  9. sed学习笔记整理

    1.sed简介 sed (Stream Editor)是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处 ...

  10. windows下各个浏览器用html5进行h.264大视频播放的性能对比说明

    最近在调查windows下哪种浏览器进行大视频播放时候稳定性比较高. 举h.264的4g的视频为例. 选用的浏览器有ie10,firefox,chrome.(因为opera不支持h.264所以没有考虑 ...