1、JSP 技术概述 一、 JSP 的好处 二、 JSP 页面最终会转换成 servler。因而,从根本上, JSP 页面能够执行的任何任务都可以用 servler 来完成。然而,这种底层的等同性并不意味着 servler 和 JSP 页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用 Java 编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。 和单独使用 servler 相比, JSP 提供下述好处: 三、 JSP中 HTML的编写与维护更为简单。 JSP中可以使 用常规的 HTML:没有额外的反斜
2、杠,没有额外的双引号,也没有暗含的 Java 语法。 四、 能够使用标准的网站开发工具。即使对那些对 JSP 一无所知的HTML 工具,我们也可以使用,因为它们会忽略 JSP 标签( JSP tags)。 五、 可以对开发团队进行划分。 Java 程序员可以致力于动态代码。 Web开发人员可以将经理集中在表示层( presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态 HTML 和动态内容进行弱分离( weaker separation)和强分离( stronger separation)。 六、 在此,这个讨论并不是让您停
3、止使用 servlets,只使用 JSP。几乎所有的项目都会同时用到这两种技术。针对项目中的某些请求,您可能会在 MVC 构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是 servlet 并不能填满您的工具箱。 二、 JSP 相对于竞争技术的优势 许多年前, Marty 受到邀请 ,参加一个有关软件技术的小型 (20 个人 )研讨会 .做在 Marty 旁边的人是 James Gosling- Java 编程语言的发明者。隔几个位置 ,是来 自华盛顿一家大型软件公司的高级经理。在讨论过程中 ,研讨会的主席提出了 Jini的议题 ,这在当时是一项新的 Java技术 .主
4、席向该经理询问他的想法 .他继续说 ,他们会持续关注这项技术 ,如果这项技术变得流行起来 ,他们会遵循公司的 “ 接受并扩充 (embrace and extend)” 的策略 .此时 , Gosling随意地插话说 “ 你的意思其实就是不接受且不扩充 (disgrace and distend)。 ” 在此 , Gosling 的抱怨显示出,他感到这个公司会从其他公司那里拿走技术 ,用于他们自己的目的 .但你猜这次怎么样 ?这 次鞋子穿在了另一只脚上。 Java 社团没有发明这一思想 -将页面设计成由静态 HTML 和用特殊标签标记的动态代码混合组成 .。 ColdFusion 多年前就已经
5、这样做了。甚至 ASP(来自于前述经理所在公司的一项产品 )都在 JSP出现之前推广了这种方式。实际上 ,JSP 不只采用了这种通用概念 ,它甚至使用许多和 ASP 相同的特殊标签。 因此 ,问题变成 :为什么使用 JSP,而不使用其他技术呢 ?我们的第一反应是我们不是在争论所有的人应该做什么。其他这些技术中 ,有一些也很不错 ,在某些情况下也的确是合情合理的选择 .然而 ,在其他情形 中 ,JSP 明显要更好一些。下面给出几个理由。 与 .NET 和 Active Server Pages (ASP)相比 .NET 是 Microsoft 精心设计的一项技术。 ASP.NET 是与 serv
6、lets 和 JSP直接竞争的技术。 JSP 的优势体现在两个方面。 首先 ,JSP可以移植到多种操作系统和 Web服务器 ,您不必仅仅局限于部署在 Windows 和 IIS 上尽管核心 .NET 平台可以在好几种非 Windows 平台上运行,但 ASP 这一部分不可以。您不能期望可以将重要的 ASP.NET 应用部署到多种服务器和操作系统。对于某些应用 ,这种差异没有什么影响。但有些应用,这种差异却非常重要。 其次,对于某些应用,底层语言的选择至关重要。例如,尽管 .NET 的 C#语言设计优良,且和 Java 类似,但熟悉核心 C#语法和众多工具库的程序员很少。此外 ,许多开发者依旧使
7、用最初版本的 ASP。相对于这个版本 ,JSP在动态代码方面拥有明显的优势。使用 JSP,动态部分是用 Java 编写的 ,而非 VBScript 过其他 ASP 专有的语言 ,因此 JSP 更为强劲 ,更适合于要求组件重用的复杂应用。 当将 JSP 与之前版本的 ColdFusion 对比时,您可能会得到相同的结论。应用 JSP,您可以使用 Java 编写 “ 真正的代码 ” ,不必依赖于特定的服务器产品。然而,当前版本的 ColdFusion 满足 J2EE 服务器的环境,允许开发者容易的混合使用 ColdFusion 和 Servlet/JSP 代码。 与 PHP 相比 PHP( “PH
8、P : Hypertext Preprocessor” 的递归字母缩写词)是免费的、开放源代码的、 HTML 嵌入其中的脚本语言,与 ASP 和 JSP 都有某种程度的类似。 JSP 的一项优势是动态部分用 Java 编写,而 Java 已经在联网、数据库访问、分布式对象等方面拥有广泛的 API,而 PHP 需要学习全新的、应用相对广泛的语言。 JSP 的第二项优势是,和 PHP 相比, JSP 拥有极为广泛的工具和服务器提供商的支持。 与纯 Servlet 相比 原则上, JSP 并没有提供 Servlet 不能完成的功能。实际上, JSP 文档在后台被自动转换成 Servlet。但是编写(
9、和修改)常规的 HTML,要比无数 println 语句生成 HTML 要方便得多。另外,通过将表示与内容分离,可以为不同的人分配不同的任务:网页设计人员使用熟悉的工具构建HTML,要么为 Servlet 程序员留出空间插入动态内容,要么通过 XML 标签间接调用动态 内容。 这是否表示您只可以学习 JSP,将 Servlet 丢到一边呢?当然不是!由于以下 4 种原因, JSP 开发人员需要了解 Servlet: ( 1) JSP 页面会转换成 Servlet。不了解 Servlet 就无法知道 JSP 如何工作。 ( 2) JSP 由静态 HTML、专用的 JSP 标签和 Java 代码组成。哪种类型的Java 代码呢?当然是 Servlet 代码!如果不了解 Servlet 编程,那么就无法编写这种代码。 ( 3)一些任务用 Servlet 完成比用 JSP 来完成要好。 JSP 擅长生成由大量组织有序的结构化 HTML 或其他字符数据组成 的页面。 Servlet 擅长生成二进制数据,构建结构多样的页面,以及执行输出很少或者没有输出的任务(比如重定向)。 ( 4)有些任务更适合于组合使用 Servlet 和 JSP 来完成,而非单独使用