JavaServer Pages作为Web服务客户端
2018年12月12日 16:33

JavaServer Pages或JSP是Java servlet技术的扩展, 旨在促进Web开发人员在不编写Java代码的情况下动态创建HTML页面。当支持JSP的服务器获取对JSP页面的请求时,它会启动一系列事件,这些事件将导致执行Java servlet以生成响应。它是将JSP源转换为servlet的过程,这对于JSP与开发人员的普及至关重要。

页面的JSP源包含普通HTML标记和特殊“标记”的混合。普通的HTML可以被认为是一个模板,可以通过标签的动作填充。在一个两步过程中,专门的JSP编译器将JSP源转换为有效的Java servlet代码,然后由普通的Java编译器将其编译为servlet类。服务器有一个映射,它将JSP页面的名称与创建的servlet相关联。因此,对于Web设计人员来说,它似乎正在执行JSP源代码,但幕后很多东西正在创建这种印象。

简单的“scr ip tlet”标签允许您将Java语句放在HTML标记的中间。您还可以声明将成为生成的servlet代码一部分的完整Java方法。使用这些工具,您可以访问任何广泛的Java库,因此在JSP中构建相当复杂的代码是可能的 - 但不一定是个好主意。

简单的JSP标记可能会导致创建大量实际的Java代码,这些代码手动创建非常繁琐。这种不可见活动的缺点是JSP错误比普通Java代码更难调试。扩展基本JSP语法的标记被组织到称为“taglibs”的标记库中,必须将其显式导入页面。

JSP,“模型1”和“模型2”

当JSP技术首次投入使用时,程序员兴高采烈地将各种决策和类似功能放入JSP代码中。这很容易,所有代码都在一个文件中。唉,随着应用程序越来越大,这种方法变得难以调试和维护,实际上它是彻头彻尾的噩梦。

目前,一体化JSP被称为“模型1”,仅用于最简单的应用程序,其中基于用户请求的决策是最小的。首选体系结构(称为“模型2”)使用servlet检查所有用户请求,进行计算并确定哪个JSP应显示结果。您可能会将其识别为称为模型 - 视图 - 控制器(MVC)的设计模式,其中JSP提供适合于请求的HTML“视图”,而servlet是“控制器”。注意:MVC中的M指的是基础数据,而不是模型1与模型2的区别。

我们很快就会看到,JSP页面可以直接访问Web服务,解析结果并控制表示。但是,如果页面获得大量用户流量,则可能会有大量低效的重复工作,因为重复检索相同的内容。除了最简单的低流量页面之外,当JSP在Web服务上绘制数据时,它们应该间接地进行。

JSP标准标记库

一组称为JSP标准标记库(JSTL)的基本标记已由多个行业专家在Java Community Process(JSR 52)下标准化。哦,如果只是那么简单!实际上,JSTL有多个版本,对应于Java Servlet和JSP API标准的增量开发。

JSTL的早期版本1.0对应于Servlet版本2.3和JSP版本1.2 API规范。Tomcat 4是实现此JSP API的引用servlet引擎。

JSTL的1.1版与Servlet版本2.4和JSP版本2.0规范相匹配。Tomcat 5是实现此JSP API的引用servlet引擎。

最新的Java Enterprise Edition 5进一步修订了JSTL的1.2版本。据我了解,下一版本中的修改是为了便于JavaServer Faces应用程序框架与JSP功能的集成。Java EE 5大约2周前达到最终发布状态。

使用标准标记库访问服务

为了演示JSP可能的一小部分,我从Apache Software Foundation站点下载了JSTL 1.1的JSTL包(参见列出的资源)。这个包比JSTL包含更多,因为开源社区一直在为JSP创建自定义标记库。Tomcat 5.5.9是servlet容器。

我们将使用的Web服务是TechTarget的与Web服务相关的新闻标题的RSS提要。最初RSS代表Rich Site Summary,但是现在,RSS被认为代表了Really Simple Syndication。在任何情况下,RSS都使用简单的XML文件格式,非常适合使用JSTL进行解析。我的JSP页面以两个标记格式的行开头,这些行指定要使用的taglib和将出现在标记中的名称空间前缀,以及一些启动页面的标准HTML标记。

JavaServer Pages作为Web服务客户端

接下来,我们有一些标签,用于定义如何获取源文档并将其解析为标准Java XML Document对象,其引用存储在名为“document”的局部变量中。

JavaServer Pages作为Web服务客户端

现在进行XML解析操作:我添加了行号以方便讨论。第1行使用xml taglib的“set”操作将“channel”变量设置为XML文档根元素。第2行将“description”标记的内容插入到段落的HTML标记中。第3行是HTML标记,用于开始格式化未编号的列表。

JavaServer Pages作为Web服务客户端

RSS“channel”元素包含每个新闻标题的一个“item”元素。每个“item”元素都有一个“标题”,一个指向原始网站上的故事的“链接”,一个长文本描述和其他几个元素。Web设计人员可能会在不同的JSP上以各种方式使用此数据。在这种情况下,我坚持一个简单的演示文稿。

我们将使用从第4行开始到第7行结束的forEach标记遍历文档中的所有“item”元素。“select”属性的格式遵循熟悉的XPath约定来创建项目的节点列表元素。在第5行中,我们在HTML标记中嵌入了“link”元素的内容以用于超文本链接。第6行使用“title”元素的内容来创建将要显示的文本。第8行是用于关闭列表的HTML标记。

将浏览器定向到Tomcat Web服务器中托管的结果JSP页面会生成一个标题为“Test Tech Feed from Techtarget”的页面,该页面包含RSS描述行和标题列表。每个标题都被格式化为相应的即可点击链接。

703 186

上一篇:Java服务器页面(JSP)

下一篇:网页性能:消除白色闪烁延迟

相关文章

旗下产品

软件IP代理 企业HTTP代理 开放HTTP代理 高速硬件IP代理
@ 2016 - 2024.猎鹰网安IP代理, All rights reserved. 鄂ICP备18017015号-4
禁止利用本站资源从事任何违反本国(地区)法律法规的活动
新闻中心 | 其他新闻 | 帮助文档