2020-03-18

Response&Request

(一)Response对象的概述

一、什么是Response

    我们开发的软件是B/S结构的软件,是可以通过浏览器访问服务器的软件。从浏览器输入一个地址,访问服务器的这个过程称为请求。服务器接收到请求,需要进行处理,处理以后,还需要将处理结果发回浏览器端显示,这个过程称为响应

(二)Response对象的API

一、Response关于响应行的方法

    setStatus(int sc)

    设置响应的状态码

        200成功

        302重定向

        304查找本地缓存

        404请求资源不存在

        500服务器内部错误

二、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)

    设置响应字符流的缓冲区的字符集

五、Response对象的API的代码演示

(1)设置状态码

(2)完成重定向

1)重定向:是302状态码和Location响应头结合使用的效果

2)实际开发中可以使用response.sendRedirect("/web01/ResponseDemo2");替换重定向那两句的写法

(3)完成定时刷新效果

六、页面定时跳转的扩展

(1)使用JS完成读秒的效果

(2)在HTML中完成页面跳转

使用JS完成读秒效果

(三)Response对象响应的中文乱码处理

一、使用字节流响应中文

1、编写代码

2、向页面输出中文是否会有乱码?不一定!

3、原因:其实这个乱码的产生,与中文转成字节数组,以及浏览器的打开方式(打开的时候采用的默认字符集)有关

4、解决:将中文转成字节数组的时候,和浏览器默认打开的时候采用的字符集一致即可

二、使用字符流响应中文

1、编写代码

2、向页面输出中文是否会有乱码?一定乱码

3、原因:字符流是有缓冲区的,Response获得字符流,老外设计默认的缓冲区编码是ISO-8859-1,这个字符集不支持中文

4、解决:设置Response获得字符流缓冲区的编码,和设置浏览器默认打开时采用的字符集一致即可

(四)Request对象的概述及API的介绍

一、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域中移除数据

三、Request对象的API的代码演示

1、Request对象获取客户端信息

2、Request获得请求头的信息

四、Request对象接收表单请求参数

1、编写一个静态页面

2、接收请求参数

3、Request对象接收表单请求参数的中文乱码处理

    POST方式接收中文

    GET方式接收中文

你可能感兴趣的:(2020-03-18)