JSTL与Struts的结合(二)

9.3  JSTL Core标签库

Core标签库,又被称为核心标签库,该标签库的工作是对于JSP页面一般处理的封装。在该标签库中的标签一共有14个,被分为了四类,分别是:

q         多用途核心标签:<c:out><c:set><c:remove><c:catch>

q         条件控制标签:<c:if><c:choose><c:when><c:otherwise>

q         循环控制标签:<c:forEach><c:forTokens>

q         URL相关标签:<c:import><c:url><c:redirect><c:param>

以下是各个标签的用途和属性以及简单示例。

9.3.1  用于显示的<c:out>标签

<c:out>标签是一个最常用的标签,用于在JSP中显示数据。它的属性和描述如表9.3所示:

9.3 <c:out>标签属性和说明

属性

描述

value

输出到页面的数据,可以是EL表达式或常量(必须)

default

valuenull时显示的数据(可选)

escapeXml

当设置为true时会主动更换特殊字符,比如“&lt;,&gt;,&amp;”(可选,默认为true

JSTL1.0的时候,在页面显示数据必须使用<c:out>来进行。然而,在JSTL1.1中,由于JSP2.0规范已经默认支持了EL 表达式 ,因此可以直接在JSP页面使用表达式。下面看一个示例。

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

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

9.3.2  用于赋值的<c:set>标签

<c:set>标签用于为变量或JavaBean中的变量属性赋值的工作。它的属性和描述如表9.4所示:

9.4 <c:set>标签属性和说明

属性

描述

value

值的信息,可以是EL表达式或常量

target

被赋值的JavaBean实例的名称,若存在该属性则必须存在property属性(可选)

property

JavaBean实例的变量属性名称(可选)

var

被赋值的变量名(可选)

scope

变量的作用范围,若没有指定,默认为page(可选)

当不存在value的属性时,将以包含在标签内的实体数据作为赋值的内容。下面看一个示例:

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

${oneString} <br>

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

9.3.3  用于删除的<c:remove>标签

<c:remove>标签用于删除存在于scope中的变量。它的属性和描述如表9.5所示:

9.5 <c:remove>标签属性和说明

属性

描述

var

需要被删除的变量名

scope

变量的作用范围,若没有指定,默认为全部查找(可选)

下面看一个示例:

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

${sessionScope.sampleValue} <br>

该示例将存在于Session中名为“sampleValue”的变量删除。下一句EL表达式显示该变量时,该变量已经不存在了。

9.3.4  用于异常捕获的<c:catch>标签

<c:catch>标签允许在JSP页面中捕捉异常。它包含一个var属性,是一个描述异常的变量,改变量可选。若没有var属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了var属性,则可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。看一个示例。

<c:catch var="err">

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

</c:catch>

${err}

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

9.3.5  用于判断的<c:if>标签

<c:if>标签用于简单的条件语句。它的属性和描述如表9.6所示:

9.6 <c:if>标签属性和说明

属性

描述

test

需要判断的条件

var

保存判断结果truefalse的变量名,该变量可供之后的工作使用(可选)

scope

变量的作用范围,若没有指定,默认为保存于page范围中的变量(可选)

下面看一个示例:

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

      It is 12

</c:if><br>

${visits} <br>

该示例将判断request请求提交的传入控件数组参数中,下标为“2”的控件内容是否为“12”,若为12则显示“It is 12”。判断结果被保存在page范围中的“visits”变量中。  

9.3.6  用于复杂判断的<c:choose><c:when><c:otherwise>标签

这三个标签用于实现复杂条件判断语句,类似“if,elseif”的条件语句。

q         <c:choose>标签没有属性,可以被认为是父标签,<c:when><c:otherwise>将作为其子标签来使用。

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

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

下面看一个复杂条件语句的示例。

<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 1213

         </c:otherwise>

</c:choose>

该示例将判断request请求提交的传入控件数组参数中,下标为“2”控件内容是否为“11”或“12”或“13”,并根据判断结果显示各自的语句,若都不是则显示“not 11 1213”。

9.3.7  用于循环的<c:forEach>标签

<c:forEach>为循环控制标签。它的属性和描述如表9.7所示:

9.7 <c:forEach>标签属性和说明

属性

描述

items

进行循环的集合(可选)

begin

开始条件(可选)

end

结束条件(可选)

step

循环的步长,默认为1(可选)

var

做循环的对象变量名,若存在items属性,则表示循环集合中对象的变量名(可选)

varStatus

显示循环状态的变量(可选)

下面看一个集合循环的示例。

<%ArrayList arrayList = new ArrayList();

                   arrayList.add("aa");

                   arrayList.add("bb");

                   arrayList.add("cc");

%>

<%request.getSession().setAttribute("arrayList", arrayList);%>

<c:forEach items="${sessionScope.arrayList}" var="arrayListI">

         ${arrayListI}

</c:forEach>

该示例将保存在Session中的名为“arrayList”的ArrayList类型集合参数中的对象依次读取出来,items属性指向了ArrayList类型集合参数,var属性定义了一个新的变量来接收集合中的对象。最后直接通过EL表达式显示在页面上。下面看一个简单循环的示例。

<c:forEach var="i" begin="1" end="10" step="1">

      ${i}<br />

</c:forEach>

示例 从“1”循环到“10”,并将循环中变量“i”显示在页面上。

9.3.8  用于分隔字符的<c:forTokens>标签

<c:forTokens>标签可以根据某个分隔符分隔指定字符串,相当于java.util.StringTokenizer类。它的属性和描述如表9.8所示:

9.8 <c:forTokens> 标签 属性和说明

属性

描述

items

进行分隔的EL表达式或常量

delims

分隔符

begin

开始条件(可选)

end

结束条件(可选)

step

循环的步长,默认为1(可选)

var

做循环的对象变量名(可选)

varStatus

显示循环状态的变量(可选)

下面看一个示例。

<c:forTokens items="aa,bb,cc,dd" begin="0" end="2" step="2" delims="," var="aValue">

         ${aValue}

</c:forTokens>

需要分隔的字符串为“aa,bb,cc,dd”, 分隔符 为“,”。begin 属性 指定从第一个“,”开始分隔,end属性指定分隔到第三个“,”,并将做循环的 变量 名指定为“aValue”。由于步长为“2”,使用EL 表达式 ${aValue}只能显示“aa cc”。

9.3.9  用于包含页面的<c:import>

<c:import>标签允许包含另一个JSP页面到本页面来。它的属性和描述如表9.9所示:

9.9 <c:import>标签属性和说明

属性

描述

url

需要导入页面的URL

context

Web Context该属性用于在不同的Context下导入页面,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)

