1、首先简单介绍一下http
请求报文和响应报文都是四个部分组成:请求行、请求头、空行、消息主体。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
Referer:上一请求节点路径名
User-Agent:发送请求的浏览器类型、操作系统等信息
Accept:客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息
Accept-Encoding:客户端可识别的数据编码
Accept-Language:表示浏览器所支持的语言类型
Connection:允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接。
Transfer-Encoding:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式。
Content-Type:发送给接收者的实体正文的媒体类型
Content-Lenght:实体正文的长度
Content-Language:描述资源所用的自然语言,没有设置则该选项则认为实体内容将提供给所有的语言阅读
Content-Encoding:实体报头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。
2、http请求到服务端,经过容器处理,我们知道最后是交由servlet的service方法处理
httpServletRequest继承ServletRequest接口,实现了对请求报文的包装
同理,httpServletResponse继承了ServletResponse,对响应报文做了包装
3、一般开发过程中,我们常使用spring注解进行配置,如
通过查看 @RequestMapping注解,内含路径配置信息。
在spring容器初始化对RequestMapping注解进行扫描,之后包装成RequestMappingInfo
之后通过registerHandlerMethod方法注册进分发器。当请求达到时,去urlMap中匹配url并获取mapping实例,再去handlerMethods获取匹配HandlerMethod实例。
参考: