HTTP请求是如何被转换成request对象的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP请求是如何被转换成request对象的?相关的知识,希望对你有一定的参考价值。
Http请求实质上是浏览器帮生成。发送到服务器(Tomcat中),然后在写的代码中就可以用到socket.getInputStream()获取这些信息,Tomcat会帮把这些信息封装成一个request对象,这个request对象中就有了这个请求中的各种信息,tomcat是根据requestUri去分配一个Wrapper容器(一个Servlet分配一个Wrapper容器),容器去实例化这个servlet,调用servlet的init(),service()方法,实质上就是socket.getOutputStream()发送给浏览器,浏览器又解析这些信息,最后网页就呈现出来了。
HTTP请求是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。从客户端到服务器端的请求消息包括,消息首行中,对资源的请求方法、资源的标识符及使用的协议。考虑到局限性更大的HTTP/0.9的向后兼容问题,有两种合法的HTTP请求格式。
请求格式:
请求方法URI协议/版本:
请求的第一行是“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
请求头(Request Header):
请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。例如:Accept:image/gif.image/jpeg.*/*Accept-Language:zh-cnConnection:Keep-Alive。
1. request请求对象常用方法:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
response.setContentType("text/html; charset = utf-8");
this.response = response;
out = this.response.getWriter();
println("<ol>");
//1. 获取请求方式、处理乱码问题
String method = request.getMethod();
//servletRequest中的方法
request.setCharacterEncoding("utf-8");
//1. 获取请求体的编码方式
String characterEncoding = request.getCharacterEncoding();
println("getCharacterEncoding = " + characterEncoding);
//2. get body length
int contentLength = request.getContentLength();
println("getContentLength = " + contentLength);
//3. MIME type
String mimeType = request.getContentType();
println("getContentType = " + mimeType);
//4. 接收请求的接口的 Internet Protocol (IP) 地址
String ip = request.getLocalAddr();
println("getLocalAddr = " + ip);
//5. 基于 Accept-Language 头,返回客户端将用来接受内容的首选 Locale 客户端语言环境
Locale locale = request.getLocale();
println("getLocale = " + locale);
以上是关于HTTP请求是如何被转换成request对象的?的主要内容,如果未能解决你的问题,请参考以下文章