Java Web整合开发王者归来_第1页
Java Web整合开发王者归来_第2页
Java Web整合开发王者归来_第3页
Java Web整合开发王者归来_第4页
Java Web整合开发王者归来_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 Java Web开发概述在计算机发展历史上,网络的出现是个重要的里程碑。网络在计算机技术中发挥着越来越重要的作用。如果说上个世纪是桌面程序的时代,那么本世纪无疑就是网络程序的 时代。1.1 Web相关概念Web程序也就是一般所说的网站,由服务器、客户端浏览器以及网络组成。Web程序的好处是使用简单,不需要安装、学习,有一台电脑、一根网线就可以使用。截至2006年底,互联网上的网站数量已经超过了1亿大关,中国的网站也已经有200万之多了,可见网络程序的影响力。但Web程序又不是一般意义上的网站。网站的目的是提供信息服务,重在内容,程序往往比较简单。但一个商用的Web程序往往比较复杂,背后

2、结合数据库等技术,例如ERP系统、CRM系统、财务系统、网上办公、网上银行、在线业务办理等。下面从专业上解释一下Web程序相关的几个概念。1.1.1 胖客户端程序RCP桌面程序(Desktop Program)也叫胖客户端程序(Rich Client Program,简称RCP)。因为桌面程序需要安装到计算机上才能运行,并会导致计算机软件的体积越来越大,因此人们形象地称桌面程序为胖客户端程序。计算机上安装的任何程序都是RCP。例如办公软件Word、Excel,聊天工具QQ、MSN,播放软件Media Player、Flash Player、图像制作软件PhotoShop等。RCP的优点很明显,

3、只要安装上了软件,就能高效地使用软件的功能。RCP的缺点也很明显,就是需要安装才能使用,并且会占用大量的硬盘资源。如果某个公司的1000台电脑都要使用Word功能,那么这1000台电脑都要安装Word。1.1.2 瘦客户端程序TCP与胖客户端程序相对的是瘦客户端程序。瘦客户端程序(Thin Client Program,简称TCP)一般表现为Web程序,它的特点是不需要在客户端安装便能使用,只要计算机能上网就行。瘦客户端程序将软件功能的重点集中放到了服务器上,服务器端只需要提供服务。目前流行的概念“软件即服务”SAAS(Software-as-a-service),就是一种非常流行的瘦客户端应

4、用。它是通过Internet提供软件的模式,用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护、升级。目前,越来越多的Web 2.0概念的应用也都是瘦客户端的应用,随着技术的不断进步,瘦客户端程序的体验也越来越丰富。Google已经提供了许多功能强大的Web程序,例如在线Word、Excel、PDF等功能,用于取代桌面程序。相信在不久的将来,会有越来越多的TCP应用的出现。1.1.3 B/S与C/S结构按照是否需要访问网络,程序可分为网络程序与非网络程序。其中网络程序又可分为B/S结构与C/S结构。C/S是指客户端(Client)/服务器(Serv

5、er)模式。这种模式的客户端中需要安装一个RCP程序。RCP程序负责与服务器进行数据交换。一般的网络程序都是C/S结构,例如QQ、MSN、PP Live、迅雷等、eMule等。以往基于客户、服务器的C/S结构应用程序存在很多缺点,它需要安装客户端程序。当应用程序升级时,客户端同样需要下载升级程序才能使用新的功能。这样无形中会给客户端带来一定的麻烦,限制了该应用程序的广泛使用。当今更多的下载软件、即时通信软件等都是C/S结构的应用程序。B/S是指浏览器(Browser)/服务器(Server)模式。一般的网站都是B/S结构的,例如Google、Baidu。Web应用程序的访问不需要安装客户端程序

