一、什么是Response
我们开发的软件是B/S结构的软件,是可以通过浏览器访问服务器的软件。从浏览器输入一个地址,访问服务器的这个过程称为请求。服务器接收到请求,需要进行处理,处理以后,还需要将处理结果发回浏览器端显示,这个过程称为响应
二、Response关于响应头的方法
setDateHeader(String name, long date)
setHeader(String name, String value)
setIntHeader(String name, int value)
set开头的方法用于设置:针对一个key对应一个value的情况
举例:原头信息Content-Type:text/html
调用setHeader("Content-Type","text/html");
最终结果:Content-Type:text/html
addDateHeader(String name, long date)
addHeader(String name, String value)
addIntHeader(String name, int value)
add开头的方法用于追加:针对一个key对应多个value的情况
举例:原头信息Content-Type:text/html
调用addHeader("Content-Type","text/plain");
最终结果:Content-Type:text/html,text/plain
三、Response关于响应体的方法
getOutputStream() 将二进制字节发送到客户端
getWriter() 将字符文本发送到客户端
用于向浏览器端输出内容
四、Response其他的API
addCookie(Cookie cookie)
服务器向浏览器回写Cookie的方法
sendRedirect(String location)
重定向的方法
setContentType(String type)
设置浏览器打开页面时候采用的字符集
setCharacterEncoding(String charset)
设置响应字符流的缓冲区的字符集
五、使用字节流响应中文
1、编写代码
2、向页面输出中文是否会有乱码?不一定!
3、原因:其实这个乱码的产生,与中文转成字节数组,以及浏览器的打开方式(打开的时候采用的默认字符集)有关
4、解决:将中文转成字节数组的时候,和浏览器默认打开的时候采用的字符集一致即可
六、使用字符流响应中文
1、编写代码
2、向页面输出中文是否会有乱码?一定乱码
3、原因:字符流是有缓冲区的,Response获得字符流,老外设计默认的缓冲区编码是ISO-8859-1,这个字符集不支持中文
4、解决:设置Response获得字符流缓冲区的编码,和设置浏览器默认打开时采用的字符集一致即可
七、Request对象的概述
什么是Request对象
我们开发的软件都是B/S架构的软件,从浏览器向服务器提交一些数据时,将这些数据内容进行封装,封装成一个请求对象,即Request对象
八、Request对象的API
1、获得客户端的信息
getMethod() 获得请求的方式
getQueryString() 获得查询字符串的(即请求路径后的提交参数字符串)
getRequestURI() 获得请求路径的URI
getRequestURL() 获得请求路径的URL
getRemoteAddr() 获得客户端的IP地址
2、获得请求头的方法
getHeader 获得一个Key对应一个Value的请求头
getHeaders 获得一个Key对应多个Value的请求头
3、获得请求参数的方法
getParameter 获得提交的参数(一个name对应一个value)
getParameterValues 获得提交的参数(一个name对应多个value)
getParameterMap() 获得提交的参数,将提交的参数名称和对应的值存入到一个Map集合中
4、Request作为域对象存取数据的方法
setAttribute 向Request域中存数据
getAttribute 从Request域中取数据
removeAttribute 从Request域中移除数据