JSP介绍
J2EE(Java2企业版)已经承担起了曾经很混乱的建立互联网平台的任务,并使开发者们能够使用Java来高效地创建多层服务器端应用程序。现今,Java企业版的API已经扩展为涵盖了众多领域:用于远程对象处理的RMI和CORBA,用于数据库交互的JDBC,用于访问命名和目录服务的JNDI,用于创建可重用商务组件的企业级JavaBeans(EJB),用于面向消息的中间件的JMS TM(Java Messaging Service,Java消息服务),用于XML处理的JAXP TM,以及用于执行原子性(atomic)事务的JTA TM(Java Transaction API,Java事务API)。另外,J2EE还支持servlets是一种非常流行的用于替代CGI脚本的Java小程序。这些技术的组合使得程序员可以为各种不同的任务创建分布式的商务解决方案。
在1999年末,Sun Microsystems公司向企业级Java工具集中加入了一个新的元素:Java Server Pages(JSP,Java服务器页面)。JSP建立在Java servlet之上,它的设计目的是使程序员乃至非程序员都能高效地创建Web内容。
什么是JSP?
简明扼要地说,JSP是一种用来开发含有动态内容网页的技术。纯HTML页面只包含静态的内容,它的内容通常保持不变,而JSP页面则不同,它可以根据任意数量的变量来改变自己的内容,这些变量包括用户的身份信息,用户使用的浏览器类型,用户提供的信息,以及用户所做的选择等。
JSP页面就和常规的网页一样,包含标准的标记语言元素,例如HTML的标签。然而,JSP页面还包含特殊的JSP元素,这些元素使得服务器可以把动态内容插入到网页中。JSP 元素的用途非常广泛,例如从数据库取得信息,或记录用户的个性信息。当用户请求一个JSP页面时,服务器先执行JSP元素,并把结果同网页的静态部分相结合,然后把动态合成后的页面送回到浏览器。
JSP定义了许多用于Web应用程序的有用的标准元素,例如访问JavaBeans组件的元素,在页面间传递控制权的元素,以及在请求,页面和用户间共享信息的元素。程序员也可以通过使用应用程序的专用元素来扩展JSP语法,从而完成像访问数据库和EJB,发送,生成表示应用程序专用数据的HTML这样的任务,与JSP规范相关的规范(JSTL规范)定义了一组这种常用的自定义元素。标准元素和自定义元素的组合确保了可以开发出强大的Web 应用程序。
为什么要使用JSP?
在Web发展的早期,CGI(Common Gateway Interface,公共网关接口)是开发动态Web 内容的唯一工具,然而,CGI并非一种高效率的解决方案。对每一个传来的请求,Web服务器都必须创建一个新的操作系统进程,载入一个解释器和一个脚本,接着执行这个脚本,然后再把这些全部释放掉。这使得服务器承受着繁重的负担,而且当通信量增加时性能会变得很低。
过去几年里,出现了许多CGI的替代品和增强版,例如FastCGI,Apache的mod_perl,Netscape的NS
API,Microsoft的ISPAI和Sun Microsystems的Java servlet。虽然这些解决方案能提供更高的性能和可缩放性,但是所有这些技术都面临着同一个问题:它们都是通过把HTML代码直接嵌入到程序语言代码中来生成网页。这使得动态网页的创建成为程序员所独立的领域。然而,JSP改变了这一切。
在HTML页面中嵌入动态元素
JSP从一个角度来处理这个问题。JSP允许将特殊的活性元素嵌入到HTML页面中,而不是将HTML语言嵌入到编程代码中。这些元素看起来与HTML元素类似,但它们实际上是组件化的Java程序,当用户请求页面时,服务器便会执行该程序。下面这个简单的JSP页面解释了这一点:
<% taglib prefix=”c” url=”java.sun/jstl/core”%>
<Html>
<body bgcolor=”white”>
<jsp: usebean id=”clock” class=”java.util.Date” />
<C: choose>
<c: when teat=”s {clock.hours<12}”>
<h1>Good morning! </h1>
</c: when>
<c: when test=”s {clock.hours < 18}”>
<h1>Good day! </h1>
</c: when>
<c: otherwise>
<h1>Good evening! </h1>
</c: otherwise>
</c: choose>
Welcome to our site, open 24 hours a day.
</body>
</html>
这个页面根据当天的时间向用户发去了不同的消息:如果当地时间是在中午12:00之前,则发送“Good morning!”;如果是在中午12:00到晚6:00之间,则发送“Good day!”;如果是在晚6:00之后,则发送“Good evening!”。当用户请求这个页面时,支持JSP的Web服务器就会执行由黑体的Java元素所代表的逻辑判断,并创建一个HTML页面,把它发送回用户的浏览器。例如,如果现在的时间是晚上8:53,那么从服务器发回到浏览器的结果页面就会是这个样子:
<Html>
<body bgcolor=”white”>
<h1>Good evening! </h1>
Welcome to our site, open 24 hours a day.
</body>
</html>
除了与HTML类似的JSP元素外,JSP页面还可以包含嵌入在所谓“脚本元素(scripting element)”中的Java代码。从JSP规范的第一个版本开始,这种功能已经是其中的一部分了,而且它对于简单的条件逻辑来说也非常方便。但是,随着新的JSP Standard Tag Library (JSTL)的引入,Java代码在页面中其实很少用到。此外,在Web页面中嵌入过多的代码就像在服务器端程序中使用HTML元素一样,通常会使Web应用程序难以维护和调试。
人尽其用
正如前面所述,JSP可以把HTML这样的标记语言代码和用来处理用户输入、访问数据库以及执行其他应用任务的编程语言代码分离开来。这种分离任务的一种表现方式就是JSP 标准和自定义元素的使用;这些元素是用编程代码来实现的,在使用方式上,它们与通常网
页中用到的页面标记元素相同。
另一种分离方式是将JSP与其他J2EE技术组合起来。例如,Java servlet可以处理用户输入,Enterprise JavaBeans(EJB)可以控制应用程序逻辑,JSP页面则可以提供用户界面。
这种分离意味着,企业使用JSP就可以按员工各自擅长的专业技术把他们分成两组:一支JSP Web开发队伍,其中一部分程序员将应用程序所需要的逻辑实现为servlet,EJB和自定义的JSP元素,另一部分是网页设计师,他们对界面了然于胸,并在无需做任何编程工作的情况下使用强大的自定义元素。
与企业级Java API集成
网页设计html代码翻译最后,因为JSP是建立在Java Servlets API之上的,所以JSP可以使用所有强大的企业级Java API,其中包括:
●JDBC
●RMI(Romote Method Invocation,远程方法调用)和OMG CORBA支持
●JNDI(Java Naming and Directory Interface,Java命名和目录接口)
●EJB(Enterprise JavaBeans)
●JMS(Java McssageService,Java消息服务)
●JTA(Java Transaction AP,Java事务API)
●JAXP(Java API for XML Processing)
●JavaMail
这意味着可以轻易地把JSP和已有的Java企业级解决方案集成起来。
Java servlet模板引擎
Java servlet模板引擎是另一种把外观呈现过程和处理过程分开的技术。当servlet 得到普遍使用时,开发者们很快就意思到,将HTML代码直接嵌入到servlet的Java代码中后,增加了对外观呈现部分的维护难度。因此,许多称为模板引擎(template engine)的开源工具被开发出来,题目可用于从servlet中把HTML提取出来。
这些模板引擎用来和纯代码组件(servlet)协同工作,而且只使用包含脚本语言的Web页面,专用于外观呈现部分。请求被发送给某个servlet,由该servlet进行处理,然后创建表示处理结果的对象,并调用一个网页模板来生成HTML代码,最后将HTML代码返回给浏览器。模板包括与前面所讲述的替代方案近似的脚本代码。然而,这些引擎所使用的脚本语言在功能上跟弱一些,因为脚本仅仅用来读入数据对象和生成HTML代码,以显示对象的值。所有其他的产品和技术支持通用语言,这些语言(不论好坏)可以用于在页面中包括商务逻辑。
JSP的优点
下面是上述替代方案中的一些最重要的特性:
●JSP同时支持脚本产生的动态内容和基于元素的动态内容,并且允许程序员们开发自定
义的标记库,来满足应用程序特定的需要。
●JSP页面可以进行预编译,从而提高了服务器处理的效率。
●JSP页面可以与主管商务逻辑的servlet组合起来使用,Java servlet模板引擎支持这
种模型。
另外,JSP还有许多独有的优点,使得它出类拔萃:
●JSP是一种规范,而不是一个产品。这意味着厂商们可以用各种不同的实现方式相互竞
争,从而使性能和质量不断提高。这还带来了一种不太明显的好处,也就是当许多公司在技术上投入时间和金钱之时,有可能要很长时间才会有成果,而JSP作为规范则能适当四保证新版本与以前的版本想兼容;而如果是私有技术,则通常不是这样。
JSP是J2EE的必备部分,而J2EE是用于企业级应用程序的完整平台。这意味着JSP同时适用于最简单的应用程序和最复杂、最苛刻的应用程序
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论