6、,可以通过任一款浏览器(例如IE或者Firefox)来访问各类Web应用程序。当Web应用程序进行升级时,并不需要在客户端做任何更改。和C/S结构的应用程序相比,Web应用程序可以在网络上更加广泛地进行传播和使用。1.2 Web开发背景知识在了解如何开发Web应用程序之前,很有必要首先了解一下这些应用程序的运行平台和环境。下面就重点介绍Web应用程序所涉及的Web开发的背景相关知识,包括基本访问原理,HTTP协议,Web浏览器以及Web服务器。1.2.1 Web访问基本原理下面我们回想一下平时浏览网页的过程中,浏览器和服务器端都发生了什么变化,网站是怎么实现请求和响应功能的。图1.1清晰地显示

7、了浏览器访问Web服务器的整个过程。(1)用户打开浏览器(如IE、Firefox等),输入网站的URL地址,也就是通常所说的网址。这个地址告诉浏览器要访问互联网中的哪台主机。图1.1 浏览器访问Web过程(2)浏览器寻找到指定的主机之后,向Web服务器发出请求(request)。(3)Web服务器接受请求并做出相应的处理,生成处理结果,大多数生成HTML格式,也有其他响应的格式。(4)服务器把响应的结果返回发送给浏览器。(5)浏览器接收到对应的响应结果后,在浏览器中显示响应结果,比如Web页面。1.2.2 HTTP超文本传输协议了解了浏览器与Web服务器之间的交互关系之后,再来认识一下负责浏览

8、器与Web服务器之间交互的桥梁:HTTP超文本传输协议。HTTP协议是浏览器和服务器之间的应用层通信协议,它是基于TCP/IP之上的协议,不仅保证正确传输超文本文档,还确定传输文档中的哪一部分,以及哪一部分内容首先显示(如文本先与图形)等。在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口(WWW的默认端口)监听,等待连接的出现。下面介绍基于HTTP协议的客户/服务器模式的信息交换过程,它分4个过程:建立连接、发送请求信息、发送响应信息、关闭连接。q 建立连接:连接的建立是通过

9、申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。q 发送请求:打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。HTTP/1.0请求消息的格式为:请求消息=请求行(通用信息|请求头|实体头) CRLF实体内容请求行=方法请求URLHTTP版本号CRLF方法=GET|HEAD|POST|扩展方法URL=协议名称+宿主名+目录与文件名请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POSTq 发送响应:服务器在处理完客户的请求之后,要

10、向客户机发送响应消息。HTTP/1.0的响应消息格式如下:响应消息=状态行(通用信息头|响应头|实体头)CRLF实体内容状 态 行=HTTP版本号状态码原因叙述状态码表示响应类型1:保留;2:表示请求成功地接收;3:完成请求客户需进一步细化请求;4:客户错误;5:服务器错误。响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。q 关闭连接:客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。%提示:网络连接是比较底层的技术,各种Web开发技术已经对细节进行了封装,开发者只需要了解即可。1.2.3 Web浏览器目前,有很多Web浏览器,但是比较普及和流行的为

11、Microsoft公司的Internet Explorer(IE)和Mozilla基金会的Firefox浏览器。这两个浏览器都能很好地支持最新、最好的HTML表示标准,以及各种HTML扩展功能。另外,它们也都能支持JavaScript脚本语言以及类似Applet的Java小程序运行。其他的浏览器还有傲游浏览器(Maxthon)、腾讯TT浏览器、Opera,以及Google最新推出的谷歌浏览器(Chrome)等。1.2.4 Web服务器在服务器端,与通信相关的处理都是由服务器软件负责,这些服务器软件都由第三方的软件厂商提供,开发人员只需要把功能代码部署在Web服务器中,客户端就可以通过浏览器访问

12、到这些功能代码,从而实现向客户提供的服务,下面简单介绍常用的服务器。q IIS是微软提供的一种Web服务器,提供对ASP语言的良好支持,通过插件的安装,也可以提供对PHP语言的支持。q Apache服务器是由Apache基金组织提供的一种Web服务器,其特长是处理静态页面,对于静态页面的处理效率非常高。q Tomcat也是Apache基金组织提供的一种Web服务器,提供对JSP和Servlet的支持,通过插件的安装,同样可以提供对PHP语言的支持,但是Tomcat只是一个轻量级的Java Web容器,像EJB这样的服务在Tomcat中是不能运行的。q JBoss是一个开源的重量级的Java W

