- 浏览: 830100 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
引用
作者: Hans Bergsten
http://blog.csdn.net/zt2oo8/ 期待已久的日子即将到来: 最新版JavaServer Pages (JSP)2.0规范即将和其他的J2EE 1.4一同发布。新的JSP版本有一个新的飞跃,采用了新的方式:由于新的语言表达式(Expression Language,以下简称为EL)和JSP标准标签库(JSP Standard Tag Library ,以下简称为JSTL)这两种新的方式,在页面中不需要用java,对于开发一般的应用来说,重用代码变得更加容易。更具体来说,JSP 2.0带来了以下的优点:
首次被JSTL 1.0引入的EL现在被合并到JSP规范中,就像应用template text一样地使用所有的标准的和定制的组件。 你可能对这本第三版的《JavaServer Pages》感兴趣。这本书中,我尽可能在细节上讲述所有的内容,而且并不认为你对JSP或者JSTL了解一切。这本书预计在2003年12月 出版,但是你现在可以在http://www.amazon.com、Barnes&Noble,或者其他在线书店预订。 EL(The Expression Language) 如果过去使用过JSTL,那么你可能已经熟悉了EL。EL在JSTL 1.0规范中被引入,用来在运行期间对Java表达式中action element属性赋值提供另一种选择。当JSTL EL已经非常迅速的流行起来情况下,还是存在一个问题: JSTL EL 表达式仅仅可以与JSTL和custom action一起使用,怎样才能使用非标准API对EL表达式求值? JSP 2.0中,JSP容器自己可以理解EL表达式。这使你在所有过去只能应用Java表达式的地方应用EL表达式成为可能,比如:标准和定制action的属性值,模板文本。 在我们看具体的例子前,让我们更进一步的看看什么是EL。EL是从JavaScript中获得启发的一种语言,XPath(一种用来访问XML文档的语言),但是EL在对变量的null值和执行更多数据类型的自动类型转换的处理上更加宽松。这些新特性对于web应用非常重要,在这些应用中输入通常通过html表单的request parameter来得到。这些参数可能仅仅在某些请求下才能体现出来,而且浏览器经常将request parameter作为文本发送,然而应用程序经常需要把他们作为数字类型、布尔类型(true 或者 false)来使用。通过EL,你根本就很少需要关心缺少某些参数的值或者类型转换。 一个EL表达式包含变量和操作符。任何存储在某个JSP作用范围(如:page、 request、session、application)的bean能被作为一个EL变量来使用。另外,EL支持以下预定义的变量: 变量名称 pageScope requestScope sessionScope applicationScope param paramValues header headerValues cookie initParam pageContext 操作符描述了你对变量所期望的操作。如果你之前曾经使用过任何编程语言的话,在EL表达式中所使用的操作符对你来说可能看起来很熟悉。因为它们和那些在大多数语言中所支持的操作符一样。 Operator . [] () ? : + - * / or div % or mod == or eq != or ne < or lt > or gt <= or le >= or ge && or and || or or ! or not empty func(args) 一个EL表达式可以包含:数字、文本(在单引号或者双引号之间)、布尔值、null值。 因为一个EL表达式可以出现在静态文本出现的地方,因此你必须告诉JSP容器它应该被当作一个EL表达式来处理。你可以通过使用定界符来做到这一点。一个EL表达式总是以”${ }”来标记(一个“$”符号和一个左花括号,右花括号)。这里有一个EL表达式,它将一个命名为amount的变量加5: ${amount + 5} 如果你想要将5加到一个bean的property上,可以使用property访问操作符: ${order.amount + 5} 在当前这个指定的bean或者collection集合中,Property访问操作符(一个“.“符号)告诉EL去寻找名字为amount的property。 ${order['amount'] + 5} 在[]之间的值必须是一个property的名字(就像上面的例子中那样)或者是一个保存property名字的变量(或者是一个完整的EL子表达式)。 EL表达式可以被用来赋值给任何标准的或者定制的JSP行为属性(action attribute),这些行为属性被标记为可以接受动态值(或者请求期间的属性值,就象它被正式调用一样): <c:out value="${order.amount + 5}"/> 在JSP 2.0之前,你不得不使用Java表达式去给一个属性动态赋值。在过去的很多年中,这已经成为语法混乱的一个普遍根源。 最后,EL表达式可以在页面中和模板直接混合使用。当你生成HTML并且需要设置一个动态值给一个属性的时候,这非常方便: <input name="firstName" value="${customer.firstName}"> JSP 1.2中,你不得不使用JSTL的<c:out>来实现同样的事情,最后把各种不同类型的元素混合起来,这导致程序理解起来非常的困难: <input name="firstName" value="<c:out value="${customer.firstName}"/>" > 新JSTL 1.1 Tag Library 标识符 在JSTL 1.1中使用以下标识符: 库 Core XML processing I18N formatting Database access Functions 如果你曾经使用过JSTL1.0,你可能会注意到新的标识符和旧的EL库标试符一模一样,除了加入了“/jsp path” element。你也可能注意到在JSTL1.1中有一个库,包含了EL的函数。我们稍后就会看到。 一个新的EL操作符 一个能清楚说明它如何工作的例子:
代码
在这里,我使用了EL表达式和条件操作符来选择是否包含 html 中的 “selected”属性,只有符合条件的 “option” 才被添加 “selected” 属性。如果条件(param.artist==1)为真时,前面的“selected” 才被添加到网页中;否则就添加后面的(在这里是空字符串 ‘’)到页面中。
EL函数 <%@ taglib prefix="fn" 标签库描述符(Tag Library Descriptor,TLD)将函数名称映射到一个由JAVA实现的静态方法中:
代码
在这里最有趣的element是<function-signature>。它包含一个函数返回类型的声明,静态的方法的名字,在圆括号中声明该方法所有参数的类型(可以没有参数或者有多个,参数间用逗号间隔开)。返回值类型和参数类型必须是java的原始类型(Object)或者是其他合法类型。
这个静态方法 length()在Jakarta Taglibs标准库中用类似于下面的代码实现的:
代码
就像你所看到的,在那里没有什么出奇的地方。它是一个常规的静态方法,这个函数中通过对运行期中的参数类别的判断,找出参数的长度。
除了在这个方法中使用的length()方法,JSTL1.1标签库还包含了许多其它经常使用的函数: 函数 fn:contains(string, substring) fn:containsIgnoreCase(string, substring) fn:endsWith(string, suffix) fn:escapeXml(string) fn:indexOf(string, substring) fn:join(array, separator) fn:length(item) fn:replace(string, before, after) fn:split(string, separator) fn:startsWith(string, prefix) fn:substring(string, begin, end) fn:substringAfter(string, substring) fn:substringBefore(string, substring) fn:toLowerCase(string) fn:toUpperCase(string) fn:trim(string) 结束语: JSP 2.0: The New Deal, Part 2 这篇文章是讲述加入到JavaServer Pages (JSP) 2.0 规范中的特性的系列文章的第二部分。在前面的第一部分,我描述了新的EL表达式,但是还有更多的内容没有涉及。这一部分描述的是JavaServer Pages (JSP) 2.0 规范在错误处理机制和新的部署描述符特性方面的增强。我假设你熟悉JSP 1.2,而且至少听说过JSP Standard Tag Library (JSTL)。 JSP Error Pages JSP 2.0通过将相同的属性名称转换为servlet规范中的javax.servlet.error.exception来修正了这个问题。更进一步说,一个新增的 命名为errorData的EL pageContext变量揭露了发生问题的其他信息。ErrorData属性是javax.servlet.jsp.ErrorData的一个实例。这个实例可以被 用来作为一个bean和以下的properties一同使用: Property requestURI servletName statusCode throwable 这里有个JSP error page的例子。这个例子使用了上面提到的一些property:
代码
你可以在web.xml文件中使用<error-page>来对servlet和JSP 页面声明这是一个error page:
代码
JSP 语法错误的报告 在JSP 1.2 和 JSP 2.0之间,一个细微但是重要的区别是JSP 2.0需要JSP容器支持“jsp:id”特性,虽然在JSP 1.2中这仅仅是一个建议。作为一个JSP开发者,这对你意味着什么呢?对于JSTL和定制的标签库的语法错误,它意味着你可以更好地获得有用的错误信息。 下面讲述它是如何工作的。当JSP容器将JSP页面转换为可以执行的servlet class,容器着眼于这个页面中声明的所有标签库。如果标签库中的一个或者多个库包含了一个标签库验证器(Tag Library Validator,TLV),容器就会在接受这个JSP页面前给予TLV一个检验当前页面的机会。容器给予TLV一个当前页面的XML视图用以分析。XML视图就像名称暗示的那样,是当前页面的另外一种版本, 所有常规的JSP元素和template text已经被转换为一种结构良好的XML文档。这个XML视图对TLV来说是很容易解析的,用于确定所有的custom actions被正确地使用(比如:custom actions被正确的嵌套,互斥的属性是不能在同一个action element中一同使用的)。 这就是“jsp:id”的由来。容器在页面中给每一个custom action元素分配了一个ID,并且维护了一张在ID和元素位置(文件、行号、列号)的映射表。添加的“jsp:id”属性,在XML视图中ID值对应于所有的custom action 元素,这样TLV就可以读取它。如果TLV发现了一个语法错误,它就会在返回给容器的错误信息中包含“jsp:id”属性值来确定当前无效的action element。这时容器使用映射,并添加发生错误的custom action element位置信息,提示给你。这使得开发人员找到并改正错误变得轻而易举。 所有的JSTL库都要有TLV。我强烈建议为你自己编写的类库开发TLV,而且任何第三方类库的开发人员也应该这样做。 如果你对XML视图和TLV并不熟悉,我在2001年的介绍JSP 1.2的文章中有一个简要的介绍("JSP 1.2: Great News for the JSP Community")。 JSP 部署描述符 XML Schema是一种用来描述XML文档语法规则的XML语言(可以定义XML element之间是如何嵌套的;一个element可以获得什么样的值; 值的唯一性的需求等等)。这是一个复杂的规范,但是幸运的是你不用为了写web.xml文件而需要明白XML Schema语法规则。因为servlet和JSP规范提供了易于理解的图表( JavaServer Pages, 3rd Edition书中包含了许多简单易懂的图表)。如果你还是想要更进一步了解XML Schema,请浏览W3C(http://www.w3c.org)的网站。 用XML Schema代替上一版本中的 Document Type Definition(DTD) 语言来声明XML文档结构的主要优点是:XML Schema具有更加富有表达能力,因此在解析web.xml文件的过程中能发现更多的错误,有希望解决在JSP容器之间更好地移植这个问题。 另外一个优点是(我确定你会感激于此的): 在web.xml文件中使用XML Schema可以使顶层的element按照任何顺序排列变得轻而易举。举例来说,在servlet和JSP 规范的上一个版本中,如果将<error-page> element 放到<welcome-file-list> element 前面,你将得到一个错误提示。在新版本的规范中,这样做就不会有问题。在顶层元素中的element的顺序尽管还必须要按照严格的顺序放置,但是在顶层元素以外至少你现在可以自由地支配了。 除了<jsp-file>要嵌套在<servlet>中,其它的element现在都被归组到一个新的顶层element中,这个element命名为<jsp-config>。在<jsp-config>中,你可以使用<taglib> element,和在JSP 1.2中具有相同的语法和含义,尽管它们并不需要实现了JSP 1.2 或者后续版本的容器,因为它们可以自动地从已经部署的JAR文件中获得标签库的定义。 新添加的<jsp-property-group>子元素更加有趣。你可以用它来配置一组匹配某个指定的URL的JSP页面。比如:
代码
总地来说同<scripting-invalid>一样,你可以在<jsp-property-group>中使用以下的配置元素: Element <el-ignored> <scripting-invalid> <page-encoding> <include-coda> <include-prelude> <is-xml> 总结 JSP 2.0: The New Deal, Part 3 更具伸缩性的JSP Document格式规则 常规的 JSP 页面
代码
在一个JSP Document中,标签库作为XML名称空间被声明。比如:一个JSP Document 包含来自标准JSTL核心库中的XHTML模板文字和JSP action, 它应该有一个<html>根元素,有以下的名称空间的声明:
代码
JSP Document已经是JSP规范中的一部分了,但是起初是作为一个可选择的特性,并且后来还有许多的局限性。JSP 2.0解决了大多数局限性的问题,使XML和JSP协同工作变得更加简单。 首先对于JSP 2.0来说,一个JSP Document 必须要有一个<jsp:root>根元素用以告诉容器它是哪一种类型的JSP页面。JSP 2.0通过这种新的方式来标识一个JSP Document文件解决了这个限制。如果以下条件中有一个为true,这个文件就将被JSP 2.0容器作为一个JSP Document来处理: 请求的路径与在web.xml中声明的URL匹配, JSP property group 声明有一个 <is-xml>元素设置为 true。关于 JSP property group 声明在上一篇中有详细的说明。
代码
如果你曾经尝试用JSP1.2来编写JSP Document,那么你很可能在给XML element的attribute动态赋值时陷入了麻烦之中。比如,你想要给一个XML element的 class attribute赋值为一个用来保存用户风格样式参数的bean property。你首先可能试图像下面这样做:
<table class="%= user.getTableClass() %"> 用一个JSP action element来设置attribute的值,同样不可以: <table class="<c:out value="${user.tableClass}" />"> 这是因为在一个element attribute中一个格式完整的XML 文档不可以有一个“<”符号。 在JSP 1.2中,唯一动态设置一个element attribute 值的方法是使用令人生厌的CDATA 片断,将开始和结束的element当作原始文本(被动态生成的值包装)来处理: <jsp:text><!CDATA[<table class="]]></jsp:text> <table class="${user.tableClass}"> 如果你不能表示出你想要分配的值,你可以用三个新的标准action动态构造整个XML element,用JSP代码生成attribute的值。
代码
一个用来声明XML的新的标准Action 除非这个JSP Document有一个<jsp:root> element,就像它的root element(或者一个标签文件,标签文件我将在下一篇文章中讲述),JSP容器默认创建一个XML声明,就像这样: <? xml version="1.0" encoding="encodingValue" ?> <jsp:output omit-xml-declaration="true" /> 一个DOCTYPE声明告诉一个XML parser(例如一个浏览器使用的parser)这个XML文档遵循了哪一个DTD(Document Type Declaration)。Parser可以用此信息来确认这个XML文档包含的仅是这个DTD声明的XML element。你不能在这个生成的JSP Documen中放置DOCTYPE声明(因为此时你正在表明这个 JSP Document和DTD一起编译),而是使用<jsp:output> action来告诉JSP容器为生成的结果添加一个声明:
代码
<jsp:directive.page contentType="text/html" /> 就像这个例子一样,<jsp:output> action为XHTML给输出的结果添加了一个DOCTYPE声明:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 结论 byHans Bergsten, author of JavaServer Pages, 3rd Edition05/12/2004 在“JSP 2.0: 新特性”的最后一部分中,我们将要看两个新特性,它们使开发自定义标签库变得更加容易,它们是:标签文件和简化的tag-handler Java API。 以JSP Tag文件形式开发自定义Action JSP试图让对Java没有经验的人写动态页面成为可能。在页面间,重用一部分动态的、复杂的内容到目前为止仍然是令人痛苦的事情。举例来说,你想要在一些页面中放置一个投票程序,包括问题和答案。在 JSP 2.0之前,你有三个选择:1、你可以拷贝并粘贴投票的程序到你希望添加的每一个页面中;2、一个稍好的选择是编写一个独立的JSP页面来生成投票的表单,并且在其他页面中用<jsp:include>或者 <c:import> action来包含这个独立的页面。但是你仅仅可以通过它来输入String类型的参数,不能是一个保存答案的bean或者一个Map。3、用一个Java tag handler类实现一个自定义action, 但是这需要建立在你对Java的了解基础上。 JSP 2.0增加了第四种选择:也就是用标签文件的形式开发自定义action。一个标签文件是一个纯文本文件,你对所有的动态生成的部分使用JSP element,就像在常规的JSP页面中那样。和一个Java 标签handler有同样目的,即:为自定义的action 提供逻辑运算。标签文件和JSP 页面之间主要的区别是一个标签文件有一个以.tag为扩展名的标签文件,用这个扩展名来区别jsp页面,并且你可以使用仅在标签文件中有效的一些新的标签来定义输入和输出。 更进一步来看,这里有一个标签文件“poll.tag”,它生成一个投票的表单:
代码
|
发表评论
-
Java并发编程:volatile关键字解析
2015-07-30 11:30 637转:http://www.cnblogs.com/dolp ... -
Java内存模型
2015-07-29 13:55 9161. 概述 多任务和 ... -
自定义classloader
2015-07-29 13:54 692转:http://tiantian911.iteye.com ... -
自定义ClassLoader实现java应用核心逻辑模块热部署
2015-07-29 13:51 1023转:http://blog.csdn.net/zhangda ... -
java classloader原理初探
2015-07-29 10:14 669转:http://www.cnblogs.com/ ... -
Java 内存分配全面浅析
2015-07-29 08:52 609转:http://blog.csdn.net/shimi ... -
http stream
2014-07-29 16:38 1145StringBuilder sb = new String ... -
Tomcat远程调试
2011-04-09 12:33 1062需要在Tomcat中的catalina.bat中添加如下的一行 ... -
用jmx监控多台服务器(tomcat)
2010-09-08 18:25 4577因为需要写一个后台监控服务器的程序,涉及到jmx,也涉 ... -
call cmd /c start 一点疑问
2010-09-01 10:16 2250call "cmd /c start aaa.bat ... -
Windows计划任务之schtasks
2010-08-30 13:21 3596创建:SCHTASKS /Create /RU SYSTEM ... -
ajax返回值中有中文存在的乱码现象
2010-08-27 16:28 1447ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即 ... -
MIME TYPE
2010-08-26 16:23 7262最近要做需要在页面上放音频的东西,因此需要用到mime typ ... -
JMX问题
2010-08-20 17:20 5507这个问题貌似是启动tomcat之后就获取不到jmx的链接了,不 ... -
Eclipse控制台乱码
2010-08-05 15:18 4894安装了Eclipse,在运行tomcat时,控制台的中文显示乱 ... -
JMX服务端和客户端的代码
2010-07-27 15:37 3575服务端代码如下 package com.rmi; i ... -
JMX连接Tomcat的JMX测试类
2010-07-27 15:33 3301首先是为了使tomcat支持JMX,必须在tomcat的启动项 ... -
JMX的一个链接类
2010-07-27 09:37 1465package com.pachira.oamp.jmxS ... -
java中文转unicode码
2010-07-22 11:04 43412转载地址:http://www.iteye.com/topic ... -
获取POST数据的值
2010-07-21 14:17 9925当method为POST,Content-Type为 ...
相关推荐
### JSTL标签库知识点详解 #### 一、概述 JSTL(JavaServer Pages Standard Tag Library)是一种标准标签库,旨在简化JavaServer Pages (JSP) 的开发工作。通过提供一组预定义的标签,JSTL使得开发者能够更加高效地...
在"jstl知识.pdf"中,可能会详细讲解如何引入JSTL库,如何配置web.xml,以及如何在JSP页面中使用各个标签库的标签。同时,教程可能会提供各种示例,如使用`<c:set>`设置变量,使用`<c:out>`输出变量,以及如何使用`...
结合以上两个知识点,若在项目中同时使用MyBatis和JSTL,可能是在JSP页面上展示MyBatis查询到的数据,利用JSTL的标签进行数据的处理和展示。例如,可以使用`<c:forEach>`遍历查询结果,然后通过`<fmt:formatDate>`...
### JSTL (JSP Standard Tag Library) 详解 #### JSTL 概述 JSTL(JSP Standard Tag ...以上内容详细介绍了JSTL的核心概念、版本差异、标签库类型以及EL表达式语言的使用方法,为读者提供了全面的JSTL知识体系。
### JSTL基本知识简介 #### 一、JSTL概述 JSTL(JavaServer Pages Standard Tag Library,JavaServer 页面标准标签库)是一个不断完善的开源JSP标签库,由Apache Jakarta项目组维护。该标签库的目标是简化JSP页面的...
### EL与JSTL知识点详解 #### 一、EL (Expression Language) 概述 **1.1 什么是EL** EL(Expression Language),即表达式语言,是一种简单却功能强大的语言,专门设计用于访问和操纵JavaBean属性。EL提供了一种...
Java是一种广泛使用的编程语言,尤其在企业级应用...这套"java学习资料jstl"提供了一系列源码实例,对于初学者来说,是掌握JSTL知识的好资源。通过仔细研究和实践,你将能够熟练运用JSTL,提升你的Java Web开发技能。
**JSTL 知识点详解** JSTL 是一个开源项目,由Apache软件基金会的Jakarta项目维护。它的主要目标是简化JSP开发,通过提供一系列预定义的标签,让开发者可以避免使用脚本语言(如Java)在页面上编写复杂的逻辑。以下...
**JAVA EE JSP_JSTL 知识点详解** JAVA EE(Java Platform, Enterprise Edition)是Java平台的一个版本,主要用于构建分布式、多层的企业级应用。JSP(JavaServer Pages)是JAVA EE中的一个重要组成部分,它是一种...
课件总共有18个章节 ...第二节 CSS 知识 第三节 JavaScript知识 第四节 Mysql知识 ...第十三节 JSTL知识1 第十四节 JSTL知识2 第十五节 监听器 第十六节 过滤器 第十七节 文件上传下载以及验证码 第十八节 JSP分页
**J2EE JSP-JSTL 知识详解** **1. JSTL 简介** JSTL,全称 JavaServer Pages Standard Tag Library,是Java社区过程(JCP)制定的一个标准规格,旨在为Java Web开发人员提供一套通用的标准标签库。JSTL的出现是为了...
### EL表达式与JSTL知识点详解 #### 一、EL表达式简介 EL(Expression Language)表达式,又称表达式语言,是Java Server Pages (JSP) 中一个非常重要的特性。通过使用EL表达式,开发者能够更加简洁地访问变量和...
标签库JSTL(JSP Standard Tag Library): 因为在jsp中使用java代码去控制页面的显示(即:用小段的),可读性很差,这样后期维护会比较麻烦,所以引入了Java标签库。 常用的JSTL标签库: 核心标签库:...
想起先前看到的一个知识点:tomcat 6 实现了 servlet 2.5 和JSP2.1的规范相应的 tomcat 5 实现的是 2.4和2.0,想到tomcat5不支持JSTL1.2,于是替换JSTL1.1的包试试看后,问题解决 解决方法:移出工程lib目录中的...
**JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,它为JavaServer Pages (JSP) 提供了一系列的标签,用于简化网页开发。...因此,对于初学者来说,熟悉并掌握JSTL的基本知识至关重要。
### JSTL操作XML知识点详解 #### 一、引言 Java Server Pages Standard Tag Library (JSTL) 是一种标准的、基于XML的标签库,它简化了JSP页面的开发工作,使得开发者能够更加专注于业务逻辑而不是页面的布局与控制...
在"EL与JSTL下载资料"中,你可以找到关于这些知识点的详细讲解,包括概念介绍、实例演示、常见问题解答等,帮助你在Java Web开发中熟练掌握这两种技术,提升开发效率,编写出更清晰、更易于维护的代码。通过深入学习...
### 知识点一:JavaServer Pages Standard Tag Library (JSTL) JSTL,即JavaServer Pages Standard Tag Library,是Java平台上的一个标准标签库,用于简化JSP页面的开发工作。它提供了一系列预定义的标签,可以执行...
本课件PPT将深入探讨JSTL的核心概念、基本用法以及实际应用中的关键知识点。 1. **JSTL概述** JSTL是由Apache软件基金会的Jakarta项目开发的,旨在替代硬编码在JSP页面上的Java脚本。它包括几个主要的标签库,如...