- 博客(0)
- 资源 (34)
- 问答 (2)
空空如也
jstl1.2不好找啊
很不好找,放出来供大家分享
JSP 2.0: The New Deal, Part 2
by Hans Bergsten, author of JavaServer Pages, 3rd Edition,12/03/2003
这篇文章是讲述加入到JavaServer Pages (JSP) 2.0 规范中的特性的系列文章的第二部分。在前面的第一部分,我描述了新的EL表达式,但是还有更多的内容没有涉及。这一部分描述的是JavaServer Pages (JSP) 2.0 规范在错误处理机制和新的部署描述符特性方面的增强。我假设你熟悉JSP 1.2,而且至少听说过JSP Standard Tag Library (JSTL)。
JSP Error Pages
如果你曾经在JSP和servlet的错误处理中使用过JSP error page,并且想要显示或者记录违例信息(违例导致JSP error page 被调用),那么你就知道在JSP1.2中这并不是件轻松的事情。原因是当在servlets和JSP 页面中声明了一个errorPage,违例(exception)被作为一个request attribute传递,它们要使用不同的属性名称。只有被传递的违例通过JSP属性名称自动地显示在 JSP error page中(通过exception脚本变量和${pageContext.exception} EL 表达式)。
JSP 2.0通过将相同的属性名称转换为servlet规范中的javax.servlet.error.exception来修正了这个问题。更进一步说,一个新增的 命名为errorData的EL pageContext变量揭露了发生问题的其他信息。ErrorData属性是javax.servlet.jsp.ErrorData的一个实例。这个实例可以被 用来作为一个bean和以下的properties一同使用:
Property
Java 类型
描述
requestURI
String
发生请求失败的 URI
servletName
String
发生错误的servlet或者JSP页面的名称
statusCode
int
发生错误的状态码
throwable
Throwable
导致当前error page被调用的违例
这里有个JSP error page的例子。这个例子使用了上面提到的一些property:
<%@ page isErrorPage="true" contentType="text/html" %>
<%@ taglib prefix="log" uri="http://jakarta.apache.org/taglibs/log-1.0" %>
Sorry, but things didn't work out as planned. I've logged as much as
I know about the problem, so rest assured that my master will look
into what's wrong as soon as he's sober.
<jsp:useBean id="now" class="java.util.Date" />
<log:fatal>
-----
${now}
Request that failed: ${pageContext.errorData.requestURI}
Status code: ${pageContext.errorData.statusCode}
Exception: ${pageContext.errorData.throwable}
-----
</log:fatal>
这个页面使用Apache Jakarta Taglib项目中的 Log tag library来显示一些确定的信息并记录下了具体的细节。
你可以在web.xml文件中使用<error-page>来对servlet和JSP 页面声明这是一个error page:
...
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-code>500</exception-code>
<location>/error.jsp</location>
</error-page>
...
如果你需要在某些特殊的JSP页面中使用一个不同的error page,可以用“@page”设置errorPage属性来有选择性地覆盖web.xml中的声明。
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 部署描述符
JSP 2.0在web.xml文件中使用了servlet规范中定义的部署描述符的文件格式,就像早期的JSP规范中的那样。然而在JSP 2.0中有两个重要的变化:1、现在web.xml文件的格式是通过XML Schema定义的;2、为了最大限度地减少servlet和JSP规范之间的耦合度,大多数的JSP配置细节已经被移到一个新的XML element中。
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页面。比如:
...
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
...
<url-pattern>元素确定这组JSP 页面应用哪一个配置。其他被嵌套的元素定义配置选项。这个例子中, <scripting-invalid>使应用JSP scripting elements (Java code) 在所有的JSP 页面中无效。
总地来说同<scripting-invalid>一样,你可以在<jsp-property-group>中使用以下的配置元素:
Element
描述
<el-ignored>
如果设置为true, 在匹配指定的URL模式的JSP 页面中,EL 表达式被当作常规的文本而不是EL 表达式。当移植看起来有EL表达式文本的JSP 1.2页面到JSP 2.0的时候,这非常有用。在已经转换为JSP 2.0的页面中,你可以使用一个新增的“elIgnoredpage”属性来选择EL是否有效
<scripting-invalid>
如果设置为true, 在某个匹配的JSP页面使用脚本
<page-encoding>
为匹配指定的URL模式的JSP页面指定编码。这是一个可选的配置(在每一个JSP页面中指定页面的编码),并且对于JSP页面来说这是使用某些文件编码(比如:EBCDIC)唯一的办法
<include-coda>
为所有匹配指定的URL模式的JSP页面的末尾自动包含一个文件,而指定相关的context路径。你可以在一个<jsp-property-group>中多次使用,或者通过多个<jsp-property-group>来实现
<include-prelude>
为所有匹配指定的URL模式的JSP页面的开头自动包含一个文件,而指定相关的context路径。你可以在一个<jsp-property-group>中多次使用,或者通过多个<jsp-property-group>来实现
<is-xml>
如果设置为true, 所有匹配指定的URL模式的JSP页面使用JSP XML语法(它们是JSP Document)
2011-01-12
pl\sql developer绿色中文版
PL/SQL Developer 是一款集成开发环境,专门面向 Oracle 数据库存储程序单元的开发。 如今,有越来越多的业务逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。 PL/SQL Developer侧重于易用性、代码品质和生产率,以及 Oracle 应用程序开发过程中的重大优势。
报告 ——PL/SQL Developer提供内置的报告功能,您可以根据程序数据或Oracle字典运行报告。PL/SQL Developer本身提供了大量标准报告,而且您还可以方便的创建自定义报告。自定义报告将被保存在报告文件中,进而包含在报告菜单内。这样,运行您自己经常使用的自定义报告就非常方便。您可以使用Query Reporter免费软件工具来运行您的报告,不需要PL/SQL Developer,直接从命令行运行即可。
工程 ——PL/SQL Developer内置的工程概念可以用来组织您的工作。一个工程包括源文件集合、数据库对象、notes和选项。PL/SQL Developer允许您在某些特定的条目集合范围之内进行工作,而不是在完全的数据库或架构之内。这样,如果需要编译所有工程条目或者将工程从某个位置或数据库移动到其他位置时,所需工程条目的查找就变得比较简单,
To-Do条目 ——您可以在任何SQL或PL/SQL源文件中使用To-Do条目快速记录该文件中那些需要进行的事项。以后能够从To-Do列表中访问这些信息,访问操作可以在对象层或工程层进行。
对象浏览器 ——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、浏览数据、在对象源中进行文本查找、拖放对象名到编辑器等。此外,该对象浏览器还可以显示对象之间的依存关系,您可以递归的扩展这些依存对象(如包参考检查、浏览参考表格、图表类型等)。
性能优化 ——使用PL/SQL Profiler,可以浏览每一执行的PL/SQL代码行的时序信息(Oracle8i或更高),从而优化您SQL和PL/SQL的代码性能。更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。
HTML指南 ——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL Developer工作环境中,以便在编辑、编译出错或运行时出错时提供内容敏感帮助。
非PL/SQL对象 ——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就将生成相应的SQL,从而创建或转换对象。
2010-07-12
ant编译java的时候,用的IDE是eclipse,java类里有中文,编译不通过
2011-03-11
实现分页的疑问,hibernatedaosupport
2011-02-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人