声明:原创作品,转载时请注明文章来自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. 鸟哥的linux私房菜学习记录之例行性工作

  2. 鸟哥的Linux私房菜之学习shell script

    运行程序的时候一般都是创建一个子程序来执行,所以子程序中的变量什么的在当前的shell下没法使用,但是如果使用source来执行就可以在当前shell下执行程序 shift 1 去掉第一个参数,后面接 ...

  3. bootstrap实现 手机端滑动效果,滑动到下一页,jgestures.js插件

    bootstrap能否实现 手机端滑动效果,滑动到下一页 jgestures.js插件可以解决,只需要引入一个JS文件<script src="js/jgestures.min.js& ...

  4. Class.forName("ClassName")与ClassName.class的区别

    引发问题的来源:最近在看比较深入的JVM相关的书,不得不感慨,JVM确实是比较深奥,很多地方难以理解不说,在网上还找不到什么资料,发现一个左思右想都想不明白的问题上网来搜索,结果基本上都是从书上cop ...

  5. javascript 金额格式化

    金额格式化 example: <!DOCTYPE html> <html> <head> <script src="http://code.jque ...

  6. php中urlencode与rawurlencode的区别有那些呢

    urlencode 函数: 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).此编码与 WWW 表单 POST 数据的编码 ...

  7. 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法

    前言相信这样一个问题,大家都不会陌生,“有什么的方法可以使Android的程序APK不用安装,而能够直接启动”.发现最后的结局都是不能实现这个美好的愿望,而腾讯Android手机游戏平台却又能实现这个 ...

  8. 【PHP操作sphinx】

    [index.php] [find.php] <?php header("Content-type:text/html;charset=utf-8"); $keyword = ...

  9. C#:实现托盘

    1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ni_frmMain,Timer timer1, ContentMenuStrip cms_notify.其 ...

  10. linux下访问中文目录文件

    文件路径包含中文时,可输入部分文件名,然后按Tab键. 当路径包含中文括号时,用斜杠,如: \(….\) . 也可用 ls -li ,先查看inum(inode编号),然后再根据编号进行访问,用查找命 ...