13、eb服务器,在JBoss中,提供对J2EE各种规范的良好支持,而且JBoss通过了Sun公司的J2EE认证,是Sun公司认可的J2EE容器。q 另外J2EE的服务器还有BEA的Weblogic和IBM的WebSphere等,适合大型的商业应用。这些产品的性能都是非常优秀的,可以提供对J2EE的良好支持。用户可以根据自己的需要选择合适的服务器产品。1.3 Web开发技术发展历史在了解了Web应用程序的基本背景知识之后,下面将重点介绍Web应用程序的开发方法和过程,了解开发Web应用程序的各类技术,以及这些技术的发展过程和优缺点。1.3.1 传统的Web服务器模式开发传统的Web应用开发仅仅能够提

14、供有限的静态Web页面(HTML静态页面),每个Web页面的显示内容是保持不变的。这种模式开发的Web应用很不利于系统的扩展,如果网站需要提供更多新的信息资料时,就只能修改以前的页面或者重新编写HTML页面并提供链接。而且Web网站的信息更新周期一般都比较长(因为需要重新编写代码)。总结起来,传统Web应用开发模式存在如下多个不足:q 不能提供及时信息,页面上提供的都是静态不变的信息。q 当需要添加新的信息时,必须重新编写HTML文件。q 由于HTML页面是静态的,所以并不能根据用户的需求提供不同的信息(包括不同的内容和格式),并不能满足多样性的需求。静态页面的应用程序存在着这么多的缺点,决定

15、了这种模式必然不能适应大中型系统和商业需求。因此,很快因特网软件工程师转向了CGI(Common Gateway Interface,公共网关接口),系统能够提供页面的动态生成。1.3.2 动态展现页面技术当发布全部为静态页面的Web应用程序(即传统Web服务器模式开发)时,随着企业业务的增多,HTML页面程序会越来越多,非常不利于后期代码的维护,而且新信息发布过程非常麻烦。所以建立一个动态Web应用程序就显得非常重要。一方面可以根据访问者的不同请求返回不同的访问信息,即满足服务的多样性;另一方面,可以直接通过后台管理页面发布和修改信息即可,再也不需要修改页面程序或者添加更多页面程序。动态We

16、b应用程序的建立,可以给客户提供及时信息以及多样化服务,可以根据客户不同请求,动态地返回不同需求信息。下面将一一介绍创建动态页面的方法和技术。1.3.3 CGI实现页面的动态生成实现动态输出的CGI程序是运行在服务器端的,根据不同客户端请求输出相应的HTML页面,然后Web服务器再把这个静态页面返回给浏览器作为客户端的响应。具体的CGI操作流程如图1.2所示。首先用户需要在浏览器地址栏输入URL地址或者单击链接来调用相应的CGI程序,例如图1.2 CGI的操作过程%注意:CGI程序在服务器端执行,并可以和Web服务器在同一个主机上。最流行的CGI语言是Perl和shell脚本,但是也可以使用C

17、、C+以及Java等语言进行编写。CGI可以访问存储数据库中的数据或者其他系统中的文件,实现动态生成的效果。虽然CGI实现了网站动态性,但是CGI也存在很多的不足之处:q 需要为每个请求启动一个操作CGI程序的系统进程。如果请求非常频繁,这将会带来很大的开销。q 需要为每个请求加载和运行一个CGI程序,这也将带来很大的开销。q 需要重复编写处理网络协议的代码以及进行编码,这些工作都是非常耗时的。前面已经介绍过了Java语言可以用来编写CGI程序。但遗憾的是,使用Java编写的CGI程序执行效率更加低下。这是因为要执行一个Java编写的CGI程序,除了首先需要启动一个系统进程之外,还要在进程中启

