当前位置: 首页 > 图灵资讯 > 技术篇> JSP白皮书

JSP白皮书

来源:图灵教育
时间:2024-02-19 11:26:55
JavaServer PagesTM (JSP)该技术为创建显示动态生成内容的Web页面提供了一种简单而快速的方法。JSP技术的设计目的是使基于Web的应用程序更容易、更快,这些应用程序可以与各种Web服务器、应用程序服务器、浏览器和开发工具一起工作。本白皮书提供了JSP技术的全面概述,描述了其开发背景和该技术的总体目标。同时,在一个简单的例子中,它还描述了基于JavaTM技术的页面的关键组成部分。开发基于Web的应用程序:在万维网短暂的历史中,它已经从一个显示静态信息的网络演变为一个交易和购买股票的基础设施。对于基于Web的客户端,在各种应用程序中,似乎没有可能使用的限制。与传统的基于客户机/服务器的应用程序相比,基于浏览器客户端的应用程序有几个好处。这些好处包括几乎没有限制的客户访问和极其简化的应用程序部署和管理(管理者只需要更改基于服务器的应用程序,而不是数千个安装在客户端的应用程序)。通过这种方式,软件行业正在迅速向基于浏览器客户端的多层次应用程序建设迈进。这些基于Web应用程序的快速增长需要开发技术的改进。静态HTML是显示相对静态内容的好选择;新的挑战是创建基于Web的交互应用程序。在这些程序中,页面的内容是基于用户请求或系统状态,而不是预定义的文本。这个问题的早期解决方案之一是使用CGI-BIN接口;开发人员编写与接口相关的单独程序和基于Web的应用程序,后者通过Web服务器呼叫前者。该方案存在严重的可扩展性问题——每个新的CGI都需要在服务器上添加一个新的过程。如果多个用户并发访问该程序,这些过程将消耗Web服务器的所有可用资源,并将系统性能降低到极低。一些Web服务器供应商试图通过为其服务器提供“插件”和API来简化Web应用程序的开发。这些解决方案与特定的Web服务器有关,不能解决跨多个供应商的问题。例如,微软的Active Server PagesTM(ASP) 技术使得在Web页面上创建动态内容更容易,但只能在微软IIS和Personal工作 Web Server上。还有其它的解决方案,但都不能让一个普通的页面设计师轻易掌握。例如,像Java一样 Servlets等技术可以使用Java语言编写交互应用程序的服务器端代码变得容易。Java Servlets是一个基于Java技术在服务器端运行的程序(不同于Applet,后者在浏览器端运行)。开发人员可以编写这样的servlet来接收来自web浏览器的HTTP请求,动态生成响应(可能需要查询数据库来完成该请求),然后向浏览器发送包含HTML或XML文档的响应。采用这种方法,整个网页必须在Java 在Servlet中制作。如果开发人员或Web经理想要调整页面显示,他们必须编辑并重新编译Java Servlet,即使在逻辑上已经可以运行了。使用这种方法,生成具有动态内容的页面仍然需要应用程序的开发技能。显然,目前需要的是在行业内创建动态内容页面的解决方案。该方案将解决当前方案的局限性,即基于Web的交互式应用程序JavaServer的过程,可以在任何Web或应用程序服务器上运行,分离应用程序逻辑和页面显示,快速开发和测试简化开发 Pages (JSP)该技术是为了满足这些要求而设计的。JSP规范是Web服务器、应用服务器、交易系统和开发工具供应商之间广泛合作的结果。太阳微系统公司(Sun Microsystems Inc.)对Java编程环境进行整合和平衡(例如,Java Servlet和JavaBeansTM)支持的技术和工具。因此,基于Web应用程序的开发方法为基于组件应用逻辑的页面设计师提供了一种新的功能。JavaSerververweb应用程序开发 太阳微系统公司在开发JSP规范的过程中,Pages技术方法(Sun Microsystems Inc.)与许多主要的Web服务器、应用服务器和开发工具供应商,以及各种经验丰富的开发集团合作。因此,找到了一种平衡应用程序和页面开发人员可移植性和易用性的开发方法。JSP技术在许多方面加速了动态Web页面的开发:JSP技术分离了内容的生成和显示,Web页面开发人员可以使用HTML或XML标志来设计和格式化最终页面。页面上的动态内容是用JSP标识或小脚本生成的(内容是根据要求变化的,比如要求账户信息或者一瓶酒的特定价格)。生成内容的逻辑包装在标识和JavaBeans组件中,并绑定在小脚本中,所有脚本都在服务器端运行。如果核心逻辑包装在logo和beans中,其他人,如web经理和页面设计师,可以在不影响内容生成的情况下编辑和使用JSP页面。在服务器端,JSP引擎解释JSP标识和小脚本,生成要求的内容(例如,使用JDBCTM技术访问数据库或包含文件),并以HTML(或XML)页面的形式将结果发送回浏览器。这有助于作者保护自己的代码,并确保基于HTML的任何Web浏览器的完全可用性。大多数JSP页面强调可重用的组件依赖于可重用的跨平台组件(JavaBeans或Enterprise) JavaBeanstm组件)执行应用程序所需的更复杂的处理。开发人员可以共享和交换执行普通操作的组件,或者将其用于更多的用户或客户组。基于组件的方法加快了整体开发过程,平衡了各组织现有技能和优化结果的开发努力。Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术包装了许多功能,这些功能是在与JSP相关的XMLlogo中生成动态内容所需要的。标准JSP标识可以访问和实例JavaBeans组件,设置或检索组件属性,下载Applet,并执行其他方法更难编码和耗时的功能。JSP技术可以通过开发定制标识库来扩展。未来,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和执行特定功能的组件,如识别。JSP技术很容易整合到各种应用系统结构中,利用现有的工具和技能,并扩展到支持企业级的分布式应用。Java技术家族和Java作为Java技术家族的一部分 JSP技术是企业版系统结构的一个组成部分,可以支持基于Web的高度复杂的应用。因为JSP页面的内置脚本语言是基于Java编程语言的,所有的JSP页面都被编译成Java Servlet,JSP页面具有Java技术的所有优点,包括强大的存储管理和安全性。JSP作为Java平台的一部分,具有Java编程语言“一次编写,到处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用您选择的服务器和工具。更改工具或服务器不会影响当前的应用程序。和Java一起 2平台,企业版(J2EE)Enterprise Javabean技术集成时,JSP页面将提供企业级的可扩展性和性能,这对于在虚拟企业中部署基于Web的应用程序是必要的。JSP页面看起来像什么?JSP页面看起来像标准的HTML和XML页面,并附有JSP引擎可以处理和提取的额外元件。通常,JSP元件创建插入最终页面的文本。使用示例是描述JSP技术的最佳方法。下面的JSP页面很简单;它打印带年、当月的日子,并根据时间使用"Good Morning"和"Good Afternoon"欢迎您。该页面由普通HTML和大量JSP元件组成。对时钟JavaBeans组件的调用包含JSP表达式和脚本(用于作权信息)的外部文件<HTML><%@ page language=="java" imports=="com.wombat.JSP.*" %><H1>Welcome</H1><P>Today is </P><jsp:useBean id=="clock" class=="calendar.jspCalendar" /><UL><LI>Day: <%==clock.getDayOfMonth() %><LI>Year: <%==clock.getYear() %></UL><% if (Calendar.getInstance().get(Calendar.AM_PM) ==== Calendar.AM) { %>Good Morning<% } else { %>Good Afternoon<% } %><%@ include file=="copyright.html" %></HTML>该页面包含以下组件:JSP指示器将信息传输到JSP引擎。在这个例子中,第一行指出了Java编程语言的扩展位置,即将从页面访问。在这个例子中,第一行指出了即将从页面访问的Java编程语言的扩展位置。指示设置在<%@和%>标记中。固定模板数据:所有JSP引擎无法识别的标识将随结果页面发送。通常,这些标志是HTML或XML标志。上述例子包括无序列表(UL)和H1标识。JSP动作或标识:这些语法通常作为标准或定制标识实现,并具有XML标识。这个例子中,jsp:ClockuseBean标识实例化服务器端 JavaBean。表达式:JSP引擎计算<%==和%>标记间的一切。时钟组件在上述列表项中(Clock)Day和Year属性值作为字符串返回,并作为输出插入JSP文件。在上面的例子中,第一个列表项是日子,第二个是年份。小脚本是执行不支持标志的功能或将所有东西捆绑在一起的小脚本。JSP 基于Java语言的1.0软件内置脚本语言。以上示例中的小脚本确定现在是上午还是下午,并相应欢迎用户。这个例子可能有点小,但技术上不是。在业务方面,关键处理可以封装在服务器端的组件中,Web开发人员可以使用熟悉的语法和工具轻松访问这些信息。基于Java的小脚本提供了一种不需要扩展的脚本语言,就可以灵活地执行其它功能。页面作为一个整体是可读和可理解的,这使得更容易找到或预防问题和共享工作。下面对这些组件的一部分进行了更详细的描述。JSP指示JSP页面使用JSP指示向JSP引擎传递指令。它包括:JSP页面指示传递页面相关信息,如缓冲区和线程信息或错误处理。语言指示指定脚本语言和所有扩展。可用于在页面上包含一个外部文档,包括指示(显示在上面的例子中)。一个很好的例子是作权文档或公司信息文档——在一个集中的地方保存文档比在每个JSP页面更新更容易。当然,包含的文件也可能是另一个JSP文件。标识库指示一个可以在页面上调用的客户标识库。JSP标识的绝大多数JSP处理将通过基于XML的JSP相关标识来完成。JSP 1.0包含大量的标准标志,作为核心标志包括:jsp:useBean 该标志声明使用JavaBeans组件实例。若该组件的实例不存在,JavaBeans组件将实例化并注册此标志。jsp:setProperty 该标志在组件的实例中设置了属性值。jsp:getProperty 该标志获得了一个组件的实例的属性值,将其转换为字符串,并将其放入隐含对象中"out"中。jsp:includejsp:forward1.一个版本将包含更多的标准标识。识别的优点是它们很容易在应用程序之间使用和共享。享。基于标识的语法的真正力量来自于客户标识库的开发,使工具供应商或其他人员能够为特定要求创建和分配标识。脚本元件JSP页面可以在页面中包含小脚本,称为小脚本(scriptlets)。小脚本是在请求处理过程中执行的代码片段。小脚本可以与页面中的静态元件组合(就像上面的例子一样),创建动态生成的页面。脚本在<%和%>在标志中描述。脚本描述语言引擎将执行这个标志中的一切,在我们的例子中是主机上的Java虚拟机。JSP规范支持包括表达式和声明在内的所有常用脚本元件。JSP页面的应用模型JSP页面由JSP引擎执行,该引擎安装在Web服务器或使用JSP的应用服务器上。JSP引擎接受客户端对JSP页面的要求,并生成JSP页面对客户端的响应。JSP页面通常被编译成Java Servlet。后者是Java扩展的标准,在wwww.java.sun.com网站有更详细的描述。为了利用Java技术的可扩展性和可移植性,页面开发人员可以访问所有Java应用环境。当JSP页面第一次被调用时,如果它不存在,它将被编译成Java Servlet类,并存储在服务器内存中。这使得下一步对页面的调用做出了非常快的响应。(这避免了CGI-BIN为每个HTTP请求生成新过程的问题,或者在服务器端引用时进行语法分析。)JSP页面可以包含在不同的应用系统结构或模型中。JSP页面可用于由不同协议、组件和格式组成的联合体。下面的小节描述了一些可能的情况。在一个简单的实现中,浏览器直接调用JSP页面,JSP页面生成要求的内容(JDBC可以直接从数据库中获取信息)。JSP页面可以调用JDBC或Java BlendTM组件生成结果,并创建标准HTML作为结果发送回浏览器。该模型基本上使用JSP页面(编译成Java) Servlet)取而代之的是CGI-BIN概念。该方法具有以下优点:简单快速的编程页面作者可以很容易地根据要求和资源状态生成动态内容结构,但不能扩展到大量基于Web的并发客户访问稀有企业资源,因为每个客户必须建立或共享可用内容资源的连接。例如,如果JSP页面访问数据库,可能会对数据库产生大量的连接,这将影响数据库的性能。使用Java Servlet在另一种可能的配置中的灵活应用,基于Web的客户机可以直接对Java进行处理 Servlet要求Servlet生成动态内容,将结果绑定到结果对象中,并调用JSP页面。JSP页面从对象中访问动态内容,并将结果(如HTML)发送回浏览器。该方法创建了更多可重用的组件,可以在应用程序之间共享,并可以作为更大应用程序的一部分完成。但在处理数据库等企业资源的连接时,仍存在扩展性问题。JSP页面也可以作为企业级Javabean(EJB)中间层在系统结构中。在这种情况下,通过EJB组件交互JSP页面和后端资源。EJB组件管理访问后端资源,为许多并发用户提供可扩展的性能。EJB管理交易以及电子商务或其他应用程序的潜在安全性。这将简化JSP页面。这个模型将是Java 2企业版(J2EE)支持平台。JSP页面与XML技术的集成JSP页面可用于生成XML和HTML页面。对于简单的XML生成,开发人员可以包含XML标识和JSP页面的静态模板。对于动态XML生成,使用基于服务器的对象和生成XML输出的客户标识。JSP页面与XML工具并非不兼容。虽然Sun在设计JSP规格时使JSP页面更容易手动操作,但JSP规格也为创建任何JSP页面的XML版本提供了一种机制。这样,XML工具就可以创建和操作JSP页面。JSP页面可以通过将JSP标识和元件转换为与XML兼容的对等物来操作。例如,脚本可以包含在内<%和%>其中,或基于XML标志的<jsp:scriptlet>和</jsp:scriptlet>中。事实上,有可能通过以下简单的步骤将JSP页面转换为XML页面。这些步骤包括:添加一个JSP根元件,将元件和指令转换为XML兼容的对等物,并将其转换为页面上的其他元件(通常非JSP)。通过这种与XML兼容的方法,创建HTML页面的设计师仍然有一个易于快速创建动态Web页面的环境,同时,与JSP页面集成并与JSP兼容的服务器一起工作的基于XML的工具和服务。JSP技术的未来JSP技术被设计成一个开放的、可扩展的标准来建立一个动态的网页。未来JSP技术的JSP技术被设计为一个开放的、可扩展的标准来建立一个动态的Web页面。开发人员可以使用JSP页面创建可移植的Web应用程序,并在不同的Web和应用程序服务器上运行不同的场合,无论使用什么创建工具来满足他们自己的场合和需求。Sun通过与行业领袖的合作,确保JSP标准是开放和可移植的。可使用任何客户机和服务器平台,在任何地方编写和部署。未来,工具供应商和其他制造商将通过为特殊功能提供客户标识库来扩展平台的功能。JSP标准的1.0版本是通向动态Web页面生成的开放工业标准方法的第一步。该方法的基础是通过核心识别集、隐含对象和开始创建动态web页面所需的基本功能。已经有几个Web服务器,应用服务器和开发工具供应商正在为他们的产品增加JSP1.0的支持,这在行业中得到了最初和即时的支持。1999年晚些时候完成的1.1版本将通过更多的XML支持、客户标识和与J2EE的集成来扩展。在JSP规范中,供应商可能有选择地扩展和扩展基本和必要的功能。JSP引擎能够强有力地支持各种脚本语言和对象模型。在扩大和利用JSP技术能力的同时,也向Sun承诺,JSP技术将保持平台和服务器之间固有的可移植性。