如何在servlet打印http request 流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在servlet打印http request 流相关的知识,希望对你有一定的参考价值。

request.getInputStream() 的API这样说:Retrieves the body of the request as binary data using a ServletInputStream.
你得到的只是body的输入流,并不是整个请求的输入流。
可以自己写Socket,将接收到的数据打印出来。
参考技术A getHeader(String s):获取请求中头的值。一般来说,S参数可取的头名有accept,referrer、accept-language、content-type、accept-encoding、user-agent、host、cookie等,比如,S取值user-agent将获得用户的浏览器的版本号等信息。

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。

参考技术A

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);

以上是关于如何在servlet打印http request 流的主要内容,如果未能解决你的问题,请参考以下文章

HTTP请求是如何被转换成request对象的?

servlet如何利用request来获取http请求中的主体信息?

servlet如何利用request来获取http请求中的主体信息?

在servlet获取表单的值,打印输出的是问号

servlet 怎么获取http post 的body

Servlet&HTTP&Request