JavaWeb之请求与响应

1.http:要求:掌握一些头信息


    超文本传输协议:
    规定数据的格式
    浏览器往服务器发送 ---- 请求
    服务器往浏览器回写 ---- 响应


    
2.请求:(request)


    组成部分:
        请求行 请求头 请求体

(1)请求行:请求信息的第一行
        格式:请求方式    访问的资源 协议/版本
        例如:GET /day0801/1.html HTTP/1.1
        请求方式:get和post
            get会把参数放在url的后面 post不会
            get参数大小有限制,post请求却没有限制
            get请求没有请求体;post请求有请求体 请求参数放在请求体中


    (2)请求头:请求信息的第二行到空行结束
        格式:key/value (value可以是多个值)
        常见的请求头:
            Accept: text/html,image/bmp        --支持数据类型    text/html text/css text/javascript 大类型/小类型 mime类型
            Accept-Charset: ISO-8859-1    --字符集
            Accept-Encoding: gzip        --支持压缩
            Accept-Language:zh-cn         --语言环境
            Host: www.itcast.cn:80        --访问主机
            If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT      --缓存文件的最后修改时间
            Referer: http://www.itcast.com/index.jsp     --来自哪个页面、防盗链
            User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
            Cookie
            Connection:Keep-Alive       --链接状态

 3.掌握的头信息:
            Referer User-Agent Cookie If-Modified-Since
    请求体:空行以下的内容
        只有post才有请求体  get请求参数 http://xxxx?username=tom&password=123
        格式:username=tom&password=123


3.响应:(response)


    组成部分:
        响应行 响应头 响应体


    (1)响应行:响应信息的第一行
        格式:协议/版本 状态码 状态码说明
        例如:HTTP/1.1 200 OK
        状态码:
            200 正常响应成功
            302 重定向
            304 读缓存
            404 用户操作资源不存在
            500 服务器内部异常


    (2)响应头:从响应信息的第二行到空行结束
        格式:key/value(value可以是多个值)
        常见的头
            Location: http://www.it315.org/index.jsp     --跳转方向 和302一起使用的
            Server:apache tomcat            --服务器型号
            Content-Encoding: gzip             --数据压缩
            Content-Length: 80             --数据长度
            Content-Language: zh-cn         --语言环境
            Content-Type: text/html; charset=GB2312         --数据类型
            Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT    --最后修改时间
            Refresh: 1;url=http://www.it315.org        --定时刷新
            Content-Disposition: attachment; filename=aaa.zip    --下载
            Set-Cookie:SS=Q0=5Lb_nQ; path=/search
            Expires: -1                    --缓存
            Cache-Control: no-cache              --缓存
            Pragma: no-cache                   --缓存
            Connection: Keep-Alive               --连接


       (3) 掌握的头信息
            Content-Type Location  Last-Modified Refresh Content-Disposition Set-Cookie
    响应体:空行以下的内容
        页面上展示的内容

4.response:响应


    作用:
        往浏览器写东西
    组成部分:
        响应行 响应头 响应体
    操作响应行 
        格式:
            协议/版本 状态码 状态码说明
        状态码:
            1xx:已发送请求
            2xx:已完成响应
                200:正常响应
            3xx:还需浏览器进一步操作
                302:重定向 配合响应头:location
                304:读缓存
            4xx:用户操作错误
                404:用户操作错误.
                405:访问的方法不存在
            5xx:服务器错误
                500:内部异常

 常用方法:


            setStatus(int 状态码):针对于 1 2 3 
            了解 :
                sendError(int 状态码):针对于 4xx和5xx
    操作响应头 
        格式:key/value(value可以是多个值)
        常用的方法:
            setHeader(String key,String value):设置字符串形式的响应头
            了解:setIntHeader(String key,int value):设值整形的响应头
            了解:setDateHeader(String key,long value):设值时间的响应头
            
            addHeader(String key,String value):添加置字符串形式的响应头 之前设置过则追加,若没有设置过则设置
            了解:addIntHeader(String key,int value):添加整形的响应头
            了解:addDateHeader(String key,long value):添加时间的响应头

常用的响应头:


            location:重定向
            refresh:定时刷新
            content-type:设置文件的mime类型,设置响应流的编码及告诉浏览器用什么编码打开
            content-disposition:文件下载
            
            重定向:    
                方式1:
                    ★response.sendRedirect("/day10/loc2");
                方式2:
                    response.setStatus(302);
                    respooen.setHeader("location","/day10/loc2");
                    
            定时刷新:
                方案1:设置头 refresh 昨天做过
                    respooen.setHeader("refresh","秒数;url=跳转的路径");
                方案2:http的meta标签
                    


操作响应体:


        页面上要展示的内容
        常用方法:
            Writer getWriter():字符流
            ServletOutputStream getOutputStream() :字节流
            
            自己写的东西用字符流,其他一概用字节流.

处理响应中文乱码:


            方式1:★
                response.setContentType("text/html;charset=utf-8");
            方式2:理解
                response.setHeader("content-type", "text/html;charset=utf-8");
    
        注意:
            两个流互斥
            当响应完成之后,服务器会判断一下流是否已经关闭,若没有关闭,服务器会帮我们关闭.(底层使用的缓冲流)
 

你可能感兴趣的:(JavaWeb系列)