HttpServletrequest 与HttpServletResponse总结汇总

上传人:碎****木 文档编号:220861802 上传时间:2021-12-09 格式:DOCX 页数:11 大小:39.92KB
返回 下载 相关 举报
HttpServletrequest 与HttpServletResponse总结汇总_第1页
第1页 / 共11页
HttpServletrequest 与HttpServletResponse总结汇总_第2页
第2页 / 共11页
HttpServletrequest 与HttpServletResponse总结汇总_第3页
第3页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《HttpServletrequest 与HttpServletResponse总结汇总》由会员分享,可在线阅读,更多相关《HttpServletrequest 与HttpServletResponse总结汇总(11页珍藏版)》请在金锄头文库上搜索。

1、 协议扫瞄器需要 URL 找到效劳器当中的资源,扫瞄器传给效劳器一个恳求,效劳器对这个恳求进展相应的处理比方增删改查,效劳器依据处理结果返回给扫瞄器,扫瞄器依据返回结果进展相应的处理比方显示网页显示图片,那么扫瞄器和效劳器怎么相互传输数据,数据如何解析,传输什么格式的数据需要制定好一套规章, 协议就应运而生了,这是一群外国人(www)勾搭之后产生的, 协议自消灭以来,主要解决的就是扫瞄器和效劳器数据交换的格式问题,所以 协议定义了一套数据格式,一个 恳求一般含有恳求方法,恳求地址, 协议版本,和 header,这些 header 就相当于 协议供给的功能,你设置相应的 header 可以让效劳

2、器产生相应的行为,效劳器响应中一般包含协议版本,状态码和状态码描述,和一大堆header,不同的是恳求和响应所支持的header 并不一样,具体的参观相应的介绍, 与web 开发的联系中有request 和 response 对象,使用相应的方法可以取到 恳求中header 内容也可以返回相应的 内容给扫瞄器,还有一点就是 response 当中定义一大把状态码和状态描述,比方200 对相应ok,404 对应找不到,由来Web 效劳器收到一个 恳求,会针对每个恳求创立一个 ServletRequest 和 ServletResponse 对象,向客户端发送数据找 ServletResponse

3、,从客户端取数据找 ServletRequest; 协议是基于恳求-响应的协议,客户端恳求一个文件,效劳器对该恳求进展响应。 使用 TCP 协议,默认使用 80 端口。最初的 协议版本是 /0.9,后被 /1.0 替代。目前使用的版本是 /1.1,在 协议中,总是由主动建立连接、发送 恳求的客户端来初始化一个事务。效劳器不负责连接客户端,或创立一个到客户端的回调连接callback connection。 ServletRequest公共接口类 ServletRequest继承自ServletRequest.客户端扫瞄器发出的恳求被封装成为一个 ServletRequest 对象。全部的信息包

4、括恳求的地址,恳求的参数,提交的数据, 上传的文件客户端的ip 甚至客户端操作系统都包含在其内。一个 恳求包含以下三局部:a. 恳求地址(URL)b. 恳求头(Request headers) c.实体数据(Entity body) 举例如下POST /examples/default.jsp /1.1Accept: text/plain; text/html Accept-Language: en-gb Connection: Keep-Alive Host: localhostUser-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 9

5、8) Content-Length: 33Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate lastName=Franks&firstName=Michael每个 恳求都会有一个恳求方法, 1.1 中支持的方法包括,GET、POST、HEAD、OPTIONS、PUT、DELETE 和 TRACE。互联网应用中最常用的是 GET 和 POST。URI 指明白恳求资源的地址,通常是从网站更名目开头计算的一个相对路径,因此它总是以斜线 “/”开头的。URL 实际上是 URI 的一种类型,恳求头

6、header中包含了一些关于客户端环境和恳求实体entity的有用的信息。例如,客户端扫瞄器所使用的语言,恳求 实体信息的长度等。每个恳求头使用 CRLF回车换行符,“rn”分隔。留意恳求头的格式:恳求头名+英文空格+恳求头值常用方法1.获得客户机信息getRequestURL 方法返回客户端发出恳求时的完整URL。getRequestURI 方法返回恳求行中的资源名局部。getQueryString 方法返回恳求行中的参数局部。getRemoteAddr 方法返回发出恳求的客户机的IP 地址getRemoteHost 方法返回发出恳求的客户机的完整主机名getRemotePort 方法返回客

7、户机所使用的网络端口号getLocalAddr 方法返回WEB 效劳器的IP 地址。getLocalName 方法返回WEB 效劳器的主机名getMethod 得到客户机恳求方式getServerPath()猎取恳求的文件的路径2.获得客户机恳求头getHeader(string name)方法getHeaders(String name)方法getHeaderNames 方法3. 获得客户机恳求参数(客户端提交的数据)getParameter(name)方法 猎取恳求中的参数,该参数是由name 指定的getParameterValuesString name方法 猎取指定名称参数的全部值数

