您的位置:首页 > 产品设计 > UI/UE

javaWeb_Request_Response

2016-07-28 14:59 337 查看
请求的响应流程

1.response概述

response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来对客户端进行响应的,这说明在service()方法中使用response对象可以完成对客户端的响应工作。

response对象的功能分为以下四种:

设置响应头信息;

发送状态码;

设置响应正文;

重定向;

1.response响应状态码

setStatus(int sc)
:一般用来发送非错误的状态码。

sendError(int sc)
:一般用来发送错误的状态码

sendError(int sc, String msg)
:同上,但可以带错误信息

2.response发送响应头:

setHeader(String header, String value)
:设置响应头;

addHeader(String header, String value)
:添加响应头;适合一头多值。

setIntHeader(String header, int value)
:专门为int类型值由准备的!\

addIntHeader(String header, int value)


setDateHeader(String header, long value)
:专门为时间毫秒值类型准备的!

addDateHeader(String header, long value)


3.response发送响应体:

PrintWriter getWriter()
:用来向客户端发送文本数据(html就是文本数据);

ServletOutputStream getOutputStream()
:用来向客户端发送字节数据(图片、mp3等);

同一个response对象,不能即使用getOut()和getOutputStream();

缓冲区

response.getWriter()是PrintWriter类型,所以它有缓冲区,缓冲区的默认大小为8KB。也就是说,在响应数据没有输出8KB之前,数据都是存放在缓冲区中,而不会立刻发送到客户端。当Servlet执行结束后,服务器才会去刷新流,使缓冲区中的数据发送到客户端。

如果希望响应数据马上发送给客户端:

向流中写入大于8KB的数据;

调用response.flushBuffer()方法来手动刷新缓冲区;

* 4.响应编码问题*

response.setCharaceterEncoding(“utf-8”)
:让tomcat把数据转换成utf-8再发;

response.setHeader(“Content-Type”, “text/html;chartset=utf-8”)


让tomcat把数据转换成utf-8再发;

添加Content-Type头,即通知浏览器我们发送的是什么编码的字符!

设置ContentType响应头的便捷方法:
response.setContentType(“text/html;charset=utf-8”)
等同与
response.setHeader(“Content-Type”, “text/html;charset=utf-8”)
;

5.重定向的便捷方法:

原始的重定向:

设置状态码为302:response.setStatus(302);

设置Location头:response.setHeader(“Location”, “url”);

便捷方法:

response.sendRedirect(“url”);

2.request概述

request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest。在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装到request中,然后在调用Servlet.service()方法时传递给service()方法,这说明在service()方法中可以通过request对象来获取请求数据。

request的功能可以分为以下几种:

封装了请求头数据;

封装了请求正文数据,如果是GET请求,那么就没有正文;

request是一个域对象,可以把它当成Map来添加获取数据;

request提供了请求转发和请求包含功能。

1.获取请求参数

无论是GET还是POST都能获取:String getParameter(String 参数的名称)

2.request的获取请求方式和客户端IP

String getMethod():获取请求方式;

String getRemoteAddr():获取客户端的IP地址。

3.request获取请求参数

String getParameter(String paramName):通过参数名获取参数值(适用与单值参数)

String[] getParameterValues(String paramName):通过参数名获取参数值(适用与多值参数)

Enumeration getParameterNames():获取所有参数的名称

Map
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息