最近一般时间由于项目的原因,对servlet接触比较多,对servlet有一定的深入,故记录下来,以免遗失在知识的海洋之中。
我们知道,http连接是一个无状态的连接,但要想真正理解它还不是一件很容易的事情。HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。
客户机向服务器提出一个http请求,服务器就向客户机回复此请求,这里我们将请求定义为request,回复定义为response,只要遵守请求和响应的规范,客户机的服务器可以互相不必要知道对方是什么,怎么实现的。比如,如果你用IE浏览器请求如下格式的某个URL地址:http://www.jboss.org/index.html不要以为服务器上的是一个静态文本,事实上,它是一个servlet,只是扩展名用了html,在servlet服务器中,可以用任何扩展名来作为访问标志,只是你的客户机是否认识这个扩展名,它可管不了。
请求(request)通常包括了一个请求头,这里面包括了客户机的一些信息,如客户机设备类型,客户机IP地址等,通过分析这些信息(在服务器端)你可能会有意外的惊喜。每一次http请求服务器端都会得到客户机的request信息,同时你可以在服务器端向客户机发出响应(response),这些响应同样可以影响到客户机的众多特性。
比如:在wap应用中,你可以从http请求中得到用户的手机号码,你可以得到用户的浏览器类型和支持的编码方式,在向客户机响应之前,你可以做很多的工作,根据需要可以进行内容压缩,可以在输出之前进行特定的编码,可以将请求传来的数据根据需要进行编码以得到正确的格式等等。在这样的一个项目中,客户机得到的可以是.wml扩展名,事实上服务器全部是由servlet构成的。wap应用可以说是servlet表现的最佳场所,因为客户机表现能力差,而这正好可以充分利用服务器的强大构造力,营造功能强大的wap应用。而web应用则采用经典的MVC模式,与之配合可以打造一个经典的应用。