18、动一个JVM(Java Virtual Machine,Java虚拟机),然后才能在JVM中执行Java CGI程序(读者应该对Java程序的运行机制有所了解)。为了解决CGI所留下来的问题,Java推出了Servlet规范。在节将重点向读者介绍Servlet的基本原理。1.3.4 Java Servlet:改进的CGI由前面讨论知道,使用Java编写的CGI程序需要为每个请求都启动一个系统进程以及JVM,这大大降低了执行效率。如果能有办法取消这些开销,即只需要启动一个操作系统进程以及一个JVM映像,基于Java的CGI就能得到很好的改善。Servlet正是基于这样的想法才产生的。另外,可知J

19、ava可以在运行的时候动态地进行加载,所以可以利用这样的功能加载新的Java代码来处理新的请求。这样就可以只启动一次服务器进程,而且只需要加载一次JVM,之后这个JVM再加载另外的类。基于这样的思想而出现的Servlet执行效率就高得多了。和传统的CGI程序相比,Servlet有如下几个 优点:q 只需要启动一个操作系统进程以及加载一个JVM,大大降低了系统的开销。q 如果多个请求需要做同样处理的时候,这时只需要加载一个类,这也大大降低了开销。q 所有动态加载的类可以实现对网络协议以及请求解码的代码共享,大大降低了工 作量。q Servlet能够直接和Web服务器交互,而普通的CGI程序不能。

20、Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。Sun公司在上世纪90年代末就发布了基于Servlet的Web服务器。为了确保加载的各个类之间不起冲突,已经建立了一个称为Java Servlet API(应用编程接口)的编码标准。现在基本上所有的服务器都遵循这个编码标准,所以Servlet有很好的移植性。现在的Web服务器(例如Tomcat)已经集成了Servlet容器,Servlet容器负责管理加载、卸载、重新加载和执行Servlet代码等操作。看下面一个比较典型的Servlet Java源代码:public class HelloWorldTest ext

21、ends HttpServlet public void doTest(HttpServletRequest request,HttpServletResponse reponse) throws IOException,ServletException String msg = "登录成功"/ 页面内容 response.setContentType("text/html");/ 设置ContentType类型 PrintWriter out = response.getWriter();/ 使用out向浏览器输出 out.println("

22、<html>"); out.println("<head>"); out.println("<title>JSP 2.0 Test</title>"); out.println("</head>"); out.println("<body>"); out.println(msg); out.println("</body>"); out.println("</html>"

23、);从这段代码可以看出,Servlet重复使用了PrintWriter.println()方法来输出相应的HTML页面,以达到动态生成HTML页面的效果。虽然Servlet改变了传统CGI程序的缺点,但是它也有不足的地方:Servlet可以建立动态生成的网页,而网页中可以包含从服务器端的Java对象所获得的数据。但是Servlet生成网页的方法是在Java类中嵌入HTML标签和表达式。也就是说对HTML做一个小小的改动时,都需要修改和重新编译Servlet源文件,然后重新部署到Servlet容器中。或许设计HTML页面和编写Servlet代码的人不是同一个人,这就使得修改Servlet变得非常

24、 麻烦。1.3.5 JSP:Servlet的模板Java Server Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,它是Servlet API的一个扩展。由于JSP页面在编译成Servlet之前也是可以使用的,所以它具有了Servlet的所有优点,包括访问Java API。又由于JSP是嵌入到Servlet中关于应用程序的一般表达代码,所以可以把它看成一种“彻底”的Servlet。访问一个JSP网站的过程如图1.3所示。图1.3 JSP页面访问示意图JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器、应用服务器、浏览器和开发工具很好地共同工作。JSP网页可以非常容易地与静态模板结合,包括HTML或XML(Extensible Markup Language,简称XML)片段,以及生成动态内容的代

温馨提示

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

评论

0/150

提交评论