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文件。出来请求之后,容器再把生成的页面反馈给客户端进行显示。

JavaWeb开发学习(一)-JavaWeb开发概述的更多相关文章

  1. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  2. Android开发学习总结——Android开发的一些相关概念

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  3. Android开发学习总结——Android开发的一些相关概念(转)

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  4. android开发学习---linux下开发环境的搭建&& android基础知识介绍

    一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  5. 吴裕雄--天生自然 R语言开发学习:集成开发环境\工具RStudio的安装与配置

  6. 吴裕雄--天生自然 JAVA开发学习:Java 开发环境配置

  7. 吴裕雄--天生自然Android开发学习:android开发知识学习思维导图

  8. 熬夜肝了一份 C++/Linux 开发学习路线

    大家好,我是帅地. 之前写过几篇学习路线的文章 前端开发学习路线 Java 后端开发学习路线 一般开发岗主流的就是 Java 后台开发,前端开发以及 C++ 后台开发,现在 Go 开发也是越来越多了, ...

  9. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

随机推荐

  1. java_method_stringUtils

    /** * 字符串英文单双引号处理,将中英文引号转为中文的引号 * @param temp * @return */ public static String getStringDatabase(St ...

  2. Hibernate一对多(注解)

    <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  3. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  4. 使用yield关键字让自定义集合实现foreach遍历

    一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口) 但是我们也可以通过使用yield关键字构建的迭代 ...

  5. C#图片压缩处理算法

    原文链接:http://blog.csdn.net/szstephenzhou/article/details/38900345

  6. 《VB语言程序设计(第3版)》总结

    我之前因学习昆仑通态的组态软件MCGS,用并学习过VB,还买了一本书<VB语言程序设计(第3版)>.现在在某公司实习,最近接触老的项目,又要用到VB.我就又把那本书大体看了一遍,并对其进行 ...

  7. 【bzoj3211】花神游历各国

    Description   Input   Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 551 1 2 2 1 2 1 1 2 2 2 ...

  8. JavaSE基础知识总结

    最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...

  9. openfire+strophe

    其实是关于strophe的使用的,因为openfire那部分我并没有安装,项目过程中是直接访问的已经部署好的服务器了. 关于使用strophe+ openfire完成 即时通讯,做到及时的信息交互,主 ...

  10. 易全解token获取

    //易全解app             string strClientID = "2016061711434943493606";             string str ...