服务器解析请求的基本原理:
1)用户在客户端发送请求(如点击一个链接或在地址栏输入一个地址然后敲回车)
2)服务器端此时开始解析请求对象(分别为请求行、消息头、信息正文),这里用到了servlet的底层原理,其中HttpRequest内容包括请求方式、路径、协议和请求路径、查询方式、查询参数、消息头(这里用map表示和处理)等消息等需要解析。
3)创建响应对象,然后判断是否请求业务。 如果是,则根据请求获取相应的Servlet对象,用反射机制加载并实例化,随后调用service方法处理业务,并根据业务处理的结果设置response对象来处理客户端,最后将相应内容刷新,并发送给客户端,与此同时,把相关的状态行、响应头、响应正文发送到HttpReposne; 如果不是,则判断路径,该资源文件是否存在,如果不存在,则设置状态码为404,并设置响应实体为404.html页面,最后将相应内容刷新,并发送给客户端,与此同时,把相关的状态行、响应头、响应正文发送到HttpReposne;如果该资源路径存在,则设置响应实体为请求的实际文件,最后将相应内容刷新,并发送给客户端,与此同时,把相关的状态行、响应头、响应正文发送到HttpReposne;。
4 )待解析完毕后,会在HttpResponse中生成相应的状态码、消息头、响应实体,与此同时,将响应的内容打包发送给客户端。
说明:这是大致原理,其实还有很多细节要补充,而且,这里还存在一个刷新问题,所以,如果纠结于细节的话,还要深究HTTP协议,另外,对于具体的解析内容也可以抓包看看具体信息。