JSP技术简介(外文翻译).doc
精选优质文档-倾情为你奉上JSP技术概述一、 JSP的好处二、 JSP页面最终会转换成servler。因而,从根本上,JSP页面能够执行的任何任务都可以用servler来完成。然而,这种底层的等同性并不意味着servler和JSP页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。和单独使用servler相比,JSP提供下述好处:三、 l JSP中HTML的编写与维护更为简单。JSP中可以使用常规的HTML:没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。四、 l 能够使用标准的网站开发工具。即使对那些对JSP一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSP tags)。五、 l 可以对开发团队进行划分。Java程序员可以致力于动态代码。Web开发人员可以将经理集中在表示层(presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weaker separation)和强分离(stronger separation)。六、 在此,这个讨论并不是让您停止使用servlets,只使用JSP。几乎所有的项目都会同时用到这两种技术。针对项目中的某些请求,您可能会在MVC构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是servlet并不能填满您的工具箱。二、JSP相对于竞争技术的优势许多年前,Marty受到邀请,参加一个有关软件技术的小型(20个人)研讨会.做在Marty旁边的人是James Gosling- Java编程语言的发明者。隔几个位置,是来自华盛顿一家大型软件公司的高级经理。在讨论过程中,研讨会的主席提出了Jini的议题,这在当时是一项新的Java技术.主席向该经理询问他的想法.他继续说,他们会持续关注这项技术,如果这项技术变得流行起来,他们会遵循公司的“接受并扩充(embrace and extend)”的策略.此时, Gosling随意地插话说“你的意思其实就是不接受且不扩充(disgrace and distend)。”在此, Gosling的抱怨显示出,他感到这个公司会从其他公司那里拿走技术,用于他们自己的目的.但你猜这次怎么样?这次鞋子穿在了另一只脚上。Java社团没有发明这一思想-将页面设计成由静态HTML和用特殊标签标记的动态代码混合组成.。ColdFusion多年前就已经这样做了。甚至ASP(来自于前述经理所在公司的一项产品)都在JSP出现之前推广了这种方式。实际上,JSP不只采用了这种通用概念,它甚至使用许多和ASP相同的特殊标签。因此,问题变成:为什么使用JSP,而不使用其他技术呢?我们的第一反应是我们不是在争论所有的人应该做什么。其他这些技术中,有一些也很不错,在某些情况下也的确是合情合理的选择.然而,在其他情形中,JSP明显要更好一些。下面给出几个理由。与.NET和Active Server Pages (ASP)相比.NET是Microsoft精心设计的一项技术。ASP.NET是与servlets和JSP直接竞争的技术。JSP的优势体现在两个方面。首先,JSP可以移植到多种操作系统和Web服务器,您不必仅仅局限于部署在Windows 和IIS上尽管核心.NET平台可以在好几种非Windows平台上运行,但ASP这一部分不可以。您不能期望可以将重要的ASP.NET应用部署到多种服务器和操作系统。对于某些应用,这种差异没有什么影响。但有些应用,这种差异却非常重要。其次,对于某些应用,底层语言的选择至关重要。例如,尽管.NET的C#语言设计优良,且和Java类似,但熟悉核心C#语法和众多工具库的程序员很少。此外,许多开发者依旧使用最初版本的ASP。相对于这个版本,JSP在动态代码方面拥有明显的优势。使用JSP,动态部分是用Java编写的,而非VBScript过其他ASP专有的语言,因此JSP更为强劲,更适合于要求组件重用的复杂应用。当将JSP与之前版本的ColdFusion对比时,您可能会得到相同的结论。应用JSP,您可以使用Java编写“真正的代码”,不必依赖于特定的服务器产品。然而,当前版本的ColdFusion满足J2EE服务器的环境,允许开发者容易的混合使用ColdFusion和Servlet/JSP代码。与PHP相比PHP(“PHP:Hypertext Preprocessor”的递归字母缩写词)是免费的、开放源代码的、HTML嵌入其中的脚本语言,与ASP和JSP都有某种程度的类似。JSP的一项优势是动态部分用Java编写,而Java已经在联网、数据库访问、分布式对象等方面拥有广泛的API,而PHP需要学习全新的、应用相对广泛的语言。JSP的第二项优势是,和PHP相比,JSP拥有极为广泛的工具和服务器提供商的支持。与纯Servlet相比原则上,JSP并没有提供Servlet不能完成的功能。实际上,JSP文档在后台被自动转换成Servlet。但是编写(和修改)常规的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来完成,而非单独使用Servlet或JSP。与JavaScript相比JavaScript和Java编程语言完全是两码事,前者一般用于在客户端动态生成HTML,在浏览器载入文档时构建网页的部分内容。这是一项有用的功能,一般与JSP的功能(只在服务器端运行)并不发生重叠。和常规HTML页面一样,JSP页面依旧可以包括用于JavaScript的SCRIPT标签。实际上,JSP甚至能够用来动态生成发送到客户端的JavaScript。因此,JavaScript不是一项竞争技术,它是一项补充技术。JavaScript也可以用在服务器端,最因人注意的是SUN ONE(以前的iPlanet)、IIS和BroadVision服务器。然而,Java更为强大灵活、可靠且可移植。与WebMacro和Velocity相比JSP决非完美。许多人都曾指出过JSP中能够改进的功能。这是一件好事,JSP的优势之一是该规范由许多不同公司组成的社团控制。因此,在后续版本中,这项技术能够得到协调的改进。但是,一些组织已经开发出了基于Java的替代技术,试图弥补这些不足。据我们的判断,这样做是错误的。使用扩充JSP和Servlet技术的第三方工具,如Apache Structs,是一种很好的思路,只要该工具带来的好处能够补偿工具带来的额外复杂性。但是,试图使用非标准的工具代替JSP则不理想。在选择一项技术时,需要权衡许多方面的因素:标准化、可移植性、集成性、行业支持和技术特性。对于JSP替代技术的争论几乎只是集中在技术特性上,而可移植性、标准化和集成性也十分重要。例如,Servlet和JSP规范为Web应用定义了一个标准的目录结构,并提供用于部署Web应用的标准文件(.war文件)。所有JSP兼容的服务器必须支持这些标准。我们可以建立过滤器作用到任意树木的Servlet和JSP页面上,但不能用于非标准资源。Web应用安全设置也同样如此。此外,业界对JSP和Servlet技术的巨大支持使得这两项技术都有了巨大的进步,从而减轻了对JSP的许多批评。例如,JSP标准标签库和JSP 2.0表达式语言解决了两种最广泛的批评:缺乏良好的迭代结构;不使用显式的Java代码或冗长的jsp:useBean元素难以访问动态结果。三、对JSP的误解忘记JSP技术是服务器端技术下面是Marty收到的一些典型问题(大部分问题不止一次的出现)。l 我们的服务器正在运行JDK1.4。我如何将Swing组件用到JSP页面中呢? 我如何将图像放到JSP页面中?我不知道读取图像文件应该使用哪些Javal I/O命令。 Tomcat不支持JavaScript,当用户在图像上移动鼠标时,我如何使图像突出显示呢?ll 我们的客户使用不理解JSP的旧浏览器。我应该怎么做? 当我们的客户在浏览器中使用“Viewl Source”(查看源代码)时,如何阻止他们看到JSP标签?所有这些问题都基于浏览器对服务器端的过程在有所了解的假定之上。但事实上浏览器并不了解服务器端的过程。因此:l 如果要将使用Swing组件的applet放到网页中,重要的是浏览器的Java版本,和服务器的Java版本无关。如果浏览器支持Java 2平台,您可以使用正常的APPLET(或Java插件)标签,即使在服务器上使用了非Java技术也须如此。 您不需要Javal I/O来读取图像文件,您只需将图像放在存储Web资源的目录中(即WEB-INF/classes向上两级的目录),并输出一个正常的IMG标签。l 您应该用SCRIPT标签,使用客户端JavaScript创建在鼠标下会更改的图像,这不会由于服务器使用JSP而改变。l 浏览器根本不“支持”JSP-它们看到的只是JSP页面的输出。因此,如同对待静态HTML页面一样,只需确保JSP输出的HTML与浏览器兼容。l 当然,您不需要采取什么措施来阻止客户看到JSP标签,这些标签在服务器上进行处理,发送给客户的输出中并不出现。混淆转换期间和请求期间JSP页面需要转换成servlet。Servlet在编译后,载入到服务器的内容中,初始化并执行。但是每一步发生在什么时候呢?要回答这个问题,要记住以下两点:l JSP页面仅在修改后第一次被访问时,才会被转换成servlet并进行编译;l 载入到内存中、初始化和执行遵循servlet的一般规则。表1列出一些常见的情形,讲述在该种情况下每一步是否发生。最常被误解的项已经突出标示出来。在参考该表时,要注意,由JSP页面生成的servlet使用_jspService方法(GET和POST请求都调用该函数),不是doGet或doPost方法。同样,对于初始化,它们使用jspInit方法,而非init方法。表1 各种情况下的JSP操作 将JSP 页面转换成servlet 编译Servlet 将Servlet 载入到服务器内存中 调用jspInit 调用_jspService 页面初次创建请求 1 有 有 有 有 有请求 2 无 无 无 无 有服务器重启后请求3 无 无 有 有 有请求 4 无 无 无 无 有页面修改后请求 5 有 有 有 有 有请求 6 无 无 无 无 有JSP Technical Overview A, JSP benefits 2, JSP pages will eventually be converted into servler. Thus, fundamentally, JSP pages can perform any task can be used servler to complete. However, this does not mean that the underlying equivalence servler and JSP pages for all conditions are equally applicable. The problem is not technical ability, but both the convenience, productivity and maintainability different. After all, in a particular platform can be done with the Java programming language, things, the same can be done in assembly language, but it is still important to choose which language. And single use servler compared, JSP provides the following benefits: 3, l JSP in the HTML, the preparation and maintenance easier. JSP can use regular HTML: no additional backslash, no additional pairs of quotes, and no implied Java syntax. 4, l can use standard web development tools. Even for those who know nothing about JSP's HTML tools, we can use, because they ignore the JSP tags (JSP tags). 5, l development team can be divided. Java programmers can engage in dynamic code. Web developers can focus on the manager, said layer (presentation layer) on the. For large projects, this division of paramount importance. Based on the size of the development team, and the complexity of the project can be static HTML and dynamic content for the weak separation of (weaker separation) and strong separation (stronger separation). 6, in this, this discussion does not allow you to stop using servlets, using only JSP. Almost all of the projects will be used both technologies simultaneously. Some of the request for the project, you may be used in combination under the MVC framework of these two techniques. We always want to use the proper tools to complete the corresponding work, only the servlet does not fill up your toolbox. 2, JSP advantage relative to competing technologies Many years ago, Marty was invited to participate in a software technology related to small (20 individuals) seminar. Do in the next Marty are James Gosling - Java programming language inventor. Across several locations, is a large software company from Washington, a senior manager. During the discussion, the seminar topics proposed by the Chairman of the Jini, which was a new Java technology. The President to the manager, asked about his thoughts. He went on to say that they will continue to focus the technology, if the technology becomes popular, they will follow the company's "acceptance and expansion (embrace and extend)" strategy. At this point, Gosling casually interjected to say "do you mean actually do not accept and does not expand (disgrace and distend)." In this, Gosling's complaint shows that he felt that the company will take away from other companies where the technology for their own purposes. But how do you think of this kind? The shoes to wear at the feet of another. Java community did not invent this idea - the page designed by a static HTML and the use of a special label marked a mix of dynamic code. ColdFusion years ago, has already done so. Even ASP (from where the previous manager of the company's one product) are in JSP before the appearance to promote this approach. In fact, JSP not only adopted this general concept, it even use the same special number, and ASP tags. So the question becomes: Why use JSP, instead of using other technologies? Our first reaction is that we are not arguing about all the people should be done. These other technologies, there are some very good, in some cases, is indeed a reasonable choice. However, in other cases, JSP is significantly better. Here are a number of reasons. With. NET and Active Server Pages (ASP) compared to . NET is Microsoft designed a technology. ASP.NET is a direct competition with the servlets and JSP technology. The advantages of JSP is reflected in two aspects. First of all, JSP can be ported to multiple operating systems and Web servers, you do not have to be limited to be deployed in Windows and IIS on the core though. NET platform can be several non-Windows platforms, but not this part of the ASP. You can expect to be important ASP.NET application deployment to multiple servers and operating systems. For certain applications, such differences have little impact. However, some applications, this difference is very important. Secondly, for some applications, the underlying choice of language is essential. For example, while. NET's C # language design quality, and, and Java is similar, but are familiar with the core of C # syntax and various tools for database programmers rarely. In addition, many developers still use the original version of the ASP. Compared to this version, JSP dynamic code has a clear advantage. The use of JSP, dynamic part is written in Java, rather than VBScript in other ASP proprietary language, so JSP is more robust, more suitable for complex applications require the reuse of components. When the JSP comparison with previous versions of ColdFusion, you may get the same conclusion. Application JSP, you can use the Java write "real code", do not have to rely on a specific server products. However, the current version of ColdFusion to meet the J2EE server environment that allows developers to easily mix of ColdFusion and Servlet / JSP code. Compared with the PHP PHP ( "PHP: Hypertext Preprocessor" recursive acronym) is a free, open source, HTML embedded scripting language which, with ASP and JSP are similar to some extent. One advantage of JSP is a dynamic part of the preparation to use Java, but Java has been in networking, database access, distributed objects, etc. have a wide range of API, and PHP need to learn new, application of a relatively wide range of languages. The second advantage of JSP, and PHP comparison, JSP has a very wide range of tools and server providers. Compared with pure Servlet In principle, JSP and Servlet do not provide the function can not be completed. In fact, JSP documents are automatically converted in the background Servlet. But the writing (and modify) the conventional HTML, than the numerous println statements to generate the HTML easier. In addition, by separating content that can be assigned to different people for different tasks: Web designers to use familiar tools to build HTML, or leave space for Servlet programmers insert dynamic content, or indirectly through the XML tags called dynamic content. Does this mean that you can only learn JSP, the Servlet threw the side of it? Of course not! For the following four kinds of reasons, JSP developers need to understand the Servlet: (1) JSP page is converted into a Servlet. Servlet can not know JSP do not understand how they work. (2) JSP from a static HTML, special JSP tags and Java code. What type of Java code to do? Servlet code of course! If you do not understand the Servlet programming, you can not write this code. (3) The number of tasks completed with the Servlet to perform better than using JSP. JSP is generated by a large number of well organized and good at the structure of HTML or any other character data consisting of the page. Servlet good at generating binary data, building structure, a variety of pages, as well as the implementation of the output with little or no output task (for example, redirection). (4) Some tasks are more suited to be used in combination Servlet and JSP to complete, rather than alone Servlet or JSP. Compared with the JavaScript JavaScript and Java programming language are two different things, the former are generally used for the client dynamically generate HTML, the browser load a document to build part of a page. This is a useful function, general and JSP functionality (only running on the server side) does not overlap. Like conventional HTML pages, JSP pages can still include the SCRIPT tag for JavaScript. In fact, JSP or even can be used to dynamically generate to send to the client JavaScript. Thus, JavaScript is not a competing technology, it is a complementary technology. JavaScript can also be used on the server side, the most individualized attention is SUN ONE (former iPlanet), IIS, and BroadVision server. However, Java is more powerful, flexible, reliable and portable. Compared with the WebMacro and Velocity JSP by no means perfect. Many people have pointed out in the JSP can be improved features. This is a good thing, JSP's strengths is the specification of many different companies controlled societies. Thus, in subsequent versions, this technology can be improved co-ordination. However, some organizations have developed a Java-based alternative technologies to try to fill these gaps. According to our judgments, this is wrong. JSP and Servlet technologies using the expansion of third-party tools, such as Apache Structs, is a good idea, as long as the benefits of the tool to compensate for the additional complexity of the tool. However, the attempt to use non-standard tools to replace the JSP is not ideal. In selecting a technology, you need to weigh a number of factors: standardization, portability, integration, industry support and technical characteristics. JSP alternative technologies for the debate almost exclusively focused on the technical characteristics, while portability, standardization, and integration is also important. For example, Servlet and JSP specification defines a standard Web application directory structure, and provides for the deployment of Web applications, standard file (. War files). JSP is compatible with all servers must support these standards. We can create filters to any trees in the role of Servlet and JSP page, but not for non-standard resources. Web application security settings are the same. In addition, the industry's JSP and Servlet technology, the tremendous support of these two technologies have made tremendous progress, thereby reducing many of the criticisms of the JSP. For example, JSP Standard Tag Library, and JSP 2.0 expression language to solve the two of the most widespread criticism: the lack of good iterative structure; do not use explicit Java c