声明:原创作品,转载时请注明文章来自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. Elasticsearch--数据索引

    前言 Elasticsearch可以支持全文检索,那么ES是以什么机制来支持的,这里索引就是一个重要的步骤,经过索引之后的文档才可以被分析存储.建立倒排索引.本篇就是以ES的数据检索操作来讨论的. 更 ...

  2. 图像处理控件ImageGear for .NET教程如何为应用程序 添加DICOM功能(2)

    在前面的一些关于图像处理控件ImageGear for .NET文章<图像处理控件ImageGear for .NET教程: 添加DICOM功能(1)>中讲解了如何对应用程序添加DICOM ...

  3. linux驱动的入口函数module_init的加载和释放【转】

    本文转载自:http://blog.csdn.net/zhandoushi1982/article/details/4927579 就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含 ...

  4. SQL Server 复制 订阅与发布

    SQL Server 复制 订阅与发布 通过SQL Server 2008数据库复制实现数据库同步备份 SqlServer2008 数据库同步的两种方式(Sql JOB) SqlServer2008 ...

  5. PHP中使用数组指针函数操作数组示例

    数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素.默认是指向数组中第一个元素通过移动或改变指针的位置,可以访问数组中的任意元素.对于数组指针的控制PHP提供了以下几个内建函数可以利用. ★ ...

  6. C#: 获取执行程序所在路径和启动资源管理器

    一. 获取执行程序所在路径 1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory;  //获取的是主程序目录,线程启 ...

  7. Greenplum迁移到配置不同的GP系统

    要使用gp_restore或gpdbrestore并行恢复操作,恢复的系统必须与备份的系统具有相同的配置(相同数量的Instance).如果想要恢复数据库对象和数据到配置不同的系统(比如系统扩展了更多 ...

  8. C语言中使用静态函数的好处

    C语言中使用静态函数的好处: 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多. ???(对这个不是很理解)其实我觉得上面这种说法是错误的,它的主 ...

  9. java 面试每日一题2

    题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 注:如果想单独输出中文的个数和中文符号的个数,只需把isChinese()中的if语句修改 知识补充: java不像C中拥有s ...

  10. 简单选择排序(Java)

    简单选择排序: 每一趟在整个记录中找到最小的那个作为有序序列的第i个记录. class SelectSort{ public void p(int[] a){ for(int i=0;i<a.l ...