一. <c:out> 作用:显示数据的内容,就像是<%=scripting-language%>一样; 语法:1) 没有本体(body)内容 <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/> 2) 有本体(body)内容 <c:out value="value" [escapeXml="{true|false}"]> default value </c:out> 属性:1) value: 需要显示出来的值; 2) default: 如果value的值为null, 则显示default的值; 3) escapeXml: 是否转换特殊字符, 如:< 转换成 , 默认情况下其值为true; Null和错误处理: 假若value为null, 会显示default的值,假若没有设定default的值,则会显示一个空的字符串; 范例:<c:out value="Hello JSP 2.0!!"/> <!--在网页上显示Hello JSP2.0!!--> <c:out value="${3+5}"/> <!--在网页上显示8;--> <c:out value="${param.data}" default="No Data"/> <c:out value="<p>有特殊字符</p>"/> <c:out value="<p>有特殊字符</p>" escapeXml="false"/> 二. <c:set> 作用:将变量储存至JSP范围中或是JavaBean的属性中; 语法:1) 在value的值储存至范围为scope的varName变量之中 <c:set value="value" var="varName" [scope="{page|request|session|application}"]/> 2) 在本体内容的值储存至范围为scope的varName变量之中 <c:set var="varName" [scope="{page|request|session|application}"]> ...本体内容 </c:set> 3) 将value的值储存至target对象的属性中 <c:set value="value" target="target" property="propertyName"/> 4) 将本体内容的数据储存至target对象的属性中 <c:set target="target" property="propertyName"> ...本体内容 </c:set> 属性:1) value: 要被储存的值; 2) var : 欲存入的变量名称; 不能使用表达式来表示; 3) scope: var变量的JSP范围,默认值是page; 不能使用表达式来表示; 4) target:为一JavaBean或java.util.Map对象; 5) property: 指定target对象的属性; 范例:<c:set var="number" scope="request" value="${1+1}"/> <c:set var="number" scope="session"> ${3+5} </c:set> <c:set var="number" scope="request" value="${param.number}"/> <c:set target="${user}" property="name" value="${param.Username}"/> 三. <c:remove> 作用:移除变量; 语法:<c:remove var="varName" [scope="{page|request|session|application}"]/> 属性:1) var : 欲移除的变量名称; 不能使用表达式来表示; 2) scope: var变量的JSP范围,默认值是page; 不能使用表达式来表示; 四. <c:catch> 作用:处理产生错误的异常状况,并且将错误信息储存至varName变量中。 语法:<c:catch [var="varName"]> ...欲抓取错误的部分 </c:catch> 属性:1) var: 用来储存错误信息的变量; 五. <c:if> 作用:和一般在程序中使用的if一样。 语法:1) 没有本体内容(body) <c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/> 2) 有本体内容(body) <c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]> 本体内容 </c:if> 属性:1) test: 如果表达式的结果为true, 则执行本体内容,false相反 2) var : 用来储存test运算后的结果,即true或false; 3) scope: var变量的JSP范围 六. <c:forEach> 作用:循环控制,它可以将集合中的成员循序浏览一遍, 当条件符合时,就会持续重复执行<c:forEach>的本体内容。 语法:1) 迭代集合对象之所有成员 <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> 本体内容 </c:forEach> 2) 迭代指定的次数 <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]> 本体内容 </c:forEach> 属性:1) var : 用来存放现在指到的成员 2) items : 被迭代的集合对象 3) varStatus: 用来存放现在指到的相关成员信息, 它有四个属性: index: 现在指到成员的索引; count: 总共指到成员的总数; first: 现在指到的成员是否为第一个成员; last: 现在指到的成员是否为最后一个成员; (见c_forEach5.jsp) 4) begin: 开始的位置; 5) end : 结束的位置; 6) step : 每次迭代的间隔数; 注意:1) varName的范围只存在<c:forEach>...</c:forEach>的本体中,如果超出了本体,则不能再取得varName的值。 <c:forEach items=${atts}" var="item"> </c:forEach> ${item}<br> ${item}则不会显示item的内容 演示一下:<c:forEach>配套List, Set以及Map时使用的情景。 ??????????????????????????????????????????????????????????? 七. <c:import> 作用:把其它静态或动态文件包含至本身JSP网页。和<jsp:include>相比,它能包含不同web application或者是其他网站的文件。 语法:1) <c:import url="url" [context="context"] [var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]> 本体内容 </c:import> 2) <c:import url="url" [context="context"] varReader="varReaderName" [charEncoding="charEncoding"]> 本体内容 </c:import> 属性:1) url: 一文件被包含的地址; 2) context: 相同container下,其他web站点必须以"/"开头; 3) var : 储存被包含的文件的内容(以String类型存入)。 当var属性存在的时候,被包含的文件内容导入后不会输出在网页上,而是以String的形式 4) scope : var变量的JSP范围; 5) charEncoding: 被包含文件之内容的编码格式; 6) varReader : 储存被包含的文件的内容(以Reader类型存入) 示例: 1) <c:import url="http://java.sun.com"/> 2) <c:import url="ftp://202.168.0.202/data.txt"/> <!--支持ftp协议--> 3) <c:import url="Hello.jsp"/> 4) <c:import url="images/hello.txt"/> 5) <c:import url="/jsp/index.html" context="/others"/> 导入同一个服务器下others应用下的jsp/index.html文件内容, 注意: a. 被包含的web站点必须在server.xml中定义过; b. <context>的crossContext属性值必须为true。这样,others应用下的文件 才可以被其他web站点调用。 ... <context path="/others" docBase="others" crossContext="true" reloadable="true"/> ... 八. <c:url> 作用:用来产生URL, 以前我们必须使用相对地址或是绝对地址去取得需要的图文件或文件,现在我们可以直接利用<c:url>从Web站点的角度来设定需要的图文件或文件的地址。 语法:1) <c:url value="value" [context="context"] [var="varName"] [scope="{page|request|session|application}"]/> 2) <c:url value="value" [context="context"] [var="varName"] [scope="{page|request|session|application}"]> <c:param>标签 </c:url> 属性:1) value; 执行的URL; 2) context: 相同container下,其他web站台必须以"/"开头; 3) var: 储存被包含文件的内容(以String类型存入) 4) scope: var变量的JSP范围 示例:1) <c:url value="http://www.javaw.cn"> <c:param name="param" value="value"/> </c:url> 执行结果产生一个网址为:http://www.javaw.cn?param=value 2) <a href=" <c:url value="http://www.javaw.cn"> <c:param name="param" value="value"/> </c:url>Java技术论坛 </a> 执行结果产生一个网址为:<a href="http://www.javaw.cn?param=value">Java技术论坛</a> 3) <img src="<c:url value="/images/code.gif"/>"/> 执行结果产生一个网址为:<img src="/应用名称/images/code.gif"/> 九. <c:redirect> 作用:将客户端的请求从一个JSP网页导向到其他文件 语法:1) 没有本体内容 <c:redirect url="url" [context="context"]/> 2) 本体内容代表查询字符串参数 <c:redirect url="url" [context="context"]> <c:param> </c:redirect> 属性:1) url: 导向的目标地址; 2) context: 相同container下,其他web站点必须以"/"开头 示例:<c:redirect url="http://localhost:8080"> <c:param name="param" value="value"/> </c:redirect> 十. <fmt:setLocale> 作用:设定用户的语言区地区。 语法:<fmt:setLocale value="local" [variant="variant"] [scope="{page|request|session|application}"]/> 属性:1) value: 地区代码。其中最少要有两个字母的语言代码,如:zh、en, 然后也可以再加上两个字母的国家和地区代码,如:US, TW, 两者可以由"-"或"_" 相连接起来,例如:zh_TW, zh_CN, en, en_US. 假若value为null时,则使用执行中的默认地域(locale) 2) varient: 供货商或浏览器的规格,例:WIN代表Windows, Mac代表Macintosh. 3) scope: 地区设定的套用范围; 十一. <fmt:requestEncoding> 作用:设定字符串编码,功能和ServletRequest.setCharacterEncoding()相同; 语法: <fmt:requestEncoding [value="charseName"]/> 属性:1) value: 字符串编码,当我们设定value为GB2312时,表示将所有传送过来的字符串皆用GB2312编码处理,如果没有设定value属性,则它将会自动去寻找 合适的编码方式。 十二. <fmt:message> 作用:从指定的资源中把特定关键字中的值抓取出来; 语法:1) <fmt:message key="messageKey" [bundle="resourceBundle"] [var="varName"] [scope="{page|request|session|application}"]/> 2) <fmt:message key="meesageKey" [bundle="resourceBundle"] [var="varName"] [scope="{page|request|session|application}"]> <fmt:param> </fmt:message> 3) <fmt:message key="meesageKey" [bundle="resourceBundle"] [var="varName"] [scope="{page|request|session|application}"]> 索引 (<fmt:param>标签) </fmt:message> 属性: 1) key: 索引; 2) bundle: 使用的数据来源; 3) var: 用来储存国际化信息; 4) scope: var变量的JSP范围; 十三. <fmt:param> 作用:动态设定数据来源中抓出内容的参数; 语法:1) 通过value属性设定参数值 <fmt:param value="messageParameter"/> 2) 通过本体内容设定参数值 <fmt:param> 本体内容 </fmt:param> 示例:1) Str3=today is {0, date} 其中{0,date}表示为一个动态变量, 0代表第一个动态变量;date代表该动态变量的类型。 十四. <fmt:bundle> 作用:设定本体内容的数据来源; 语法:<fmt:bundle basename="basename" [prefix="prefix"]> 本体内容 </fmt:bundle> 属性:1) basename: 要使用的资源名称,如果我们的properties文件为Resource.properties, 那么 basename的值为Resource. basename的值千万不可有任何文件类型。 2) prefix: 设定前置关键字。 例:当properties中内容如下: requestinfo.label.method=Method: requestinfo.label.requesturi=Request URI: 那么我们可以写成如下方式将其内容显示出来: <fmt:bundle basename="Resource" prefix="requestinfo.label."> <fmt:message key="method"/> <fmt:message key="requesturi"/> </fmt:bundle> 十五.<fmt:setBundle> 作用:设定默认的数据来源,或者也可以将它设定到属性范围中. 语法:<fmt:setBundle basename="basename" [var="varName"] [scope="{page|request|session|application}"] /> 属性:1) basename: 要使用的资源名称; 2) var : 储存资源的名称; 3) scope : var变量的JSP范围; 说明:basename设定要使用的数据源, 和<fmt:bundle>用法相同。如果没有设定var时,那么设定好的数据来源 将会变成默认的数据来源,让在同一网页或同一属性范围中<fmt:message>都可以直接默认使用此数据来 源。相反,如果设定var时,那么将会把此数据来源存入varName中,当<fmt:message>要使用时,必须使 用bundle这个属性来指定。如: <fmt:setBundle baseName="Resource" var="resource" scope="session"/> <fmt:message key="str1" bundle="${resouce}"/> 如没有设定var时,则只须写成如下: <fmt:setBundle baseName="Resource"/> <fmt:message key="str1"/> 一般<fmt:bundle>和<fmt:setBundle>都可以搭配<fmt:setLocale>使用,当我们有多种语言的数据业来 源时,可以将文件名取成Resource_zh_TW.properties, Resource_en.properties和Resouce.properties 当我们将区域设定为zh_TW, 那么使用<fmt:setBundle>或<fmt:bundle>时,将会默认读取 Resource_zh_TW.properties资源文件,如果<fmt:setLocale>设定为en时,那么会默认抓取 Resource_en.properties来使用,最后如果设定的区域没有符合的文件名,将使用Resource.properties 来当做数据来源, 见fmt_i18n.jsp. 十六.<fmt:formatNumber> 作用:依据设定的区域将数字改为适当的格式。 语法:<fmt:formatNumber value="numbericValue" [type="{number|currency|percent}"] 示例:<fmt:formatNumber value="123" type="currency"/> 显示为 $123 十七.<fmt:parseNumber> 作用:将字符串类型的数字、货币或百分比,都转为数字类型。 语法:<fmt:parseNumber value="numericValue" [type="{number|currency|percent}"] [pattern="customerPattern"] .../> 示例:<fmt:parseNumber value="500,800"/>显示为: 500800 <fmt:parseNumber value="$5000" type="currency"/> 显示为:5000 十八.<fmt:formatDate> 作用:格式化日期,时间 语法:<fmt:formatDate value="date" [type="{time|date|both}"] [dateStyle="{default|short|medium|long|full}"] [timeStyle="{default|short|medium|long|full}"] /> 示例:<jsp:useBean id="now" class="java.util.Date"/> <fmt:formatDate value="${now}"/> 十九.<fmt:parseDate> 作用:将字符串类型的时间或日期都转为日期时间类型; 语法:<fmt:parseDate value="date" 示例:<fmt:parseDate value="2003/2/17"/> 二十. <fmt:setTimeZone> 作用:设定默认时区或是将时区储存至属性范围中,方便以后使用 语法:<fmt:setTimeZone value="timeZone" [var="varName"] [scope="{page|request|session|application}"]/> 属性:1) value: 使用的时区:可以为EST, CST, MST和PST,为null时,则默认为GMT时区。 示例:<fmt:setTimeZone value="PST" scope="session"/> 二十一.<fmt:timeZone> 作用:设定暂时的时区; 语法:<fmt:timeZone value="timeZone"> 本体内容 </fmt:timeZone> 示例:<fmt:timeZone value="PST"> <fmt:formatDate.../> <fmt:formatDate.../> ... </fmt:timeZone> 二十二.<sql:setDataSource> 作用:用来设定数据来源(DataSource) 语法:1) 直接使用已存在的数据来源 <sql:setDataSource dataSource="dataSource" [var="varName"] [scope="{page|request|session|application}"]/> 2) 使用JDBC方式,建立数据库联机 <sql:setDataSource url="jdbcUrl" driver="driverClassName" user="userName" password="password" [var="varName"] [scope="{page|request|session|application}"]/> 示例:1) <sql:setDataSource dataSource="java:comp/env/jdbc/mysql"/> 2) <sql:setDataSource dataSource="jdbc:mysql://localhost/test,com.mysql.jdbc.Driver,root,"/> dataSource="url,driver,user,password" 3) <sql:setDataSource url="jdbc:mysql://localhost/test" driver="com.mysql.jdbc.Driver" user="root" password=""/> 二十三.<sql:query> 作用:查询数据库的数据. 语法:1) 没有本体内容 <sql:query sql="sqlQuery" var="varName" [scope="{page|request|session|application}"] [dataSource="dataSource"] [maxRows="maxRows"] [startRow="startRow"]/> 2) 本体内容为查询指令 <sql:query sql="sqlQuery" var="varName" [scope="{page|request|session|application}"] [dataSource="dataSource"] [maxRows="maxRows"] [startRow="startRow"]> ... sqlQuery ... </sql> 属性:1) sql: SQL语句(select); 2) dataSource: 数据来源; 3) maxRows: 设定最多可暂存的数据笔数; 4) startRow: 设定数据从第几笔开始, 以0为第一笔数据; 5) var: 储存查询结果, 必须的; 6) scope: var变量的JSP范围; 查询结果存放在指定名称的属性中后,可以通过以下属性访问查询结果: rows: 以字段名称当做索引的查询结果; rowsByIndex: 以数字当作索引的查询结果; columnNames: 字段名称; rowCount: 查询到的数据笔数; limitedByMaxRows: 取出最大数据笔数的限制; 二十四.<sql:update> 作用:执行修改操作(update,delete,create table均可) 语法:1)没有本体内容 <sql:update sql="sqlUpdate" [var="varName"] [scope="{page|request|session|application}"] [dataSource="dataSource"]/> 2)本体内容为查询指令 <sql:update sql="sqlUpdate" [var="varName"] [scope="{page|request|session|application}"] [dataSource="dataSource"]> ... sqlUpdate ... </sql:query> 属性:1) sql: SQL语法(update,insert,delete...) 2) dataSource: 数据来源; 3) var: 储存改变的数据笔数; 4) scope: var变量的JSP范围; 二十五. <sql:transaction> 作用:提供事务支持,保证多个数据操作的完整性. <sql:transaction>主要是将所有必须同时执行的交易放在它的本体内容中,当本体内容有错误发生时,将 不会执行任何一个SQL语句,所以可保障交易机制的安全性。 语法:<sql:transaction [dataSource="dataSource"] [isolation="{read_committed|read_uncommitted|repeatable|serializable}"]> <sql:query>or<sql:update> </sql:transaction> 二十六. <x:parse> 作用:解析xml文件; 语法:1) <x:parse doc="XMLDocument" [var="var' [scope="{page|request|session|application}"] .../> 2) <x:parse [var="var' [scope="{page|request|session|application}"] ...> 欲被解析的XML文件 </x:parse> 属性:1) doc: xml文件; 2) var: 储存解析后的XML文件 3) scope: var变量的JSP范围 示例:1) <c:import var="sample" url="http://www.javaw.cn/web.xml"/> <x:parse doc="${sample}" var="sampleXml"/> 2) <x:parse doc="${sample}" var="sampleXml"> <c:import url="http://www.javaw.cn/web.xml"/> </x:parse> 二十七.<x:out> 作用:取出XML中的字符串. 语法:<x:out select="XPathExpression" [escapeXml="{true|false}"]/> 属性:1) select: XPath语句; 2) escapeXml: 是否转换特殊字符; 示例:<x:parse var="sampleXml"> <item> <name>car</name> <price>10000</price> </item> </x:parse> 显示<name>的内容, 1) <x:out select="$sampleXml//name"/> 2) <x:out select="$sampleXml/item/name"/> 二十八.<x:set> 作用:取出XML中的字符串, 储存至属性范围中 语法:<x:set select="XPathExpression" var="var" [scope="{page|request|session|application}"]/> 属性:1) select: XPath语句; 2) var: 将从XML文件中取得的内容储存至varName中; 3) scope: var变量的JSP范围; 示例:<x:parse var="sampleXml"> <item> <name>car</name> <price>10000</price> </item> </x:parse> 显示<name>的内容, 1) <x:out select="$sampleXml//name"/> 2) <x:out select="$sampleXml/item/name"/> 三十. fn:contains() 作用:判断某字符串是否在一字符串之中; 语法:${fn:contains(string, substring)} => boolean 属性:1) string: 原输入的字符串; 2) substring: 测试用的字符串; 3) Result: 回传string是否包含substring. 若有,则回传true; 若无,则回传false; 三十一. fn:containsIgnoreCase() 作用:判断某字符串是否在已有字符串之中,并忽略其大小写; 语法:${fn:containsIgnoreCase(string, substring)} => boolean 三十二. fn:startsWith(string, prefix) 作用:判断一字符串是否以某一字符串为开头; 语法:${fn:startsWith(string, prefix)} => boolean 三十三. fn:endsWith(string, suffix) 作用:判断一字符串是否以某一字符串为结尾; 语法:${fn:endsWith(string, suffix)} => boolean 三十四. fn:escapeXml(String) 作用:用来转换转义符,例如:将<,>,',"和&转换成<,>,',"和& 语法: ${fn:escapeXml(String) => String 三十五. fn:indexOf(string, substring) 作用:回传某字符串到一字符串第一次吻合的位置; 语法: ${fn:indexOf(string, substring)} => int 三十六. fn:split(string, delimiters) 作用:将字符串分离成一字符串数组; 语法: ${fn:split(string, delimiters)} => string[] 三十七. fn:join(array, separator) 作用:将数组中的全部元素以指定字符串作为连接符,回传结合后的字符串; 语法: ${fn:join(array, separator)} => string 三十八. fn:replace(inputString, beforeSubstring, afterSubstring) 作用:将字符串中的某些子字符串用另一字符串取代; 语法: ${fn:replace(inputString, beforeSubstring, aterSubstring)} => string 属性:1) inputString: 原输入的字符串; 2) beforeString: 要替换的字符串; 3) afterSubstring: 替换成为的字符串; 三十九. fn:trim(string) 作用:去除字符串的前后空白; 语法: ${fn:trim(string)} 四十. fn:substring(string, beginIndex, endIndex) 作用:抽取字符串中的某一子字符串; 语法: ${fn:substring(string, beginIndex, endIndex)} => string 四十一. fn:substringAfter(string, substring) 作用:抽取字符串中某子字符串之后的字符串; 语法:${fn:substringAfter(string, substring)} => string 属性:1) string: 原输入的字符串; 2) substring: 某子字符串; 四十二. fn:substringBefore(string, substring) 作用:抽取字符串中某子字符串之前的字符串; 语法:${fn:substringBefore(string, substring)} => string 属性:1) string: 原输入的字符串; 2) substring: 某子字符串; 四十三. fn:toLowerCase(string) 作用:转换为小写字符; 语法:${fn:toLowerCase(string)} => string 四十四. fn:toUpperCase(string) 作用:转换为大写字符; 语法:${fn:toUpperCase(string)} => string