声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4289487.html

标准标签库(JSTL)... 98

JSTL的组成... 98

核心标签库... 99

<c:out>标签... 99

<c:set>标签... 99

<c:remove>标签... 100

<c:catch>标签... 100

<c:if>标签... 101

<c:choose>标签... 101

<c:forEach>标签... 102

<c:forTokens>标签... 104

URL相关的标签... 105

国际化标签... 110

<fmt:setLocale>标签... 110

<fmt:setBundle>标签... 111

<fmt:bundle>标签... 112

<fmt:message>标签... 112

<fmt:param>标签... 113

<fmt:requestEncoding>标签... 113

<fmt:timZone>标签... 114

<fmt:setTimZone>标签... 115

<fmt:formatDate>标签... 115

<fmt:parseDate>标签... 117

<fmt:formatNumber>标签... 117

<fmt:parseNumber>标签... 119

数据库签库... 120

<sql:setDataSource>标签... 121

<sql:query>标签... 121

<sql:update>标签... 123

<sql:transaction>标签... 124

<sql:param>标签... 125

<sql:dateParam>标签... 125

XML标签... 126

<x:parse>标签... 127

<x:out>标签... 128

<x:set>标签... 128

<x:if>标签... 129

<x:choose>标签... 129

<x:forEach>标签... 130

<x:transform>标签... 131

<x:param>标签... 133

JSTL函数... 133

fn:toLowerCase函数... 133

fn:toUpperCase函数... 133

fn:trim函数... 133

fn:escapeXml函数... 133

fn:length函数... 133

fn:split函数... 134

fn:join函数... 134

fn:indexOf函数... 134

fn:contains函数... 134

fn:containsIgnoreCase函数... 134

fn:startsWith函数... 134

fn:endsWith函数... 134

fn:replace函数... 134

fn:substring函数... 135

fn:substringAfter函数... 135

fn:substringBefore函数... 135