charEncoding

导入页面的字符集(可选)

var

可以定义导入文本的变量名(可选)

scope

导入文本的变量名作用范围(可选)

varReader

接受文本的java.io.Reader类变量名(可选)

下面看一个示例。

<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

9.3.10  用于得到URL地址的<c:url>标签

<c:url>标签用于得到一个URL地址。它的属性和描述如表9.10所示:

9.10  <c:url>标签属性和说明

属性

描述

value

页面的URL地址

context

Web Context该属性用于得到不同Context下的URL地址,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)

charEncoding

URL字符集 (可选)

var

存储URL的变量名(可选)

scope

变量名作用范围(可选)

下面看一个示例:

<c:url value="/MyHtml.html" var="urlPage" />

<a href="${urlPage}">link</a>

得到了一个URL后,以EL表达式放入<a>标签的href属性,达到链接的目的。

9.3.11  用于页面重定向的<c:redirect>标签

<c:redirect>用于页面的重定向,该标签的作用相当于response.setRedirect方法的工作。它包含urlcontext两个属性,属性含义和<C:url>标签相同。下面看一个示例。

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

该示例若出现在JSP中,则将重定向到当前Web Context下的“MyHtml.html”页面,一般会与<c:if>等标签一起使用。

9.3.12  用于包含传递参数的<c:param>标签

<c:param>用来为包含或重定向的页面传递参数。它的属性和描述如表9.11所示:

9.11 <c:param>标签属性和说明

属性

描述

name

传递的参数名

value

传递的参数值(可选)

下面是一个示例:

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

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

</c:redirect>

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

<script type="text/javascript"> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以用户管理为例,结合spring struts hibernate dwr jstl做的实例,struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查、维护时用户重名提示等功能,还包括页面自动转码设置(web.xml),Hibernate管理服务按Bean名称拦截并进行Spring事务管理,完全由Spring接管DWR AJAX处理(不需要配置dwr.xml)等技术点<br>源码在/mytest/WEB-INF/src下<br>Winxp sp3+JDK1.6+Tomcat 6.0下运行通过<br>因文件长度限制,未加入相关类库,请自行加入,需要的类库有:<br>dom.jar<br>dwr-2.0.rc2.jar<br>jaxen-full.jar<br>jaxp-api.jar<br>jdbc2_0-stdext.jar<br>jstl.jar<br>mail.jar<br>mysql-connector-java-5.0.4-bin.jar<br>sax.jar<br>saxpath.jar<br>standard.jar<br>xalan.jar<br>xercesImpl.jar<br>antlr-2.7.6rc1.jar<br>asm.jar<br>asm-attrs.jar<br>cglib-2.1.3.jar<br>commons-collections-2.1.1.jar<br>commons-logging-1.0.4.jar<br>dom4j-1.6.1.jar<br>ehcache-1.1.jar<br>hibernate3.jar<br>jaas.jar<br>jaxen-1.1-beta-7.jar<br>jta.jar<br>log4j-1.2.11.jar<br>xerces-2.6.2.jar<br>xml-apis.jar<br>spring-beans.jar<br>spring-context.jar<br>spring-core.jar<br>commons-attributes-api.jar<br>commons-attributes-compiler.jar<br>commons-logging.jar<br>log4j-1.2.14.jar<br>spring-dao.jar<br>spring-hibernate3.jar<br>spring-ibatis.jar<br>spring-jdbc.jar<br>spring-jdo.jar<br>spring-jpa.jar<br>spring-toplink.jar<br>persistence.jar<br>spring-aop.jar<br>spring-agent.jar<br>spring-tomcat-weaver.jar<br>asm-commons-2.2.3.jar<br>asm-util-2.2.3.jar<br>aspectjrt.jar<br>aspectjweaver.jar<br>aopalliance.jar<br>cglib-nodep-2.1_3.jar<br>jakarta-oro-2.0.8.jar<br>spring-struts.jar<br>spring-web.jar<br>spring-webmvc.jar<br>spring-portlet.jar<br>struts.jar<br>commons-fileupload.jar<br>commons-httpclient.jar<br>freemarker.jar<br>jasperreports-1.3.3.jar<br>commons-io.jar<br>portlet-api.jar<br>jxl.jar<br>itext-1.3.jar<br>poi-2.5.1.jar<br>cos.jar<br>velocity-1.5.jar<br>velocity-tools-view-1.3.jar<br>commons-codec.jar<br>antlr.jar<br>commons-beanutils.jar<br>commons-digester.jar<br>commons-validator.jar<br>jakarta-oro.jar<br>commons-beanutils-1.7.0.jar<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值