8、组。它适用于一个参数名对应多个值的状况。如页面表单中的复选框,多项选择列表提交的值。 getParameterNames 方法 返回一个包含恳求消息中的全部参数名的 Enumeration 对象。通过遍历这个Enumeration 对象,就可以猎取恳求消息中全部的参数名。getCharacterEncoding() 返回恳求的字符编码方式getAttributeNames()返回当前恳求的全部属性的名字集合赋值:setAttribute() getAttribute(String name) 返回 name 指定的属性值getsession()返回和客户端相关的session,假设没有给客户端

9、安排session,那么返回null getParameterMap():返回一个保存了恳求消息中的全部参数名和值的Map 对象。Map 对象的key 是字符串类型的参数名,value 是这个参数所对应的Object 类型的值数组RequestDispatcher.forward 方法的恳求转发过程完毕后,扫瞄器地址栏保持初始的 URL 地址不变。方法在效劳器端内部将恳求转发给另外一个资源,扫瞄器只知道发出了恳求并得到了响应结果,并不知道在效劳器程序内部发生了转发行为。request.setCharacterEncoding(“utf-8“); getReader() 猎取恳求体的数据流get

10、InputStream() 猎取恳求的输入流中的数据通过输入输出流猎取 :getInputStream 和 getReader在读取的时候通过流对象.read方法读取Eg:StringBuffer receiveMessage = new StringBuffer();Scanner scanner = new Scanner(request.getInputStream(), “GBK“); while (scanner.hasNext() receiveMessage.append(scanner.next();scanner.close();String json =receiveMes

11、sage.toString() JSONObject obj = new JSONObject(json); openId = obj.get(“openid“).toString();消灭乱码的缘由和解决1. java 程序中默认的是中文字符 unicode2. 系统会把在java 程序中的unicode 字符依据某种字符集编码的方式转换成字节数组,再通过扫瞄器输出,扫瞄器在输出的时候要进展解码,只有在这两种方式一样的状况下,才不会消灭乱码。注:(1)某种字符编码是用reponse 对象去设置的,而且必需是在out.println 之前使用,要不会消灭错误,会抛找不到设置的字符编码而出错。设

12、置编码的两种方式: response.setContentType(“text/html;charset=utf-8“); request.setCharacterEncoding(“utf-8“);(2)扫瞄器会把字节数组转换成字符3. 系统默认的编码方式为 ISO8859-1,假设没有指定字符编码,那么输出的都是乱码,而且ISO8859-1 不支持中文,所以不管扫瞄器在解码的时候用的是什么字符集编码,在扫瞄器上的都是乱码。解决方法如下Post 方式提交消灭乱码request.setCharacterEncoding(“UTF-8“);恳求中之所以会产生乱码,就是由于效劳器和客户端沟通的编码

13、不全都造成的,因此解决的方法是:在客户端和效劳器之间设置一个统一的编码,之后就依据此编码进展数据的传输和接收。由于客户端是以 UTF-8 字符编码将表单数据传输到效劳器端的,因此效劳器也需要设置以UTF-8 字符编码进展接收,要想完成此操作,效劳器可以直接使用从 ServletRequest 接口 继 承 而 来 的 “setCharacterEncoding(charset)“ 方 法 进 行 统 一 的 编 码 设 置 。 使 用request.setCharacterEncoding(“UTF-8“);设置效劳器以 UTF-8 的编码接收数据后,此时就不会产生中文乱码问题了Get 方式提

14、交消灭乱码对于以 get 方式传输的数据,request 即使设置了以指定的编码接收数据也是无效的,默认的还是使用 ISO8859-1 这个字符编码来接收数据,客户端以 UTF-8 的编码传输数据到效劳器端,而效劳器端的 request 对象使用的是 ISO8859-1 这个字符编码来接收数据,效劳器和客户端沟通的编码不全都因此才会产生中文乱码的。解决方法:在接收到数据后,先猎取request 对象以 ISO8859-1 字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。代码如下: String name = request.getParameter(“

15、name“);/接收数据name =new String(name.getBytes(“ISO8859-1“), “UTF-8“) ;/ 猎取 request 对象以ISO8859-1 字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题 ServletResponse ServletResponse 继承了 ServletResponse 接口,并供给了与 协议有关的方法, 这些方法的主要功能是设置 状态码和治理Cookie。 ServletResponse 对象代表效劳器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法 ServletResponse 对象可以向客户端发送三种类型的数据:a. 响应头(Response headers)b. 状态码(ProtocolStatus codeDescription) c.实体数据(Entity body )举例如下: /1.1 200 OKServer: Mi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号