概述: JavaWind.net Document 在JSP页面中,使用标签库代替传统的Java片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现。鉴于此,出现了JSTL(JSP Standard Tag Library),为大多数JSP页面逻辑提供了实现的JSTL技术,该技术本身就是一个标签库。 9.2.1 JSTL EL 表达式语言简介 JavaWind.net Document EL是从JavaScript脚本语言得到启发的一种表达式语言,它借鉴了JavaScript多类型转换无关性的特点。在使用EL从scope中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。Web服务器对于request请求参数通常会以String类型来发送,在得到时使用的Java语言脚本就应该是request.getParameter(“XXX”),这样的话,对于实际应用还必须进行强制类型转换。而EL就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用EL表达式取得的值,而不用关心它是什么类型。 <%@ page contentType="text/html; charset=UTF-8"%> 9.2.2 EL 表达式的默认变量 JavaWind.net Document 一个EL表达式包含变量和操作符两个内容。任何存在于JSP作用范围的JavaBean都可以被转化成EL表达式来使用,它所包含的默认变量如下: 1.默认变量pageScope、requestScope、sessionScope、applicationScope 例9.2:使用sessionScope变量的EL表达式 <%request.getSession().setAttribute("sampleValue", new Integer(10));%> 取得保存在Session中参数的sessionScope变量的EL表达式,“.”是property访问操作符,在这里表示从Session中取得“键”为“sampleValue”的参数,并显示出来。显示结果为“10”。 2.默认变量param、paramValues 例9.3:提交请求的页面和接受的页面 <%@ page contentType="text/html; charset=UTF-8"%> 在这个页面中定义了两组控件,控件名为“sampleValue”的是一套控件数组,控件名为“sampleSingleValue”的是单一控件,通过递交将请求参数传送到SampleJsp.jsp。 <%@ page contentType="text/html; charset=UTF-8"%> 这是请求转发到的页面,通过EL表达式的paramValues变量得到控件数组中最后一个控件的递交参数,通过EL表达式的param变量得到单一控件的递交参数。控件数组参数的EL表达式使用“[]”来指定数组下标。本示例将显示控件数组中最后一个控件的值“12”和单一控件的值“SingleValue”。 3.默认变量header、headerValues 4.默认变量cookie 5.默认变量initParam 6.默认变量pageContext |
标签库介绍 JavaWind.net Document
<c: > 标签 JavaWind.net Document
<x: > 标签
<fmt: > 标签 JavaWind.net Document
<sql:> 标签 JavaWind.net Document
9.6 Database access 标签库 对于Database access标签库本书不作重点介绍,只给出几个简单示例让读者略微了解它们的功能。 Database access标签库有以下6组标签来进行工作:<sql:setDataSource>、<sql:query>、<sql:update>、<sql:transaction>、<sql:setDataSource>、<sql:param>、<sql:dateParam>。 9.6.1 用于设置数据源的 <sql:setDataSource> 标签 <sql:setDataSource 该示例定义一个数据源并保存在“ dataSrc ”变量内。 9.6.2 用于查询的 <sql:query> 标签 <sql:query var="queryResults" dataSource="${dataSrc}"> 该示例将返回查询的结果到变量“ queryResults ”中,保存的结果是javax.servlet.jsp.jstl.sql.Result类型的实例。要取得结果集中的数据可以使用<c:forEach>循环来进行。下面看一个示例。 <c:forEach var="row" items="${queryResults.rows}"> “ rows ”是javax.servlet.jsp.jstl.sql.Result实例的变量属性之一,用来表示数据库表中的“列”集合,循环时,通过“ ${row.XXX} ”表达式可以取得每一列的数据,“ XXX ”是表中的列名。 9.6.3 用于更新的 <sql:update> 标签 9.6.4 用于事务处理的 <sql:transaction> 标签 <sql:transaction>标签用于数据库的事务处理,在该标签体内可以使用<sql:update>标签和<sql:query>标签,而<sql:transaction>标签的事务管理将作用于它们之上。 9.6.5 用于事务处理的 <sql:param> 、 <sql:dateParam> 标签 这两个标签用于向SQL语句提供参数,就好像程序中预处理SQL的“ ? ”一样。<sql:param>标签传递除java.util.Date类型以外的所有相融参数,<sql:dateParam>标签则指定必须传递java.util.Date类型的参数。 |
<fn:> 标签 JavaWind.net Document