1、由金海伊冯, Java 技术顾问马克罗斯, JavaServerPages 2.0 说明 公司领导 2003 年 2 月 作为 JavaServer Pages(JSP)技术正变得被广泛地在网上的应用过程中采用, 很多 JSP 程序员和从事于网络开发与维护这些网络用途的开发者面临着一个左右为难的窘境,这和许多JAVA 程序员面临的窘境是一样的,就是: 我们怎样组织 JSP 代码,使它容易读写并且一贯保持? 在这篇文章里, 我们为写 JSP 页 (第 1.1 版本和 1.2)提出一套标准协定,那应该由使用网组成部分的 一项典型的软件项目遵循。文章依据了一个 JAVA 程序语言模板的编码协定,这种
2、协议用作鉴定各种各样的重要的元素, 那种元素应该被在一种编码的协定说明 (对 JSP 技术相关 )过程中提出。 尤其, 它地址文件名字和组织,凹口,说明,指令, 申明 , scriptlets,表达方式,白色的空间,命名约定和编程惯例。 因为这在提出一套 JSP 编码 约定 时是我们的第一个尝试, 你对这些建议 的任何反馈 对于我们都十分感 兴趣。 请把全部反馈送到jsp-codeconv-。 JavaServer 第 2.0 页说明, 当有第 1.2 版本完全向后相容时, 考虑到一种无书写的编程风格 (如果没有 申明 , scriptlets 和表达方式 )和有许多新特征预计逐步形成这些 约
3、定 。 可能的话,这篇文章选择将调控新 JSP 的 约定 为 2.0 个技术特征。 最后,我们假定你象已经为你的工程由你的组织采用的那样熟悉 JSP 技术, Java 技术和Java 代码 约定 。 如果不,我们推荐你从在这里的 Java 技术和在这里的 JSP 技术开始。 为什么有代码 约定 ? 代码 约定 的 许多原因对程序员和网内容开发者 来说是 重要 的 : 他们改进软件人工制品的 易读性, 他们降低训练管理和努力 他们的机构化的约定朝着标准化平衡 文件的名字和位置 命名文件给工具卖方和网络容器一种方法来决定文件的类型和 相应的 说明 他们 下述表格列举我们建议的文件后缀和位置。 文件
4、类型文件后缀推荐位置 JSP 技术 .jsp / JSP 碎片 .jsp/ .jspf/WEB-INF/jspf/ 级联样式表 .css /css/ JavaScript 技术 .js /js/ HTML 网页 .html / 网络资源 .gif, .jpg, etc. /images/ 标记库描述符 .tld /WEB-INF/tld/ 当读上面的表格时,有一些事情记住。 首先, 是网络应用 (在一个 .war 文件里面的根目录 )的上下文的根。 其次, 用来提供精炼的动态和静止的网页内容的逻辑组。 对小型网络应用来说,这可能是一根空的串 。 第三,我们使用术语 JSP 碎片指的是能被归入另
5、一 JSP 网页的一 JSP 网页。 在 JSP 2.0 说明里注意到,术语 JSP 程序段 被改为使用作为术语 JSP 碎片 被超载。 JSP 碎片能使用 .jsp或者 .jspf 作为后缀, 并且能分别被安置或者在 /WEB-INF/ jspf 或者有其余静止内容。 并非整页总是使用那些后缀 .jspf 的 JSP 的碎片应该总能被安置在 /WEB-INF/ jspf。第 4, 虽然 JSP 说明为 JSP 碎片建议 .jspf 和 .jsp 为可能的扩展, 我们推荐 .jspf 同 .jsf 可能被 JavaServer Faces详细提出使用。 最后, 这是一个通常的方法通常,就是安置
6、描述符库的描述符文件和任何其他非公众内容在 WEB-INF/或者隶属于它的子目录之下的方法。 以这种方法,那些内容对于那些客户将越来越不易于接近和看不见 ,因为那些网络存储器将不为隶属于 WEB-INF/的任何文件提供服务。 一个可选择的受欢迎的文件的 名字, 象在部署描述符 (web.xml)的受欢迎文件的要素里 申明的那样, 如果将产生动态的内容,应该是 index.jsp,或者如果受欢迎的页网是静止的,则是 index.html。 当使 JSP 文件国际化时,我们推荐你通过他们的地点把 JSP 页把归类进目录。 例如,英文版的 index.jsp 将出现在下 /en_US/ index.
7、jsp 而那些日本版本的相同文件的出现将在 /ja _ JP / index.jsp 下。 通常, Java 指导课提供关于使 Java 代码国际化的附加信息, 并且那些利用J2EE 平台预先设 计计划的申请书为企业提供关于网应用的国际化的信息。 文件组织 一个好的结构的源头代码文件不仅容易读,并且更迅速的在文件内部安置信息。 在下面的部分,我们将介绍关于 JSP 和标记库描述符文件的结构。 JSP 文件 / JSP 碎片文件 一个 JSP 文件由以下部分组成,这些部分按顺序列出: 公开的注释 JSP 网页指令 可选择的标签库指令 可选择的 JSP 文件申明 HTML 和 JSP 代码 公开的
8、注释 一个 JSP 文件或者碎片文件用一个服务器方面风格的注释开始 这条注释只在服务器方面是可见的,因为它在 JSP 网页面转换期间被除去。 在这条注释内是作者,日期和修正的版权申明, 关于网开发者的 JSP 页的一个标识符和描述。这些 (#) 特点的结合被确定的程序作为指明标识符的开始辨认。 当这样的程序很少被使用时,使用这个串是没有害处。 另外, 这结合有时添加 $Id$作为鉴定信息自动被插入 JSP 网页中, 以一些版本控制程序。 说明部分提供 简明的关于 JSP 页的目的的信息。 它不止持续一个段落。 在 有些情况下 , 公开的注释需要在翻译期间被保留并且真实性和有法律目的传播到客户端
9、(对一个浏览器可见 )。 这可能通过使注释块分裂成两个部分被取得; 首先,客户端风格的注释: 以及一条更短的服务器端风格的注释: JSP 网页指令 一个 JSP 网页的指 令在翻译同时给与 JSP 网页相关的确定的指令下定义。 JSP 说明不把限制条件强加给那 JSP 页指令可能被在相同的页内确定。 因此 (除了第一个 例子 在输出的时候以两行额外的空白行作为开头 ),以下的二个代码 例子 相等: 代码样品 1: 如果任何指令的长度, 例如一指令的页,超过一 个 JSP 页 (80 个字符 )的正常宽度,指令插入多产品: 代码样品 2: 通常, 例子 2 对于指令的页的代码样品来说比代码第 1 样品是 更 好的 选择适合确定。 当 复杂的 JAVA 包需要被 输入 到 JSP 页时,一个例外发生,导致非常长时间的 输入 把归于: