1、Web相关概念
Web程序也就是一般所说的网站,由服务器、客户端浏览器以及网络组成。Web程序的好处是使用简单,不需要安装、学习,有一台电脑、一根网线就可以使用。Web程序不是一般意义上的网站。网站的目的是提供信息服务,重在内容,程序往往比较简单。但一个Web程序往往比较复杂,背后结合数据库等技术。
按照是否需要访问网络,程序可分为网络程序和非网络程序。其中网络程序又分为B/S和C/S结构。C/S是指客户端(Client)/服务器(Server)模式。这种模式的客户端需要安装一个桌面程序。桌面程序负责与服务器进行数据交换。一般的网络程序都是C/S结构,例如QQ、MSN、PP Live、迅雷等。B/S是指浏览器(Browser)/服务器(Server)模式。一般的网站都是B/S结构的,例如Google、百度。
2、Web开发背景知识
2.1 Web访问的基本原理
(1)用户打开浏览器,输入网站的URL地址,也就是是通常说的网址。这个地址告诉浏览器要访问互联网中的哪台主机。
(2)浏览器寻找到指定的主机之后,向Web服务器发出请求(request)。
(3)Web服务器接受请求并做出相应的处理,生成处理结果,大多数生成HTML格式,也有其他响应的格式。
(4)服务器把响应的结果返回发送给服务器。
(5)浏览器接收到相对应的响应结果后,在浏览器中显示响应结构,比如Web页面。
图1.1 浏览器访问Web过程
2.2 HTTP超文本传输协议
HTTP协议是浏览器和服务器之间的应用层通信协议,它是基于TCP/IP之上的协议,不仅保证正确传输超文本文档,还确定传输文档中的那一部分,以及哪一部分内容首先显示(如文本先于图片)等。下面介绍基于HTTP协议的客户端/服务器模式的信息交换过程,它分为4个过程:建立连接。发送请求信息、发送响应信息、关闭连接。
· 建立连接:连接的建立是通过申请套接字(Socket)实现的。客户端打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上些数据并通过网络向外传送。
· 发送请求:打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出的请求动作。
· 发送响应:服务器在处理完饿虎短的请求之后,要向客户机发送响应消息。
· 关闭连接:客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。
2.3 Web浏览器
目前,有很多Web浏览器,主流的浏览器有:IE、Firefox、Opera、Chrome等。
2.4 Web服务器
在服务器端,与通信相关的处理都是由服务器软件负责,这些服务器软件都由第三方的软件厂商提供,开发人员只需要把功能代码部署在Web服务器中,客户端就可以通过浏览器访问到这些功能代码,从而实现向客户提供的服务,常用的服务器有:
· IIS是微软提供的一种Web服务器,提供对ASP语言良好的支持,通过插件的安装,也可以提供对PHP语言的支持。
· Apache服务器是由Apache基金组织停工的一种Web服务器,提供对JSP和Servlet的支持,通过安装插件,同样可以提供对PHP语言的支持,但是Tomcat只是一个轻量级的JavaWeb容器,像EJB这样的服务在Tomcat中是不能运行的。
· JBoss是一个开源的重量级的Javaweb服务器,在JBoss中,提供对J2EE各种规范的良好支持,而且JBoss通过了Sun公司的J2EE认证,是Sun公司认可的J2EE容器。
· 另外J2EE的服务器还有BEA的Weblogic和IBM的WebSphere等,适合大型的商业应用。这些产品的性能都是非常优秀的,可以提供对J2EE的良好支持。
3 Web开发技术
3.1 Java Servlet
Sun公司在上世纪90年代末就发布了基于Servlet的Web服务器。为了确保加载在各个类之间不起冲突,已经建立了一个称为Java Servlet API(应用编程接口)的编码标准。现在基本上所有的服务器都遵循这个编码标准,所以Servlet有很好的移植性。现在的Web服务器已经集成了Servlet容器,Servlet容器负责管理加载、卸载、重新加载和之行Servlet代码等操作。
与传统的CGI程序相比,Servlet有如下几个优点:
· 只需要启动一个操作系统进程以及加载一个JVM,大大的降低了系统的开销。
· 如果多个请求需要做同样处理的时候,这时只需要加载一个类,这也大大降低了开销。
· 所有动态加载的类可以实现对网络协议以及请求解码的代码共享,大大降低了工作量。
· Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
虽然Servlet改变了传统CGI程序的缺点,但是它也有不足的地方:Servlet可以建立动态生成的网页,而网页中可以包含从服务器断的Java对象所获得的数据。但是Servlet生成网页的方法是在Java类中嵌入HTML标签和表达式。也就是说对HTML坐一个小小的改动是,都需要修改和重新编译Servlet 源文件,然后重新部署到Servlet容器中。或许设计HTML页面和编写Servlet代码的不是同一个人,这就使得修改Servlet变得非常麻烦。
3.2 JSP: Servlet的模板
Java Server Page(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,它是Servlet API的一个扩展。由于JSP页面在编译成Servlet之前也是可以使用的,所以它具有了Servlet的所有优点,包括访问Java API。又由于JSP是嵌入到Servlet中关于应用程序的一般表达代码,所以可以把它看成一种“彻底”的Servlet。访问一个JSP网站的过程如图1.2所示。
图1.2 JSP页面访问示意图
3.3 JSP基本原理
Web容器处理JSP文件请求需要经过三个阶段:
· 翻译阶段:在这一阶段,编写好的JSP文件首先会被Web容器中的JSP引擎转换成Java源代码,也就是通过Servlet引擎。
· 编译阶段:JSP文件所翻译成的Java源代码会被编译成可执行的字节码(可执行的字节码是二进制格式)。
· 请求阶段:当容器接受了客户端的请求之后,就执行前面已经编译成二进制字节码的JSP文件。出来请求之后,容器再把生成的页面反馈给客户端进行显示。