创建Web应用的技术发展过程.doc_第1页
创建Web应用的技术发展过程.doc_第2页
创建Web应用的技术发展过程.doc_第3页
创建Web应用的技术发展过程.doc_第4页
创建Web应用的技术发展过程.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

111第第 章章导读初识JSP: Web应用开发介绍: CGI、Servlet创建动态页面: JSP概述: JSP与ASP、PHP类似技术比较: JSP的优点JSP是Java Server Pages的缩写,是由Sun Microsystems公司倡导,许多公司参与一起建立的一种动态网页技术标准,用于辅助对Web请求的处理。JSP是建立在Java Servlets模型之上的表达层技术,允许将静态HTML内容与服务器端脚本混合起来生成动态输出。在每天浏览的网站中,可能就有很多是使用JSP对数据进行格式化和显示的。JSP基于Java技术,由类似于HTML的标记、JSP标记(tag)和Java代码片组成,可用来创建跨平台和跨Web服务器的动态网站。本章将让读者初步认识JSP,了解基于Java的服务器逻辑处理请求的发展过程、什么是JSP及其与Servlet的关系,并阐述JSP与ASP、PHP等类似技术的比较,JSP的优势等。1.1 创建Web应用的技术发展过程在讲解本章内容之前,先了解一下使用一个浏览器去访问一个网站时,后台所会发生的情况及网站是如何实现请求和响应的。图1.1给读者展示了一个浏览器访问一个Web服务器的整个过程。(1)用户在浏览器上(这里以Microsoft Internet Explorer浏览为例)输入网站的URL地址,这个地址告诉浏览器要和网络中的哪台主机进行联系。一般输入的是主机的域名(例如),域名唯一对应一个IP地址,一个IP地址又唯一识别一台联网的主机。(2)浏览器寻找到指定的主机之后,向Web服务器发出请求。(3)Web服务器接收到请求并作出相应的分析,然后从存储器中获取一个采用HTML编码的Web页面。Web服务器一般和HTML文件放置在同一个主机上。(4)服务器把取出的Web页面返回给发出请求的浏览器作为响应。(5)浏览器接收到相应的Web页面之后,在显示屏上向用户显示这个页面。图1.1 浏览器访问Web过程浏览器与Web服务器之间是通过因特网进行会话的,而这种会话是要通过一种称为HTTP(Hypertext Transfer Protocol,超文本传输协议)的标准网络协议完成的。HTTP是一个请求/响应协议。在这个协议的基础上,Web服务器才能和浏览器通过Web交换数据。HTTP又是建立在TCP/IP协议基础之上的,而TCP/IP则是将因特网中所有计算机连接起来的一个协议组。这里并不需要读者对HTTP协议以及TCP/IP知识有太多的了解,但要求读者对浏览器发出请求以及服务器如何发出响应的机制和原理有一定的了解,这会对读者了解JSP有所帮助。1.1.1 传统Web服务器模式的不足传统的Web应用只提供有限的静态Web页面,每个Web页面的内容是保持不变的。如果网站需要提供更多的信息,就只能重新编写HTML页面并提供链接。传统Web服务器模式存在如下不足:q 不能提供及时的信息。q 当需要添加新的信息时,必须重新编写HTML文件。q 由于HTML页面是静态的,并不能根据用户的需求提供不同的信息(包括显示格式和内容),不能满足多样性的需求。正因为静态页面存在着这么多的不足,因特网软件工程人员很快就转向了CGI(Cammon Geteway Interface,公共网关接口),希望CGI能提供动态生成功能。1.1.2 CGI实现动态生成HTMLCGI是实现在服务器端执行程序的一种方法。运行程序输出的是HTML页面,然后Web服务器再把这个静态页面返回给浏览器作为请求的响应。这样的模式实现了动态生成页面的效果。具体的CGI操作方式如图1.2所示。图1.2 CGI的操作过程和图1.1所示的过程一样,用户需要在浏览器中输入URL地址(其实更多情况是用户单击HTML页面上的一个超链接),例如/jsp/createhtml.cgi,这个URL地址告诉浏览器要去和网络上域名为(对应着一个唯一的IP地址)的主机联系。和服务器取得联系之后,Web服务器会根据给出的jsp/createhtml.cgi地址来运行相应的createhtml.cgi程序,并把生成的HTML页面输出给Web服务器。Web服务器再使用HTTP协议把生成的HTML页面返回给浏览器作为响应。注意:CGI程序在服务器端执行,并可以和Web服务器在同一个主机上。最流行的CGI语言是Perl和shell脚本,但是也可以使用C、C+以及Java等语言进行编写。CGI可以访问存储数据库中的数据或者其他系统中的文件,实现动态生成的效果。虽然CGI实现了网站动态性,但是CGI也存在很多的不足之处。如下:q 需要为每个请求启动一个操作CGI程序的系统进程。如果请求非常频繁,这会带来很大的开销。q 需要为每个请求加载和运行一个CGI程序,这也将带来很大的开销。q 需要重复编写处理网络协议的代码及进行编码,这些工作都是非常耗时的。前面已经介绍过了Java语言可以用来编写CGI程序。但遗憾的是,使用Java编写的CGI程序执行效率更加低下。这是因为要执行一个Java编写的CGI程序,除了首先需要启动一个系统进程之外,还要在进程中启动一个JVM(Java Virtual Machine,Java虚拟机),然后才能在JVM中执行Java CGI程序(读者应该对Java程序的运行机制有所了解)。为了解决CGI所留下来的问题,产生了Servlet。在1.1.3小节将重点介绍Servlet的基本原理。1.1.3 Servlet改进的CGI由前面的介绍可以知道,使用Java编写的CGI程序正是由于需要为每个请求都要启动一个系统进程及JVM,这大大降低了执行效率。如果能有办法取消这些开销,即只需要启动一个操作系统进程及一个JVM映像,基于Java的CGI就能得到很好的改善。Servlet正是基于这样的想法才产生的。另外,可知Java可以在运行的时候动态地进行加载,所以可以利用这样的功能加载新的Java代码来处理新的请求。这样就可以只启动一次服务器进程,而且只需要加载一次JVM,之后这个JVM再加载另外的类。基于这样的思想而出现的Servlet执行效率就高得多了。和传统的CGI程序相比,Servlet有如下几个优点:q 只需要启动一个操作系统进程以及加载一个JVM,大大降低了系统的开销。q 如果多个请求需要做同样处理的时候,这时只需要加载一个类,这也大大降低了开销。q 所有动态加载的类可以实现对网络协议及请求解码的代码共享,大大降低了工作量。q Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。Sun公司在20世纪90年代末就发布了基于Servlet的Web服务器。为了确保加载的各个类之间不起冲突,已经建立了一个称为Java Servlet API(应用编程接口)的编码标准。现在基本上所有的服务器都遵循这个编码标准,所以Servlet有很好的移植性。现在的Web服务器(例如Tomcat)已经集成了Servlet容器。Servlet容器负责管理加载、卸载、重新加载和执行Servlet代码等操作。下面是一个比较典型的Servlet Java源代码:public class HelloWorldTest extends HttpServlet public void doTest(HttpServletRequest request,HttpServletResponse reponse) throws IOException,ServletException String msg = 登录成功; response.setContentType(text/html); PrintWriter out = response.getWriter(); out.println(); out.println(); out.println(JSP 2.0 Test); out.println(); out.println(); out.println(msg); out.println(); out.println(); 从这段代码可以看到Servlet重复使用了PrintWriter.println()方法来输出相应的HTML页面,以达到动态生成HTML页面的效果。虽然Servlet改变了传统CGI程序的缺点,但是它也有不足的地方:Servlet可以建立动态生成的网页,网页中可以包含从服务器端的Java对象所获得的数据。但是Servlet生成网页的方法是在Java类中嵌入HTML标签和表达式。也就是说对HTML做一个小小的改动时,都需要修改和重新编译Servlet源文件,然后重新部署到Servlet容器当中。当设计HTML页面和编写Servlet代码的不是同一个人时,就会使得修改Servlet变得非常麻烦。JSP的引入就是要解决以上Servlet所存在的问题。在1.2节将重点介绍JSP。1.2 JSP简介Java Server Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码技术,它是Servlet API的一个扩展。由于JSP页面在编译成Servlet之前也是可以使用的,所以它具有Servlet的所有优点,包括访问Java API。又由于JSP是嵌入到Servlet中关于应用程序的一般表达代码,所以可以把它看成一种“彻底”的Servlet。访问一个JSP网站的过程如图1.3所示。图1.3 JSP页面访问示意图Web容器必须包含JSP引擎,它负责动态地对JSP文件进行检测和编译。1.2.1 JSP的优点JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器、应用服务器、浏览器和开发工具很好地共同工作。JSP网页可以非常容易地与静态模板结合,包括HTML或XML片段,以及生成动态内容的代码。它比以上讲的Servlet要更加优越。具体而言,JSP有以下几个优点:q JSP提供一种模块机制,可以在HTML页面中嵌入基于Java的逻辑代码。q 使用JSP时,再也没有必要编写和编译用Java语言写的任何代码。而且对JSP进行修改会很快看到效果,这是因为JSP容器(或者称JSP引擎)会自动检测和重新编译JSP。q JSP的使用大大缩短了服务器端基于Java的CGI开发周期,实现了快速开发的目的。q 由于JSP标记是内嵌在HTML页面中的,所以完全可以先让Web页面设计者来设计页面模板。然后再让Java程序员处理所用的标记以及实现必要的逻辑功能,从而实现图形和布局设计工作与应用开发任务的分离(后面介绍的MVC设计更能体现这一点)。许多由CGI程序生成的页面大部分仍旧是静态HTML,动态内容只在页面中有限的几个部分出现。但是包括Servlet在内的大多数CGI技术及其变种总是通过程序生成整个页面。JSP使得我们可以分别创建这两个部分。例如,下面就是一个简单的JSP页面:欢迎访问网上商店欢迎欢迎,要设置账号信息,请点击这里页面的其余内容程序说明:程序中除了之间的代码之外都是读者比较熟悉的HTML页面。这种HTML代码和脚本程序的很好结合使得动态网站的开发变得非常容易。1.2.2 JSP与ASP和PHP的比较当今创建动态网站的技术不仅有JSP,还有ASP和PHP等。下面是JSP和其他类似或相关技术的一个简单比较。1JSP和ASP(Active Server Pages)的简单比较ASP也是一种Web服务器端开发的技术,利用它可以产生和执行动态的、互动的以及高性能的Web应用程序。(1)相似点ASP是由Microsoft公司发布的。JSP与ASP技术非常相似,它们都提供了在HTML代码中嵌入某种程序代码,并由服务器提供的引擎来解释和执行这些程序。在ASP和JSP文件中,HTML部分都是主要负责规定信息的显示样式,而嵌入的程序代码则用来实现逻辑和控制操作。普通的HTML页面只依赖于Web服务器(例如Apache、Microsoft IIS以及Sun Java System Web Server等服务器),而ASP和JSP都需要有相应的语言引擎来分析和执行嵌入的程序代码。程序代码被引擎执行完之后会重新嵌入到HTML代码中去,然后一起由服务器反馈给相应的浏览器作为响应。ASP和JSP都属于面向Web服务器的技术,它们都是在服务器端执行,而客户端浏览器不需要再安装任何附加软件。(2)区别点首先,ASP使用的编程语言是VBScript之类的脚本语言,JSP则是Java,这是两者最明显的区别。此外,它们之间还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释并执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生,后期请求将直接调用编译好的文件。(3)JSP的优势JSP和ASP相比具有两方面的优势:第一,动态部分用Java编写,而不是VBScript或其他Microsoft语言,不仅功能更强大而且更易于使用;第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。2JSP与PHP(Hypertext Preprocessor)的简单比较PHP是一种跨平台的服务器端的嵌入式脚本语言。它融合了C、Java以及Perl语言的语法,并结合自身的特点,可以使得Web开发者快速地编写出动态的页面。PHP还有一个优点就是它完全是免费的,可以从网站上自由下载,并可以获取源代码。(1)相似点同样,普通的HTML页面只依赖于Web服务器,而PHP页面需要有附加的PHP语言引擎来分析和执行相应的程序代码。执行结果再重新嵌入到HTML代码中去,一起由服务器通过HTTP协议反馈给相应的浏览器。另外,PHP和JSP的可移植性非常好,基本可以执行于所有的平台。(2)区别点JSP在循环语句的执行以及数据库的访问速度上都要比PHP(甚至ASP)高得多。另外,由于PHP诞生于开源,它得到了迅速普及,但是当JSP出现之后,这种情况就变化了。这是因为PHP只适合小型站点的开发和使用,而不适于大型的电子商务的站点开发。这是由于PHP缺乏规模支持,并且缺乏多层结构的支持。对于大负荷的网站,只能使用分布式计算来解决问题。而JSP不同,它得到了J2EE框架的支持,可以为JSP开发很多的JavaBean,更复杂的系统可以得到EJB的支持。(3)JSP的优势JSP很好地实现了多层结构,特别是得到J2EE的支持,如今在MVC模式中,JSP基本上只担任了View的工作,控制View的工作封装到了Servlet中。JSP很适合开发大型的电子商务网站,而且在安全、可维护以及可扩展性上得到了很高的保障。1.2.3 为什么选择JSP或许读者看完了1.2.2小节之后,就已经对这个问题有了答案。网站开发最重要的就是开发出来的网站要有很高的稳定性、安全性及可扩展性和维护性,而且使用的工具要尽量简单易用。正是为了兼顾以上两点,JSP提供了大量服务器端的标签(Tag)。这样可以使Web开发者(特别是那些并不懂得Java编程的HTML设计者)没有必要编写Java代码就可以完成很多动态内容的操作。而高级脚本编写者或者Java程序员也可以使用这些标签来实现动态效果。除了JSP提供的大量标签之外,它还是依赖“组件为中心”的网页开发技术。所谓“组件为中心”就是尽量把逻辑操作以及数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论