- Servlet开篇
1,这个东西是干嘛的?为什么要玩这个东西?
2,怎么样就玩好这个东西了?具体的应该玩这个东西的什么?
其实现在对于我来说并不是说学习一个东西,说白了就是想玩一个东西,这里的玩就想深入的研究一下这个东西的源码,更加全面的来把控这个东西。实践是最好的学习方式,废话不多说了,现在开始Servlet之旅。
- Servlet是什么?为什么要玩Servlet?
B/S可以理解为从过去的C/S结构发展而来的,以通用的浏览器为客户端,由服务器通过请求响应的方式和客户端交流信息。由于浏览器、服务器的多种多样,就需要一种方式为浏览器与服务器解耦和,使一个浏览器可以访问不同的服务器,一个服务器也可以和不同的浏览器通信,HTTP协议就是这个统一的关键。浏览器与服务器厂商共同遵守的顶级Web协议,浏览器只负责发送或接收解析遵守此协议的信息,服务器只负责响应或发送遵守此协议的信息,把从前C/S结构中客户端与服务器的紧密性解开了。从此,厂商再也不用为了维护客户端的版本更新而伤财费力,像IE浏览器,已经嵌在系统中,用户也不需要再为安装哪种客户端,使用哪个厂商的服务而大伤脑筋。
一个C/S结构的应用,客户端向服务器发送信息,从服务器得到响应,服务器解析客户端的信息,将处理结果返还给客户端。在这个应用中,服务器为了响应多个客户端,需要多进程或者多线程编程。
抛开复杂的东西不谈,不同的B/S应用,服务器端最基本的:监听客户端连接,提供服务,销毁客户端不用的资源等,这些内容是每个C/S结构应用都需要的,而对于B/S结构的应用而言,这些内容也是基本相同的,每写一个应用都要做这些重复的工作,是很费时费力的。
既然在Web这种B/S结构应用中,客户端与服务器通信的协议已经固定了,那么能否再把相同的服务器端代码再提取出来,使这些代码与业务相关的代码分离,从而达到让一个服务器可以服务不同的应用,让同一个应用也可以跑在不同的服务器上呢?这是否就需要在应用与服务器间建立一套协议呢?
这就是一套规范,服务器只负责调用规范中的API给应用提供服务,而服务器为了能够调用到我们具体的业务逻辑方法,就需要我们去实现这套API中接口或类的固定方法,服务器与应用的业务实现者通过这个规范交流,无论不同的服务器内部如何实现,它与业务实现者的交流是通过API中规范的接口或类中的方法,无论多么复杂的业务逻辑,业务实现者想要返回处理结果给客户也要通过这套API。而这套API就需要服务器与业务实现者共同遵守。这样就把开发者从与服务器的交流中解放出来,使他们更专注于业务的开发中。这也就是JavaEE规范起的作用。
Servlet是JavaEE中的一部分,它位于Web层,负责处理客户请求并对客户请求做出响应,为客户端提供动态的内容,是客户端与应用程序交流的桥梁,主要服务是在标准的请求响应结构中与客户交换和传送数据。
容器:普通的玻璃容器可以用来装水,JavaSE中数组容器、集合容器可以用来装一组相同对象,JavaEE的容器里面装的是组件。无论是集合容器还是JavaEE的容器,里面内容(组件)的管理依靠容器,组件之间的交流也要依靠容器,容器的作用就是为这些组件提供运行环境以及所需要的服务。JavaEE的容器可以用来接收请求,把用户的需求影射到某个资源(如我们写好的Servlet上),再由容器把响应信息发送给客户。容器是由希望在自己的产品中采用Servlet技术的厂商实现的(通常是在Web服务器中)
Servlet:属于JavaEE中的Web组件,容器负责实例化、初始化、调用和销毁部署在其中的Servlet组件。Servlet实际上就是一个Java类,用来动态处理请求以及构造响应信息,它可以动态生成Html的Web页面做为请求的响应,还可以向客户端发送其他格式的数据,如串行化的Java对象、XML等。这些Servlet就是在一个Servlet容器中运行,由容器管理,访问由容器提供的服务。Servlet是由想要使用JavaServlet技术开发Web应用的程序员编写的,并部署到Web应用程序中。
OK,认真的看过上面的介绍,相信我们自己都有感觉了。Servlet就是BS架构中的服务器端小程序。从广义上来讲,Servlet 规范是 Sun 公司制定的一套技术标准,包含与 Web 应用相关的一系列接口,是 Web 应用实现方式的宏观解决方案。而具体的 Servlet 容器负责提供标准的实现。从狭义上来讲,Servlet 指的是 javax.servlet.Servlet 接口及其子接口,也可以指实现了 Servlet 接口的实现类。Servlet 作为服务器端的一个组件,它的本意是“服务器端的小程序” 。Servlet 的实例对象由 Servlet 容器负责创建Servlet 的方法由容器在特定情况下调用;Servlet 容器会在 Web 应用卸载时销毁 Servlet 对象的实例。
下面贴2张图片:1,Web应用运行模式
2,通过网页驱动服务器端的 Java 程序。在网页上显示 Java 程序返回的数据。
- 怎么样就玩好这个东西了?具体的应该玩这个东西的什么?