




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
由金海伊冯,Java 技术顾问马克罗斯,JavaServerPages 2.0 说明 公司领导2003年2月 作为JavaServer Pages(JSP)技术正变得被广泛地在网上的应用过程中采用, 很多JSP 程序员和从事于网络开发与维护这些网络用途的开发者面临着一个左右为难的窘境,这和许多JAVA程序员面临的窘境是一样的,就是:我们怎样组织JSP 代码,使它容易读写并且一贯保持? 在这篇文章里, 我们为写JSP 页(第1.1 版本和1.2)提出一套标准协定,那应该由使用网组成部分的一项典型的软件项目遵循。文章依据了一个JAVA程序语言模板的编码协定,这种协议用作鉴定各种各样的重要的元素, 那种元素应该被在一种编码的协定说明(对JSP 技术相关)过程中提出。 尤其, 它地址文件名字和组织,凹口,说明,指令,申明,scriptlets,表达方式,白色的空间,命名约定和编程惯例。 因为这在提出一套JSP编码约定时是我们的第一个尝试, 你对这些建议的任何反馈对于我们都十分感兴趣。 请把全部反馈送到。 JavaServer第2.0 页说明, 当有第1.2 版本完全向后相容时, 考虑到一种无书写的编程风格(如果没有申明,scriptlets和表达方式)和有许多新特征预计逐步形成这些约定。 可能的话,这篇文章选择将调控新JSP的约定为2.0个技术特征。 最后,我们假定你象已经为你的工程由你的组织采用的那样熟悉JSP 技术,Java 技术和Java 代码约定。 如果不,我们推荐你从在这里的Java 技术和在这里的JSP 技术开始。 为什么有代码约定? 代码约定的许多原因对程序员和网内容开发者来说是重要的: 他们改进软件人工制品的易读性,他们降低训练管理和努力 他们的机构化的约定朝着标准化平衡文件的名字和位置命名文件给工具卖方和网络容器一种方法来决定文件的类型和相应的说明他们下述表格列举我们建议的文件后缀和位置。 文件类型文件后缀推荐位置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碎片指的是能被归入另一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详细提出使用。 最后, 这是一个通常的方法通常,就是安置描述符库的描述符文件和任何其他非公众内容在WEB-INF/或者隶属于它的子目录之下的方法。 以这种方法,那些内容对于那些客户将越来越不易于接近和看不见 ,因为那些网络存储器将不为隶属于WEB-INF/的任何文件提供服务。 一个可选择的受欢迎的文件的名字, 象在部署描述符(web.xml)的受欢迎文件的要素里申明的那样, 如果将产生动态的内容,应该是index.jsp,或者如果受欢迎的页网是静止的,则是index.html。当使JSP 文件国际化时,我们推荐你通过他们的地点把JSP 页把归类进目录。 例如,英文版的index.jsp将出现在下/en_US/ index.jsp而那些日本版本的相同文件的出现将在/ja _ JP / index.jsp下。 通常,Java指导课提供关于使Java 代码国际化的附加信息, 并且那些利用J2EE 平台预先设计计划的申请书为企业提供关于网应用的国际化的信息。 文件组织一个好的结构的源头代码文件不仅容易读,并且更迅速的在文件内部安置信息。 在下面的部分,我们将介绍关于JSP和标记库描述符文件的结构。 JSP 文件/ JSP碎片文件一个JSP文件由以下部分组成,这些部分按顺序列出: 公开的注释JSP 网页指令可选择的标签库指令可选择的JSP 文件申明HTML 和JSP 代码公开的注释一个JSP文件或者碎片文件用一个服务器方面风格的注释开始 这条注释只在服务器方面是可见的,因为它在JSP网页面转换期间被除去。 在这条注释内是作者,日期和修正的版权申明, 关于网开发者的JSP 页的一个标识符和描述。这些(#) 特点的结合被确定的程序作为指明标识符的开始辨认。 当这样的程序很少被使用时,使用这个串是没有害处。 另外, 这结合有时添加$Id$作为鉴定信息自动被插入JSP 网页中, 以一些版本控制程序。 说明部分提供简明的关于JSP 页的目的的信息。 它不止持续一个段落。 在有些情况下, 公开的注释需要在翻译期间被保留并且真实性和有法律目的传播到客户端(对一个浏览器可见)。 这可能通过使注释块分裂成两个部分被取得; 首先,客户端风格的注释: 以及一条更短的服务器端风格的注释: JSP 网页指令一个JSP网页的指令在翻译同时给与JSP 网页相关的确定的指令下定义。 JSP 说明不把限制条件强加给那JSP 页指令可能被在相同的页内确定。 因此(除了第一个例子在输出的时候以两行额外的空白行作为开头),以下的二个代码例子相等: 代码样品1: 如果任何指令的长度, 例如一指令的页,超过一个JSP 页(80 个字符)的正常宽度,指令插入多产品: 代码样品2: 通常,例子2 对于指令的页的代码样品来说比代码第1 样品是更好的选择适合确定。 当复杂的JAVA包需要被输入到JSP 页时,一个例外发生,导致非常长时间的输入把归于: 在这情况内,象下面一样拆解这页指令更合适: .注意到通常,输入陈述遵循地方代码约定给JAVA技术。 例如, 当能达到来自相同的包的3 种种类被使用时,它可能一般被接受为那个, 输入应该申明具体的独特的类,而不是他们的包裹。 超出3 种种类,决定是分别列举那些种类还是使用是一个网开发者的责任。 *表达式。 在以前例子中, 鉴定一种外部种类使生活更容易, 特别是当你努力找到一种轻便马车种类或者理解JSP 页怎样与Java 代码相互作用时。 例如, 不通知被输入的JAVA包就象如下所示的那样, 为了找到一种用户种类,一个网开发者必须通过所有这些包搜寻: .在后面例子中,书面JSP 页更整洁,但是找到种类是难的。 通常,如果一JSP 页有太多输入指令,它很可能包含太多Java 代码。 更好的选择将是使用更多的JSP 标签(在这篇文章里过后讨论)。 可选择标签库一指令的标签库申明风俗标签库以JSP 页使用的指令(s)。 短的指令被在一条单个的线内申明。 多标签库指令在JSP 页内在相同的位置一同被堆积身体: .正象用指令页, 一指令的标签库的长度超过一JSP 页(80 字符)的正常宽度如果,指令插入多产品:只正被在一页里使用的标签库应该被输入。从JSP 1.2 说明, 非常推荐JSP标准标签库(JSTL)被在帮助降低对JSP scriptlets的需要的你的网申请内使用, 在你的页里。 使用JSTL的页,通常,容易读并且保持。 可选择的JSP 申明申明JSP 申明通过一JSP 页拥有的方法和变量。 这些方法和变量在JAVA编程语言不不同于申明, 因此相关的代码约定应该被跟随。 申明被喜欢被包含在单人房里块申明JSP,集中 身体s在那些 页JSP的一个地区内的申明。 这是一个例子: Disparate declaration blocks Preferred declaration block . HTML 和JSP 代码这部分的JSP 页包括JSP网页HTML主体和JSP代码,如JSP的表达式,字体,和JavaBeans的说明。 标签库描述符标签库描述符(TLD)文件必须以合适的XML申明和正确的DTD描述开头。 例如,一JSP 1.2 TLD 文件必须以下面为开始: 这立即随后有一条服务器方面风格的意见,列举作者,日期,版权,鉴定信息, 以及关于库的短的描述: 使用这些要素为指南的规章和指导方针与关于对为JSP 文件/碎片文件定义的那些是一样的。文档剩下部分包含以下部分,以它们出现的顺序为序:对正确的标签库的可选择的申明对事件响应者的可选择的申明对一个或多个激活的标签的申明建议你为TLD文档的要素加入以下可选择的副要素。这些副要素为标签设计者提供地址记录来记录行为和额外的TLD文档的信息,然后对网络部分开发者开放它们。JSP1.2建议TLD要素JSP1.1建议副要素副要素性质描述(JSP1.2)开始程序描述(JSP1.2)标签显示名称,描述,例子名,信息taglib uri,显示名称,uri描述,信息正确描述(JSP1.2)多种描述(JSP1.2)首行缩排缺口必须被空格符填满。标签符引起不同编辑者对空格符的不同理解,不能在JSP页面里使用缺口。除非被特殊集成开发环境(IDE)工具限制.这儿是一个例子: 持续缺口会使前一行里固有的点调整随后一系列阻塞。持续缺口是正常缺口复合的单元(多组的4空符):正本要素的缺口当一个JSP正本要素(如申明、正本、表达式)不适合单行,则采用的正本语言缺口条约适合要素主体。主体从同一行开始以要素标记%=开头,开始新的一行也是以)在单独一行表示结束。如:JSP,HTML和Java的混合缺口。因为JSP要素混合着Java代码和暂时文档,混和缺口对于降低理解JSP来源文件是必要的。这是因为形式上的正常的缺口可能使看见JSP源文件很困难。作为普遍规则,对每个在另外被引用的要素要使用一个多余的正常缺口单元。注意这会改变客户端的最终输出的缺口致使显示。然而多余的缺口经常被浏览器忽略,致使浏览器上的输出无效。例如,在TABLE标签前加入多个空格不会改变表格的位置。所以,采用这种缺口形式能使之看上去更好看。 Last Name First Name 比这种要好: Last Name First Name 标注标注谨慎的被用来描述多余的信息或者周围代码的目的。这里我们看一下两种JSP文档的标注:JSP和客户端的评注。JSP标注JSP标注(也称为服务端评注)只对服务端可视(也就是客户端是无法看见)。纯JSP标注要比用scripting语言写的JSP标注更好,因为前者不大要依赖于基本的scripting语言,更容易演变成JSP2.0类型的页面。接下来的表格说明了:用scripting语言标注的JSP,JSP纯标注行单行 多行 客户端的标注客户端的标注()能被用来注解发给用户关于反馈的多余信息的反应。不应该包含服务端申请或引起反应的代码的行为和内部结构的信息。使用客户端标注通常不被鼓励,因为客户/用户不需要读这些标注只要能直接把收到的反馈翻译过来。真实性和合法性的目的是例外如辨认版权信息像上面描述的。另一个例外就是HTML作者使用少量HTML标注能体现HTML文档结构的方针。如: . . . .多行标注阻塞一个多行标注阻塞,无论它是JSP还是客户端,由短横线“”标记。在XML说明书里,双横线“”不允许出现在XML评注阻塞中。所以,为了和这个说明书相容和一贯,没有双横线用在多行评注阻塞点缀评论行中。下面的表格显示了使用客户端评注的优势。 JSP申明每个Java代码段,相同类型变量的申明应该在不同的行:不建议 JavaBeans的组成部分不需要申明和使用JSP申明例子但要使用激活标签。总的来说,JSP对变量的申明不提倡因为他们导致使用scripting语言引起买卖逻辑波动和Java代码进入JSP页面,而该页面设计用来展示目的的,由于全局掌握变量的范围。JSP Scriptlets无论标签库是否提供公式功能只要有可能就避免使用JSP scriptlets。这能使页面更容易读和保持,帮助从表现逻辑中区分事务逻辑,将会使你的页面更易发展成JSP2.0版本的页面(JSP2.0版本支持但不强调使用scriptlets)。在下面的例子,每个数据类型代表顾客,不同的scriptlet应该这样写:客户作为Customers数组 % for ( int i=0; i 客户端作为计数 不过,如果一座共同标签库被使用,在使用用户的不同的类型方面有一种更高的灵活性。 例如,在JSP内,标准标签库,JSP 代码的下列部分将支持两个阵列两个列举用户的表现: 不过,如果一座共同标签库被使用,在使用用户的不同的类型方面有一种更高的灵活性。 例如,在JSP内,标准标签库,JSP 代码的下列部分将支持两个阵列两个列举用户的表现: % / NOT RECOMMENDED TO BE DONE AS A SCRIPTLET! Connection conn = null; try / Get connection InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup(customerDS); conn = ds.getConnection(); / Get customer names Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(SELECT name FROM customer); / Display names while ( rs.next() ) out.println( rs.getString(name) + ); catch (SQLException e) out.println(Could not retrieve customer names: + e); finally if ( conn != null ) conn.close(); %JSP 代码的下列部分更好, 作为代表它那些与数据库那儿相互作用在myTags 标签那些风俗:隐藏那些从属性的那些它实施的代码数据库的密封并且的dataSource: 结果以风俗介绍的一个写稿的变量把myTags:dataSource并入保存挽回那些用户从用户数据库的名字的结果。 JSP 代码也能提高产生不同种类的产量(HTML,XML,WML)基于客户动力需要, 没有影响后端代码(对dataSource 标签来说)。 一种更好的选择将授予进行数据检索的一位前面控制人员servlet这, 提供给JSP 页通过请求scoped的结果把归于。 看见JAVA一个例子的蓝图的企业部分。 总之: JSP scriptlets 应该最好在JSP 页里是不存在的,以便JSP 页不依赖命令式语言程序, 并且在JSP 页内的业务逻辑实施被避免。 如果不可能, 使用价值目标(零部件JavaBeans)适合把信息传播往返于那些边服务器,并且用JSP scriptlets 改变价值反对客户产量。 使用风俗标签(标签处理机)无论何时适合被处理的信息在服务器面上可提供。 JSP 表达方式JSP 表达方式应该被使用就和JSP Scriptlets一样节约。 为了说明这,让 s作为完成等效的任务的以下的3 个例子看: Example 1 (with explicit Java code): Example 2 (with JSP tag): Example 3 (with JSTL tag): 例子1以为一个写稿的称为myBean的变量被申明。 其它二个例子以为myBean,scoped把可能被发现使用PageContext.findAttribute归于()。 也的第2 例子以为myBean被介绍到那些页使用。 在3 个例子中,JSTL 标签例子被更喜欢。 它几乎象JSP 表示一样短,读是一样容易的,更容易保持, 并且它不依赖JAVA scriptlets(哪个将要求网开发者熟悉语言和API打电话)。 而且,逐步形成成JSP 2.0个体例程序设计更容易做页,在那里等价物可能通过仅仅打印美元被完成 myB 用模板正文。 那选择收养,在开发者和在生产JSP 页在相同的工程内的全部始终如一的网中一致同意。 应当指出 JSTL例子实际上有点不同它得myBean从页上下文的价值而不是从写稿易变的一地方JAVA那里。 最后,JSP 表达方式比依赖基础的写稿的语言的句法的相等的JSP scriptlets有优先权。 例如, 被结束更喜欢 白色空间白色空间更进一步以美化JSP 代码降低含义和维护努力提高凹口。 尤其,空白的线和空间必要的话应该在一个JSP 文件里被在各种各样的位置插入。 空白的空白产品产品节约被使用改进可读性那儿页JSP, 假若他们不对生产产生不需要的影响。 对于下面的例子来说, 一空白产品在二JSP表情在街区叫的的一HTML 里面之间插入引起一额外产品在可见的HTML 产量内插入, 在内客户 s 浏览器。 如果那些空白产品不在里面,不过一块,那些影响不可见在那些 浏览器内,产量s。对客户的JSP 陈述HTML 生产 Joe Block Joe Block Joe Block空白一白色的空格符(显示为)应该被在一个JSP 标签和它的身体之间插入。 例如,如下内容 更喜欢结束 也应该有分开JSP 意见标签和意见的空格符: 使用命名约定的命名约定制造你的更容易鉴定,在工程里分类并且协调的网零部件要素。 在这个部分里,我们将看仅限于JSP 技术的这些约定。 JSP名字一个JSP(文件)名字应该总是从一个小写字母开始。 名字可能由多话组成,在这种情况下,话安置立即临近和每句话从一个大写字母开始。 一个JSP名字可能只是简单的名词或者一个短的句子。 一个仅用于动词的JSP名字应该被避免,因为它不把足够的信息传送给开发者。 例如: perform.jsp不像 performLogin.jsp 那么清楚就一个动词作为一个JSP名字的一部分而论, 现在时形式应该使用,一行动经由处理的后端被表示: showAccountDetails.jsp被结束更喜欢 showingAccountDetails.jsp 标签名字标签处理机和相关种类的命名约定被显示如下: Description Class Name XXX tag extra info (extending from javax.servlet.jsp.tagext.TagExtraInfo) XXXTEI XXX tag library validator (extending from javax.servlet.jsp.tagext.TagLibraryValidator) XXXTLV XXX tag handler interface (extending from javax.servlet.jsp.tagext.Tag/IterationTag/BodyTag) XXXTag XXX tag handler implementation XXXTag 另外,标签名字不可而在相关代码习俗给JAVA技术内指定违犯班级和接口的命名约定。 为了更进一步离其他种类区分一种相关标签的种类,包裹后缀,标签或者taglib 能被用于种类的包裹名字。 例如: com.mycorp.myapp.tags.XXXTag前缀标签应该的名字前缀标签一短然而箱标题和下档那些第一个字符有意义名词。 一个附加语前缀不应该包含非字母字符。 这是一些例子:Example OK? mytaglib no myTagLib yes MyTagLib no MyTagLib1 no My_Tag_Lib no My$Tag$Lib no 用XML句法JSP的JSP 页提供两不同的句法: 为为写JSP 页作为一份XML 资料写JSP 页和XML句法的标准句法。 被使用标准句法写的JSP 页被称为JSP 页。 被使用XML句法写的JSP 页被称为JSP 资料。 主要的这篇文章地址JSP 页,但是大多数概念也能被用于JSP 资料。 当XML 变得更流行时,使用JSP 资料预计增加, 寄给这JSP 2.0种说明将介绍友好得多的XML句法。 应当指出XML句法常常作者JSP 页与不同,并且经常同混淆起来XML一JSP 页的意见。 页作者对作者使用标准或者XML句法一JSP 页。 集装箱然后翻译进它XML 意见的JSP 页,哪个是与接触给库Validators加标签。 JSP 资料结构JSP 资料有以下的基本的结构: JSP Document . 首行是把页定义为一份XML 资料的一篇可选择的XML序言。 在可选择的序言为资料变成那些意见之后。 那些元素作为资料JSP 确定这并且出现不作为那些元素根必须。 jsp namespace 必须被输入,并且全部标签库必须被使用这种根要素输入。 版本把归于要求并且指定JSP 说明的版本正被使用哪个。 真实满足那些JSP的资料作为subelements 出现一定被被等效的他们的XML那里替换,例如。 欲了解详细信息,参见JSP 说明。 XML 说明JSP 指定对是否XML 样式说明被在生产上拆开不清楚, 因此如果一条意见意图是达成客户,是安全的, 它应该随函附上在内一节点,如下: . !CDATA .在JSP 资料里的Java 代码, 当在申明,scriptlets 和表情里面给JAVA代码写信时,一种CDATA 要素只应该被使用, 必要保证你的代码不传播开资料结构时。 . for( int level = 0; level < 3; level+ ) !CDATA Text .与在标准句法方面的那些不同,不管一种要素的内容,XML 凹口规章应该被跟随。 编程惯例通常,避免写JAVA代码(申明,scriptlets 和表情)在你的JSP 页内,适合下列理由: 用在一JSP 页里的Java 代码的句法错误直到页被部署才被发现。 用标签库和servlets的句法错误, 另一方面,在部署之前被发现。 在JSP 页里的Java 代码更难调试。 特别为可能不是Java专家的页作者,在JSP 页里的Java 代码更难保持。 不使复杂的业务逻辑与赠送逻辑混合一般被接受为实践。 JSP 页主要倾向于赠送逻辑。 包含Java 代码,HTML 的代码和为指令写稿子的另一个可能难读。 JSP 2.0 说明是赞成一种非常简单表达式语言的deemphasizing scriptlets。 如果Java 代码没被在你的页里使用,把你的JSP 页逐步形成成JSP 2.0个体例程序设计将更容易。 看见JAVA更多的指南和细节的蓝图的企业部分。 JavaBeans 零部件预置JSP 技术提供一种便利的要素初始化全部PropertyDescriptor 鉴定的一个JavaBeans 零部件的特性。 例如: 不过,这应该被谨慎使用。 首先,如果豆有特性,比如说,数量, 并且在当今的ServletRequest 物体里没有这样的参数(数量)或者参数价值是,没有什么被做: JSP 页甚至不使用空行确定豆的那特别的财产。 因此,任何价值已经被分配在bankClient 豆内合计未受影响。 第二, 不让人确定PropertyEditors的非初步特性可能不含蓄从ServletRequest 物体的线价值初始化,明确变换可能被需要。 第三,存心不良的用户能增加另外的请求参数并且确定豆的非故意的特性,如果应用没被仔细设计。 你仍然喜欢使用财产= * 在jsp内:为了生产更整洁的代码的setProperty 标签, 然后我们推荐,那你增加意见在之前那些jsp:大约参数的标签setProperty 期望存在于要初始化那些豆的目标ServletRequest。 因此,在下列例子里,从意见我们知道firstName和lastName被要求初始化bankClient 豆: 直接使用的JSP的目的暗示的JSP要获得参考这几次目标的暗示目标而不是API 叫被更喜欢。 因此,而不是使用 getServletConfig().getServletContext().getInitParameter(param)为了象通过ServletContext 实例提供的那样进入预置参数,一个人能利用容易可提供的暗示的物体: application.getInitParameter(param)在只一个预置参数的价值被输出的情况里, 使用一个JSTL 标签进入预置参数将更好: 引用引用的相同的用途被采用。 摘引应该受两双倍引语的字符约束而不是两撇号字符 。 引用的非制服更喜欢引用 一个例外是撇号被需要的时间,例如双倍引语的字符被在命令式语言程序内要求: jsp:include page= /如果一个风俗标签没有身体内容,使用风俗标签, 那些内容应该被明确申明与空(而不是给那些 JSP单词拖欠)在那些描述符库标签内象这样: hello com.mycorp.util.taglib.HelloTagSupport empty .这告诉JSP 集装箱身体内容一定是空的而不是包含任何JSP句法被分析。 影响消除不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合同范本数字资产租赁合同协议示例
- 2025中学餐厅承包合同模板
- 2025全球劳务合同范本版
- 2025房地产开发合同模板
- 铝合金型材膜厚检测技术与应用
- 媒体推广合作协议执行条款说明
- 初一学生心理健康教育教案
- 2025年心理测试与评估考试试题及答案
- 保洁员辞职报告集锦(17篇)
- 2025年培养领导力与团队合作能力考试试卷及答案
- 六年级下册道德与法治课件第四单元第九课
- 象棋比赛计分表
- 烙铁温度点检表
- 热式质量流量计技术协议
- 公司质量异常处理单
- 国家开放大学《建筑测量》实验报告4
- 办公文具协议合同模板
- 《中国古代文学史:唐宋文学》PPT课件(完整版)
- 市政工程监理规划范本(完整版)
- 220kV线路保护标准化作业指导书
- 松下NPM基本操作手册与教程
评论
0/150
提交评论