标准标签库(JSTL

JSP1.2规范开始

JSTL的组成

完整的JSTL应包含Sun公司提供的jstl.jar包和Web容器商提供的JSTL实现包,以 Apache 小组提供的JSTL实现包为例,完整的JSTL包含 jstl.jar、standard.jar和xalan.jar三个jar包。Sun将jstl.jar封装了JSTL所要求的一些API接口类,Apache小组编写的JSTL API实现类封装在standard.jar包中。由于在JDK1.5才引入了XPath API,所以Apache小组在JSTL中使用的是他们自己开发的XPath API,这些API封装在xalan.jar包中。

要在JSP文件中使用JSTL,首先就需要使用taglib指令导入所需要使用的JSTL标签库, taglib指令的uri属性必须为相应标签库的TLD文件中的<uri>元素的值,taglib指令的prefix属性可以自己随意指定,但最好是采用上表中的建议前缀。

核心标签库

<c:out>标签

将内容输出到pageContext对象当前保存的“out”对象中。会自动对HTML特殊字符进行转义,如 <、>、'、"、&等,默认将它们分别转义成了&lt;、&gt;、&amp;、'、"

1、没有标签体:

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

2、有标签体时,"

reloadable="true">

<Resource name="jdbc/testSQL" auth="Container" type="javax.sql.DataSource"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=it315"

username="sa" password="green" mazActive="100" maxIdle="30"

maxWait="10000"/>

</Context>

<%@ </sql:param>

</sql:query>

<table ">

<书名>Java就业培训教程</书名>

<作者>张孝祥</作者>

<售价>39.00元</售价>

</书>

<书 id="002">

<书名>JavaScript网页开发</书名>

<作者>张孝祥</作者>

<售价>28.00元</售价>

</书>

</书架>

<x:parse>标签

解析XML源数据,并将解析的结构对象保存在各种Web域中的某个属性中。不执行任何DTD验证或Schema验证。

1、  解析由String或Reader对象指定的XML文档

<x:parse {doc="xmlDocument" | xml="xmlDocument"}

{var="var" [scope="scope"] | varDom="var" [scopeDom="scope"]}

[systemId="systemId"]

[filter="filter"] />

2、  解析在标签体中指定的XML文档

<x:parse  {var="var" [scope="scope"] | varDom="var" [scopeDom="scope"]}

[systemId="systemId"]

[filter="filter"] />

       XML Document to parse

</x:parse>

scope:page、request、session、application

xml属性是为XML规范保留的,建议尽量不要使用该属性,而是使用doc属性。

如果filter属性为null,则不对XML源文档进行过滤,直接进行解析。

JSTL规范中没有定义var属性值的对象类型,允许XML解析器使用任意适当的类型。varDom属性的值是一个DOM文档。通过var和varDome暴露的对象都可以用使用设置XPath表达式的上下文。

<%@ </title>

</head>

<body>

<table border="1">

<tr align="center"><td>书ID号</td><td>书名</td>

<td>作者</td><td>价格</td></tr>

<xsl:for-each select="书架/书">

<tr align="center">

<td><xsl:value-of select="@id"/></td>

<td><xsl:value-of select="书名"/></td>

<td><xsl:value-of select="作者"/></td>

<td><xsl:value-of select="售价"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

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

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

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

<%@ page import="javax.xml.transform.stream.StreamResult" %>

<c:import url="book.xml" charEncoding="gb2312" var="doc" />

<c:import url="book2.xsl" charEncoding="gb2312" var="xslt" />

将转换结果直接输出到当前JSP页面:

<x:transform doc="${doc}" xslt="${xslt}" /><br />

设置var属性,输出转换结果的&lt;body&gt;元素的字符串值:<br />

<x:transform doc="${doc}" xslt="${xslt}" var="trans" />

<x:out select="$trans//body" /><hr />

设置result属性,将转换的结果输出到指定文件中

<%

//设置保存转换结果的文件

String path = getServletContext().getRealPath("/");

StreamResult streamResult = new StreamResult(new String(path + "book.html"));

session.setAttribute("streamResult", streamResult);

%>

<x:transform doc="${doc}" xslt="${xslt}" result="${streamResult}" />

将转换结果直接输出到当前JSP页面:

书ID号

书名

作者

价格

001

Java就业培训教程

张孝祥

39.00元

002

JavaScript网页开发

张孝祥

28.00元

设置var属性,输出转换结果的<body>元素的字符串值:
书ID号书名作者价格001Java就业培训教程张孝祥39.00元002JavaScript网页开发张孝祥28.00元


设置result属性,将转换的结果输出到指定文件中

<x:param>标签

用于嵌套在<x:transform>标签内设置转换的参数。

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

<x:param name="name" value="value" >

       parameter value

</x:param>

JSTL函数

JSTL中提供的EL自定函数必须在EL表达式中使用。

fn:toLowerCase函数

转换小写:${fn:toLowerCase("Www.IT315.org")}返回“www.it315.org”

fn:toUpperCase函数

fn:trim函数

删除字符首尾空格。

fn:escapeXml函数

将字符串中的需要进行转换的HTML特殊字符进行HTML编码转换,这样可以在浏览器中显示出HTML特殊字符。

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

${fn:escapeXml('<meta http-equiv="refresh"

content="0;url=http://www.it315.org"/>')}

上面的结果是页面不会自动跳转了,而是直接输出。

fn:length函数

返回一个集合或数组对象中包含的元素的个数,或返回一个字符串中包含的字符的个数。其参数可以是<c:forEach>标签的items属性支持的任何类型,包括任意类型的数组、java.util.Collection、java.util.Iterator、java.util.Enumeration、java.util.Map等类型的实例对象和字符串。

如果参数为null或是元素个数为0的集合或数组或空字符串时,返回0。

fn:split函数

第一个参数表示要分割的字符串,第二个参数表示作为分隔符的字符串。

fn:split("www.it315.org" ,".")[1] 返回值为“it315”

fn:split("" ,".")[0] 返回空字符串

fn:split("www.it315.org" ,"")[1] 返回值为“www.it315.org”

fn:join函数

以一个字符串作为分隔符,将一个字符串数组中的所有元素合并为一个字符串。第一个参数是要操作的字符串数组,第二个参数是作为分隔符的字符串。

fn:join(fn:split("www ,it315 ,org" ," ,") , " .") 返回“www.it315.org”

fn:indexOf函数

返回指定字符串在一个字符串第一次出现的索引值。未包含时返回-1。如果第二个参数为空字符串时,总是返回0。

fn:indexOf("www.it315.org" , "t3")返回值为5

fn:indexOf("www.it315.org" , "")返回值为0

fn:contains函数

如果第二个参数的值为空字符串,总返回true,实际上,fn:contains(string,substring)等价于fn:indexOf(string ,substring)!=-1

fn:containsIgnoreCase函数

与fn:contains函数相同,只是不区别大小写。

fn:containsIgnoreCase(string, substring)等价于fn:contains (fn:toUpperCase(string), fn:toUpperCase(substring))

fn:startsWith函数

检测一个字符串是否以指定字符串开始的。如果第二个参数为空字符串,总是返回true。

fn:startsWith(string , prefix) 等价于表达式fn:indexOf(string , prefix)==0

fn:endsWith函数

是否以指定字符串结尾。如果第二个参数为空字符串,则总返回true。

fn:replace函数

第一个为源字符串,第二个表示源子符串中要被替换的子字符串,第三个参数表示要被替换成的字符串。

如果第二个参数是空字符串,则不执行任何替换操作。

fn:substring函数

第一个参数为源字符串,第二个参数为开始索引,第三个参数为结束索引。

fn:substringAfter函数

截取并返回一个字符串中的指定子字符串第一次出现之后的子字符串。

fn:substringAfter("www.it315.org", ".")返回“it315.org”

fn:substringBefore函数

fn:substringAfter("www.it315.org", ".")返回“www”

servlet&jsp高级:第五部分的更多相关文章

  1. servlet&jsp高级:第三部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. servlet&jsp高级:第四部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. servlet&jsp高级:第二部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. servlet&jsp高级:第一部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. Servlet&jsp基础:第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. 小峰servlet/jsp(1)

    一.scriptlet标签: 通过scriptlet标签我们可以可以在jsp理嵌入java代码: 第一种:<%! %>  可以在里面定义全局变量.方法.类: 第二种:<% %> ...

  7. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试

    Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照它. 做为一个程序员,对于各个框架的性能要 ...

  8. 面试题:servlet jsp cook session 背1

    一.Servlet是什么?JSP是什么?它们的联系与区别是什么? Servlet是Java编写的运行在Servlet容器的服务端程序,狭义的Servlet是指Servlet接口,广义的Servlet是 ...

  9. JSP高级功能-java之JSP学习第三天(非原创)

    文章大纲 一.JSP 标准标签库(JSTL)二.JSP 连接数据库三.JSP XML 数据处理四.JSP JavaBean五.JSP 自定义标签六.JSP 表达式语言七.JSP 异常处理八.JSP 调 ...

随机推荐

  1. DirectX 绘制

    先上图.后面会描写 ,细节

  2. java总结第三次//类和对象2、3

    四.类和对象2 主要内容:Java类的继承.方法的重写.覆盖.访问控制.super 关键字.多态性及其应用 1.继承 要求:Java只支持单继承,不允许多重继承 一个子类只能有一个父类 一个父类可以派 ...

  3. 161207、高并发:java.util.concurrent.Semaphore实现字符串池及其常用方法介绍

    实现字符串池: StrPool.java import java.util.ArrayList; import java.util.List; import java.util.concurrent. ...

  4. jqGrid中选择的行的数据[转]

    如何获取jqGrid中选择的行的数据? 下面可以获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id: var id=$(‘#gridTable’).jqGrid(‘getGridPa ...

  5. POSIX字符类

    POSIX字符类需要用引号,或双括号[[]]括起来: [:alnum:]:匹配字面和数字字符.等同于A~Z,a~z,0~9 [:alpha:]:匹配字母字符.等同于A~Z,a~z [:blank:]: ...

  6. DECODE函数

    DECODE函数相当于一条件语句(IF),它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值.函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式.当然,如果未能与任何一个实参序偶匹 ...

  7. JavaEE基础(五)

    1.Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基 ...

  8. greenplum集群安装

    一.环境配置 1.地址分配 192.168.1.201 mdw master 192.168.1.202 sdw1 segment1 192.168.1.203 sdw2 segment2 2.创建用 ...

  9. shell十三问:关于${0##*/} 和${0%/*}

    转自shell十三问:  http://bbs.chinaunix.net/thread-218853-1-1.html …… 假設我們定義了一個變量為:file=/dir1/dir2/dir3/my ...

  10. python中时间的基本使用

    格式化日期 我们可以使用 time 模块的 strftime 方法来格式化日期,: time.strftime(format[, t]) #!/usr/bin/python # -*- coding: ...