javaWeb_Request_Response
2016-07-28 14:59
337 查看
请求的响应流程
response对象的功能分为以下四种:
设置响应头信息;
发送状态码;
设置响应正文;
重定向;
1.response响应状态码
2.response发送响应头:
3.response发送响应体:
同一个response对象,不能即使用getOut()和getOutputStream();
缓冲区
response.getWriter()是PrintWriter类型,所以它有缓冲区,缓冲区的默认大小为8KB。也就是说,在响应数据没有输出8KB之前,数据都是存放在缓冲区中,而不会立刻发送到客户端。当Servlet执行结束后,服务器才会去刷新流,使缓冲区中的数据发送到客户端。
如果希望响应数据马上发送给客户端:
向流中写入大于8KB的数据;
调用response.flushBuffer()方法来手动刷新缓冲区;
* 4.响应编码问题*
让tomcat把数据转换成utf-8再发;
添加Content-Type头,即通知浏览器我们发送的是什么编码的字符!
设置ContentType响应头的便捷方法:
5.重定向的便捷方法:
原始的重定向:
设置状态码为302:response.setStatus(302);
设置Location头:response.setHeader(“Location”, “url”);
便捷方法:
response.sendRedirect(“url”);
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
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
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序