|
|
Sun Java System Application Server 7 Web应用开发者指南 使用JSP 本模块介绍了在Sun Java System Application Server上的web应用中如何将JavaServer Pages (JSP)用作页模板。 该模块包含以下各节: 介绍JSPJSP是HTML或XML的浏览器页面。它们也可以包含Java 代码,通过这些代码可以执行复杂的处理,有条件地进行输出,并和其它应用对象通信。Sun Java System Application Server中的JSP基于JSP 1.2规范。在install_dir/docs/index.htm下有可以找到规范,其中install_dir 是Sun Java System 应用服务器的安装目录。 在Sun Java System Application Server应用中,JSP是构成应用的单个页面。可以从servlet调用JSP来处理用户交互输出结果,或者,由于JSP和其它应用部件具有相同的应用环境访问,可以直接将JSP用于交互。 JSP是由JSP元素和模板数据组成的。模板数据是指那些不包含在JSP规范中的任何东西,包括文本和HTML标签。例如,最小的JSP不需要JSP 引擎的处理,它是一个静态的HTML页面。 在第一次调用JSP时,Sun Java System Application Server将它编译成HTTP servlet (或者也可以预编译它们,这样可以获得更好的性能)。这样它们就能够成为应用环境的标准对象,并且客户端使用URL可以调用它们。 JSP在服务器的JSP引擎内运行,该引擎负责解释特定的JSP标签,并执行特定的行为从而产生动态内容。将这些内容和其它模板数据组织到结果页中并且返回给调用者。 创建JSP创建JSP的方法和创建HTML文件的方法基本相同。可以使用HTML编辑器创建页面和编辑页面布局。通过在源代码文件中需要的地方插入JSP特有标签并给文件加上.jsp 扩展名,就能创建JSP页面。 基于JSP1.2规范的JSP基本上遵守XML语法,而XML语法和HTML是一致的。如果想了解使用的JSP标签的概要,请参考"JSP标签库和标准可移植标签"。 JSP是编译进servlets的,所以servlet设计风格也应用到JSP中。JSP和servlet可以执行相同的任务,但是它们都有自己突出和不足的地方。Servlet的优势在于它的处理和适应性上。然而,使用它们来执行HTML输出结果需要手工编写很多println 语句。相反的,JSP在布局上比较突出,因为它们是简单的HTML文件,并且可以使用HTML编辑器创建,但是执行复杂的计算和处理就不太理想了。如果想查看servlet的相关信息,请参考"使用servlet"。 这里还有一些其它的JSP设计技巧: 设计易维护性
每个JSP都可以调用或包含任何其它JSP。例如,你可以创建一个通用的公司标志,一个标准的导航条和内容的左列表,它们中的每个元素在单个JSP中, 并且包含在每个建立的页面中。可以使用JSP功能将它构成框架,动态决定装入每个子框架中的页面。当JSP编译成servlet或收到一个请求的时候,可以包含进一个JSP。 设计可移植性在不同的应用和不同的服务器上,JSP完全是可移植的。它的主要缺点是它们不知道特定的应用数据,但是当它们需要这类数据的时候,这就不是什么问题了。 通用JSP可能用于可移植的页面元素,如导航条、公司的标题,以及脚注等,这就意味这它们都可以包含在其它JSP中。可以创建一个可重用的通用页面元素库,在整个应用中都使用这个库,甚至可以在几个应用中都使用它。 例如,最小的通用JSP是一个不带特定JSP标签的静态HTML页面。稍微大一些的JSP可能包含一些Java代码,这些代码处理一些通用数据,如打印日期和时间、或根据请求对象中设置的标准值改变页面的结构。 处理异常如果JSP文件中出现一个没有捕获的异常,Sun Java System Application Server将产生一个异常,通常是404 或 500 错误。为了避免这个问题,设置<%@ page%> 标签的errorPage 属性。 JSP标签库和标准可移植标签Sun Java System Application Server支持标签库和标准可移植标签。如果想获得关于标签库的更多信息,请参考JSP 1.2 规范,该规范位于: http://java.sun.com/products/jsp/download.html 如果想获得JSP 1.2标签语法的方便的摘要信息,请参考下面的PDF 文件: http://java.sun.com/products/jsp/pdf/card12.pdf JSP缓存可以使用JSP缓存来缓存Java引擎中的JSP页段。可以使用不同的缓存原则分别缓存它们。例如,假设你有浏览股票行情、天气预报等的页段,股票行情段可以缓存10分钟,天气预报段可以缓存30分钟,等等。 如果想获得servlet响应缓存的相关信息,请参考"缓存servlet结果"。 JSP缓存使用JSP1.2支持的常规标签库。JSP缓存由打包进install_dir/lib/appserv-tags.jar 文件的标签库实现,可以将它复制到应用的WEB-INF/lib 目录下。appserv-tags.tld 标签描述文件放在该 JAR文件中,在install_dir/lib/tlds 目录下。 可以使用下面的方法在JSP文件中访问这些标签: <%@ taglib prefix="prefix" uri="Sun Java System Application Server Tags" %> 然后,就可以使用<prefix:cache> 和<prefix:flush>来访问缓存标签。例如,如果prefix 是mypfx,缓存标签就是<mypfx:cache> 和<mypfx:flush>。 如果希望使用指向这个标签库的不同的URI,可以使用web.xml 文件中的显式<taglib> 元素。 标签如下: cachecache标签根据指定的属性缓存开始标志和结束标志之间的内容。第一次遇到该标签时,内容被执行并缓存下来。以后每次运行它的时候,就检查缓存的内容,看看需不需要刷新它,如果需要,就再次执行它,缓存的数据就刷新了。否则,就直接使用缓存的数据。 属性 下面的表格描述了cache 标签的属性。左列是属性的名字,中间一列是属性的默认值,右边一列描述了属性的作用。 cache 属性
示例: 下面的例子显示了一个缓存的JSP页: <%@ taglib prefix="mypfx"
uri="Sun Java System Application Server Tags" %> 强制刷新缓存。如果指定了关键字,就仅刷新带有该关键字的项。如果没有指定key,就刷新整个缓存。 属性下表描述了flush 标签的属性。左列是属性名,中间一列是该属性的默认值,右边一列描述了属性的作用。 flush 属性
示例: 刷新带有key="foobar"的项: <mypfx:flush key="foobar"/> 刷新整个缓存: <% if (session != null
&& session.getAttribute("clearCache") != null)
{ %> Sun Java System Application Server提供了下列方法将JSP 1.2格式的源文件编译成servlet:
为了让JSP容器能够从JAR 文件中找出预编译的JSP,必须禁止动态重载JSP。这就要将sun-web.xml 文件中的jsp-config 元素的reload-interval 属性设置成-1 。请参考"JSP Elements"。 jspc 命令行工具存放在install_dir/bin (确信在你的路径下有这个目录)下。jspc 命令的格式如下所示: jspc [options] file_specifier 下面的表格显示了在jspc 命令中file_specifier 可以设置成什么。左列是文件标识符,右列是对这些文件标识符的描述。 Jspc命令的文件标识符
下面的表格显示了jspc 命令的基本选项。左列是选项,右列是对这些选项的描述。 基本jspc 选项
下面的表格显示了jspc 命令的高级选项。左列是选项,右列是对选项的描述。 高级jspc 选项
例如,该命令编译hello JSP文件,并且将编译后的JSP保存在hellodir下。 jspc -d hellodir -genclass hello.jsp 该命令将webappdir 下的所有web应用的JSP文件编译成jspclassdir下的类文件: jspc -d jspclassdir -genclass -webapp webappdir 要使用web应用中的这些预编译的JSP,将hellodir 或jspclassdir 下的类放入JAR 文件中。将JAR文件放在WEB-INF/lib下,并且将sun-web.xml 文件中的reload-interval 属性设置成-1。 调试JSP使用Sun Java System Studio 4调试JSP时,可以在JSP代码或产生的servlet代码内设置断点,既可以在它们之间切换,也能查看相同的断点。 设置Sun Java System Studio中的调试时,可以参考Sun Java System Application Server开发者指南。 如果想获得更多信息,请参考Sun Java System Studio 4,企业版指南。 上一部分 | 目录 | 下一部分 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||