- 浏览: 1730904 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (288)
- java (59)
- javaweb (15)
- eclipse (16)
- uml (1)
- java ee (7)
- windows (5)
- html (4)
- 数据结构和算法 (6)
- oracle (84)
- struts (3)
- ajax (3)
- hibernate (3)
- spring (12)
- ExtJS (14)
- 随笔 (2)
- JavaScript (9)
- PL SQL (12)
- tomcat (2)
- Plugins (5)
- office (2)
- webService (4)
- others (9)
- htc (1)
- 自定义标签的行为 (1)
- powerDesigner (3)
- webSphere (5)
- linux (6)
- dom4j (1)
- xml (5)
- json (2)
- bat (4)
- spring MVC (5)
- MySQL (12)
- junit (4)
- maven (10)
- jquery (1)
- mongoDB (16)
- git (0)
- mybatis (5)
- svn (3)
- activemq (3)
- quartz_job (1)
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
利用powerDesigner逆向导出oracle表为PDM并把PDM转为CDM -
sanshao:
roompig 写道beancopier只实现了浅拷贝的功能, ...
使用Cglib的BeanCopier实现Bean的拷贝 -
贝塔ZQ:
Java实现导入导出excel文件,利用poi实现感觉代码比较 ...
利用java导入导出excel到oracle数据库 -
suxj16:
部署之后启动有问题org.springframework.be ...
spring mvc文件上传实现进度条(转) -
suxj16:
谢谢分享。部署之后启动有问题org.springframewo ...
spring mvc文件上传实现进度条(转)
简介
JSTL是一个不断完善的开放
源代码
的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL目前的最新版本为1.02,最终发布版为1.0。JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。标签库目前支持四种标签:
标签 | URI | 前缀 | 示例 |
Core | http://java.sun.com/jstl/core | c | <c:tagname ...> |
XML processing | http://java.sun.com/jstl/xml | x | <x:tagname ...> |
I18N capable formatting | http://java.sun.com/jstl/fmt | fmt | <fmt:tagname ...> |
Database access (SQL) | http://java.sun.com/jstl/sql | sql | <sql:tagname ...> |
Core支持JSP中的一些基本的操作;
XML processing支持XML文档的处理;
I18N capable formatting支持对JSP页面的国际化;
Database access (SQL)支持JSP对数据库的操作。
安装JSTL
要使用JSTL,你必须安装有一个JSP1.2(或者更高版本)的容器。最普通的JSP容器是Apache Tomcat。你能够从http://jakarta.apache.org/tomcat/ 这里下载到。独立的Tomcat允许你使用常规的JSP scriptlet代码。要使用JSTL,你必须在Tomcat中安装JSTL。JSTL的主要URL是 http://java.sun.com/products/jsp/jstl/ 。要使用JSTL,必须解压这个文件,然后将它安装到Tomcat的正确位置。
要在Tomcat中安装JSTL,有下面三个步骤:
- 拷贝JSTL JAR文件到Tomcat的lib目录中.
- 拷贝JSTL TLD文件到Tomcat的web-inf目录中
- 修改web.xml文件包含这些TLD文件。
如果你使用的是Windows, 那么lib目录最可能的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。你应该拷贝这些JAR包到你的Tomcat JAR目录。
你检查JSTL发布文件时,你应该会注意到有8个文件是以TLD扩展名结尾的。所有这8个文件都应该复制到你的web-inf目录中。
最后,你必须修改你的web.xml,添加8个标签库的表项(entry)。需要添加的表项如下所示:
<taglib> <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/fmt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri> <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri> <taglib-location>/WEB-INF/c-rt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri> <taglib-location>/WEB-INF/sql.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri> <taglib-location>/WEB-INF/sql-rt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/x</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri> <taglib-location>/WEB-INF/x-rt.tld</taglib-location> </taglib>
完成上面这三步后,你现在可以准备测试你的JSTL安装了。可以通过创建一个包含JSTL的JSP页面来验证。一个最简单的范例程序就是上 面的那个计数器程序。你应该将它放置在你的Webroot目录中(C:\Program Files\Apache Tomcat 5.0\webapps\ROOT)。一旦Tomcat启动后,你应该能够通过浏览 http://127.0.0.1:8080/count.jsp来查看这个页面。
如果你没有正确安装JSTL,那么可能不会出现错误信息。如果JSTL不能解释你的标签含义,那么它在Web浏览器上会直接跳过。然后Web浏览器将解释这些未知的HTML标签。多数浏览器仅仅只是忽略这些未知的HTML标签。
JSTL标签库
JSTL通常被认为是一种单标签库。但JSTL实际上有4个标签库。这些标签库被概括为如下:
-
核心标签库
—包含一些Web应用的必要的标签。核心标签库的实例包括循环,表达式赋值和基本输入输出。.
-
格式化/国际化标签库
—包括被用来解析数据的标签库。这种标签会解析数据,比如日期,不同的场所区域等。
-
数据库标签库
—包含被用来访问SQL数据库的标签。这些标签通常仅仅只创建原形(prototype)程序。这个是因为大多数程序不会直接从JSP页面中来处理数据库访问。数据库访问应该被嵌入到能够被JSP页面所访问的EJB中。
- XML标签库 —包含被用来访问XML元素的标签。因为XML广泛使用于Web开发,XML的处理是JSTL的一个重要的特征。
在本文中,我们将仅仅只对核心标签做一个简单介绍。我们将考察一个简单的范例,来说明如何处理用户在表单中输入的数据。在我们开始检查程序 之前,我们必须先看看JSTL是如何处理表达式的,JSTL的表达式处理是通过使用EL表达式语言来完成的,仅仅只能在JSP2.0被使用。下一节,我们 会考察EL表达式语言。
Core标签库
1、 通用标签
<c:out>
<c:out>标签用于在JSP中显示数据,它有如下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
value | 输出的信息,可以是EL表达式或常量 | 是 | 无 |
default | value为空时显示信息 | 否 | 无 |
escapeXml | 为true则避开特殊的xml字符集 | 否 | true |
例子:
您的用户名是: <c:out value=”${user.username}” default=”guest”/> |
显示用户的用户名,如为空则显示guest
<c:out value="${sessionScope.username}"/> |
指定从session中获取username的值显示;
<c:out value="${username}" /> |
显示username的值,默认是从request(page)中取,如果request中没有名为username的对象则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显示。
<c:set>
<c:set>标签用于保存数据,它有如下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
value | 要保存的信息,可以是EL表达式或常量 | 否 | |
target | 需要修改属性的变量名,一般为javabean的实例 | 否 | 无 |
property | 需要修改的javabean属性 | 否 | 无 |
var | 需要保存信息的变量 | 否 | 无 |
scope | 保存信息的变量的范围 | 否 | page |
如果指定了target属性, 那么property属性也必须指定。
例子:
<c:set value="${test.testinfo}" var="test2" scope=”session” /> |
将test.testinfo的值保存到session的test2中,其中test是一个javabean的实例,testinfo是test对象的属性。
<c:set target="${cust.address}" property="city" value="${city}"/> |
将对象cust.address的city属性值保存到变量city中
<c:remove>
<c:remove>标签用于删除数据,它有如下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
var | 要删除的变量 | 是 | 无 |
scope | 被删除变量的范围 | 否 | 所有范围,包括page、request、session、application等 |
例子:
<c:remove var="test2" scope="session"/> |
从session中删除test2变量。
2、 流控制标签
<c:if>
<c:if>标签有如下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
test | 需要评价的条件,相当于if (...){}语句中的条件 | 是 | 无 |
var | 要求保存条件结果的变量名 | 否 | 无 |
scope | 保存条件结果的变量范围 | 否 | page |
<c:choose>
这个标签不接受任何属性
<c:when>
<c:when>标签有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
test | 需要评价的条件 | 是 | 无 |
<c:otherwise>
这个标签同样不接受任何属性
例子:
<c:if test="${user.wealthy}"> user.wealthy is true. </c:if> |
如果user.wealthy值true,则显示user.wealthy is true.
<c:choose> <c:when test="${user.generous}"> user.generous is true. </c:when> <c:when test="${user.stingy}"> user.stingy is true. </c:when> <c:otherwise> user.generous and user.stingy are false. </c:otherwise> </c:choose> |
只有当条件user.generous返回值是true时,才显示user.generous is true.
只有当条件user.stingy返回值是true时,才显示user.stingy is true.
其它所有的情况(即user.generous和user.stingy的值都不为true)全部显示user.generous and user.stingy are false.
由于JSTL没有形如if (){…} else {…}的条件语句,所以这种形式的语句只能用<c:choose>、<c:when>和<c:otherwise>标签共同来完成了。
3、 循环控制标签
<c:forEach>
<c:forEach>标签用于通用数据,它有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
items | 进行循环的项目 | 否 | 无 |
begin | 开始条件 | 否 | 0 |
end | 结束条件 | 否 | 集合中的最后一个项目 |
step | 步长 | 否 | 1 |
var | 代表当前项目的变量名 | 否 | 无 |
varStatus | 显示循环状态的变量 | 否 | 无 |
例子:
<c:forEach items="${vectors}" var="vector"> <c:out value="${vector}"/> </c:forEach> |
相当于java语句
for (int i=0;i<vectors.size();i++) { out.println(vectors.get(i)); } |
在这里vectors是一个java.util.Vector对象,里面存放的是String数据,vector是当前循环条件下String对象。实际上这里的vectors可以是任何实现了java.util. Collection接口的对象。
<c:forEach begin="0" end="100" var="i" step="1"> count=<c:out value="${i}"/><br> </c:forEach> |
输出:
count=0
...
count=100
<c:forTokens>
<c:forTokens>标签有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
items | 进行循环的项目 | 是 | 无 |
delims | 分割符 | 是 | 无 |
begin | 开始条件 | 否 | 0 |
end | 结束条件 | 否 | 集合中的最后一个项目 |
step | 步长 | 否 | 1 |
var | 代表当前项目的变量名 | 否 | 无 |
varStatus | 显示循环状态的变量 | 否 | 无 |
例子
<c:forTokens items="a:b:c:d" delims=":" var="token"> <c:out value="${token}"/> </c:forTokens> |
这个标签的使用相当于java.util.StringTokenizer类。在这里将字符串a:b:c:d以:分开循环四次,token是循环到当前分割到的字符串。
4.导入文件和URL
JSTL核心标签库支持使用<c:import>来包含文件,使用<c:url>来打印和格式化URL,使用<c:redirect>来重定向URL。
<c:import>
<c:import>标签包含另外一个页面代码到当前页,它有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
url | 需要导入页面的url | 是 | 无 |
context | /后跟本地web应用程序的名字 | 否 | 当前应用程序 |
charEncoding | 用于导入数据的字符集 | 否 | ISO-8859-1 |
var | 接受导入文本的变量名 | 否 | page |
scope | 接受导入文本的变量的变量范围 | 否 | 1 |
varReader | 用于接受导入文本的java.io.Reader变量名 | 否 | 无 |
varStatus | 显示循环状态的变量 | 否 | 无 |
<c:url>
<c:url>标签输出一个url地址,它有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
url | url地址 | 是 | 无 |
context | /后跟本地web应用程序的名字 | 否 | 当前应用程序 |
charEncoding | 用于导入数据的字符集 | 否 | ISO-8859-1 |
var | 接受处理过的url变量名,该变量存储url | 否 | 输出到页 |
scope | 存储url的变量名的变量范围 | 否 | page |
例子:
<c:import url="http://www.url.com/edit.js" var="newsfeed"/> |
将url http://www.url.com/edit.js包含到当前页的当前位置,并将url保存到newsfeed变量中
<a href="<c:url url="/index.jsp"/>"/> |
在当前页的当前位置输出<a href="http://www.yourname.com/index.jsp"/>,http://www.yourname.com是当前页的所在的位置。
<c:redirect>
<c:redirect>标签将请求重新定向到另外一个页面,它有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
url | url地址 | 是 | 无 |
context | /后跟本地web应用程序的名字 | 否 | 当前应用程序 |
例子:
<c:redirect url="http://www.yourname.com/login.jsp"/> |
将请求重新定向到http://www.yourname.com/login.jsp页,相当于response.setRedirect("http://www.yourname.com/login.jsp");
<c:param>
<c:param>标签用来传递参数给一个重定向或包含页面,它有以下属性
属 性 | 描 述 | 是否必须 | 缺省值 |
name | 在request参数中设置的变量名 | 是 | 无 |
value | 在request参数中设置的变量值 | 否 | 无 |
例子:
<c:redirect url="login.jsp"> <c:param name="id" value="888"/> </c:redirect> |
将参数888以id为名字传递到login.jsp页面,相当于login.jsp?id=888
EL表达式语言
JSP2.0的一个主要的组件就是这个新的叫做EL的表达式语言。EL被广泛用在JSTL中。然而,重要的是记住,EL是JSP的功能而不 是JSTL的。被用在JSP2.0中JSP scriptlet代码能够包含EL表达式。下面这行代码演示了JSP scriptlet代码中的EL:
<p> Your total, including shipping is ${total+shipping} </p>
正如你看到的,total和shipping相加后会产生HTML并且在浏览器中显示它们的值。这些表达式也可以在JSTL标签中使用。 JSTL1.0的一个重要问题是,JSTL不能用在JSP1.2的版本上。因为JSP1.2不支持EL,所以有必要提供一些额外的JSTL标签来帮助EL 的使用。例如,如果你想使用JSTL来显示上面的表达式,你可以使用下面的代码。
<p> Your total, including shipping is <c:out var="${total+shipping"/> </p>
值得注意的是,JSTL不需要JSP2.0来运行。通过提供一个能够显示EL表达式的标签,就可以达到这样的需求。
JSTL范例
我们将考察一个简单的使用JSTL的范例。在这个例子里,我们将考察Web应用中的一个常见过程。我们会看到如何提交(POST)一个表单,并处理POST的结果。程序代码如下:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <html> <head> <title>If with Body</title> </head> <body> <c:if test="${pageContext.request.method=='POST'}"> <c:if test="${param.guess=='Java'}">You guessed it! <br /> <br /> <br /> </c:if> <c:if test="${param.guess!='Java'}">You are wrong <br /> <br /> <br /> </c:if> </c:if> <form method="post">Guess what computer language I am thinking of? <input type="text" name="guess" /> <input type="submit" value="Try!" /> <br/> </form> </body> </html>
这个简单的Web页面显示一个表单,要求用户猜测程序所想的计算机语言。当然,计算机想的是“Java”。这个页面通过检查“是否已提交”来开始。这使得表单和处理表单的代码可以放在同一个页面中。是通过下面的JSTL if语句实现的。
<c:if test="${pageContext.request.method=='POST'}">
现在你看到了,<c:if>标签使用EL表达式来决定是否请求的方式是POST的。如果数据被post到页面,那么用户输入的 他们的猜想值就会存储在名为“guest”的参数中。这是因为“guest”是表单输入项的名字。我们现在必须检查是否这个参数等于“Java”。这个是 通过下面的<c:if>标签来完成:
<c:if test="${param.guess=='Java'}"> You guessed it! </c:if>
正如你所看到的,如果表达式为true,<c:if>标签的标签体就被执行。在本文中,我们开始考察了JSTL如何被安装,以及它是如何运转的,也提供了一些JSTL小范例帮助大家理解。
JSTL的核心标签也包含循环,叠代器和变量处理。通过使用标签,你能在collections里进行iterate,访问用户的会话数据(session data),执行其他的核心任务等。除了核心标签库,XML,数据库和格式化标签库也提供了更多高级的用处。
发表评论
-
解决servlet-api包冲突问题(maven)
2014-08-20 10:12 47122问题描述:本人的项目是用Maven管理,而且用到了s ... -
在web.xml下配置error-page
2014-07-18 15:20 1893解决问题:捕获页面错误并反到指定页面处理。 在 ... -
tomcat的JVM虚拟内存设置(Eclipse,Tomcat,War)
2011-05-03 18:27 2940环境: 1.Tomcat6.0 2.JDK5. ... -
DOJO api及DOJO使用指南
2010-11-10 22:19 1818DOJO api:http://www.dojotoolkit ... -
关于在jsp页面中不支持EL表达式的配置
2010-10-25 21:26 30701、第一种设置方法,在单个JSP页面的上方加入下便代码,让该页 ... -
JNDI简单介绍(转)
2010-10-11 23:14 1113JNDI(The Java Naming and Dir ...
相关推荐
jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2。 jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2。 jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2...
JSTL(JSP Standard Tag Library)是Java服务器页面(JSP)的一种标准标签库,旨在简化JSP页面中的编程,提高代码的可读性和可维护性。它提供了丰富的标签来处理常见的页面逻辑,比如输出、条件判断、循环等,避免了...
从JSP 1.1规范开始JSP就支持使用自定义标签,使用自定义标签大大降低了...许多WEB应用厂商都开发出了自己的一套标签库提供给用户使用,这导致出现了许多功能相同的标签,令网页制作者无所适从,不知道选择哪一家的好。
CHM格式的JSTL标准标签库APICHM格式的JSTL标准标签库APICHM格式的JSTL标准标签库API
"JSTL标准标签库帮助文档chm"是一个压缩包内的资源,它通常包含了关于JSTL库的详细说明、API参考、示例以及使用指南。CHM文件是一种Microsoft编写的帮助文件格式,便于用户快速查询和学习JSTL的各个标签及其用法。...
### JSTL标准标签库的应用 #### 一、JSTL简介 JSTL(JavaServer Pages Standard Tag Library)是一个开放源代码的JSP标签库,由Apache的Jakarta项目组进行维护。JSTL的设计目标是简化Web应用程序的开发过程,通过...
### JSTL标准标签库详解及使用指南 #### 一、引言 JSTL(JavaServer Pages Standard Tag Library,JavaServer 页面标准标签库)是一种用于简化JavaServer Pages (JSP) 页面开发的标准标签库。它由Apache Jakarta...
这个压缩包文件"jstl标准标签库.zip"包含了用于使用JSTL的必要组件,主要为`jstl-1.2`版本,特别是`standard`目录下的`jstl.jar`文件。 JSTL由以下几个核心部分组成: 1. **Core标签库**:这是JSTL中最基础的部分...
**JSP中的JSTL标准标签库** JSP(JavaServer Pages)是Java平台上用于创建动态Web内容的技术。为了提高代码的可读性、可维护性和遵循MVC(Model-View-Controller)设计模式,JSP引入了JSTL(JavaServer Pages ...
### JSTL标准标签库详解 #### 一、简介 ##### 1、JSTL是什么? JSTL,全称JSP Standard Tag Library,即JSP标准标签库,是由Sun Microsystems(现已被Oracle收购)根据特定规范开发的一系列可重用的标签库,用于...
**JSTL(JavaServer Pages Standard Tag Library)标准标签库**是Java Web开发中的一个重要工具,它提供了一系列预定义的HTML和XML标签,用于简化JavaServer Pages(JSP)的编写,提高代码的可读性和可维护性。JSTL...
第14章 JSTL标准标签库,jsp基础知识
标题 "j2ee:servlet练习短信项目,包含过滤器的使用、EL表达式和JSTL标准标签库的使用" 描述了一个基于J2EE平台的短信服务项目的实践,其中涵盖了多个关键的Java Web开发技术。这个项目不仅涉及到Servlet的编程,还...
此外,JSTL还包含其他标签库,如fmt(格式化标签库)、sql(数据库操作标签库)和fn(函数标签库),它们提供了更多的功能,如日期和数字的格式化、SQL查询的执行以及字符串和集合的处理等。 总的来说,JSTL通过...