day08-响应数据

来源:互联网 发布:c 把数据生成html文件 编辑:程序博客网 时间:2024/05/21 09:56

格式
HTTP/1.1 200 OK
状态行
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Fri, 21 Apr 2017 07:37:27 GMT 响应头
空行
Hello
实体内容,响应主体内容
1.状态行
格式
HTTP/1.1 200 OK
200,http状态码
ok,对状态码的翻译或描述

200,正常请求与响应,进行一次正常的通信
304,通知浏览器读取浏览器端的缓存文件
302,页面重定向
403,你没有权限访问这个资源
404,找不到服务器对应的资源文件
500,服务器发生异常,就是你的代码有问题

2.响应头
格式
HTTP请求中的常用响应头
Location: http://www.it315.org/index.jsp –跳转方向
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: close/Keep-Alive –连接
Date: Tue, 11 Jul 2000 18:23:51 GMT –时间

(1)Location
作用
通知浏览器跳转页面,重定向跳转

代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //使用location进行页面跳转必须现先设置http状态码为302//      response.setStatus(302);//      //访问这个资源之后,通知浏览器跳转到test.html里面去//        response.setHeader("Location","/day08_58/test.html");          //response进行优化,一句话就可以实现上面2句代码(推荐使用)          response.sendRedirect("/day08_58/test.html");//实现原理就是上面的代码    }

(2)Content-Encoding

作用    通知浏览器对资源数据解压后再进行显示数据

代码
需求:向客户端输出4000个长度字符,针对于大数据进行数据压缩

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    //对大的数据进行压缩,那么传输的数据就是压缩文件,浏览器默认会下载这个压缩文件    //目的:浏览器要显示出来,通知浏览器对压缩文件进行解压再进行显示,Content-Encoding    response.setHeader("Content-Encoding", "gzip");    //输出4000个长度字符    StringBuilder stringBuilder = new StringBuilder();        for (int i = 0; i < 1000; i++) {            stringBuilder.append("abcd");        }    //使用gzip压缩,GZIPOutputStream可以对数据进行压缩,但是没有写出数据能力,所以需要借助response.getOutputStream()    GZIPOutputStream gzipOutputStream =  new GZIPOutputStream(response.getOutputStream());    //对数据进行压缩,数据压缩后将压缩好的数据会放在内存流中,需要手动调用方法将内存流中的数据输出到输出流中        gzipOutputStream.write(stringBuilder.toString().getBytes());    //手动调用方法将内存流中的数据输出到输出流中    gzipOutputStream.finish();    //输出//      response.getOutputStream().write(stringBuilder.toString().getBytes());}

(3)ContentType
作用
通知浏览器采用什么码表进行解码
向客户端浏览器输出中文乱码问题的原理


代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//      //1.修改response的默认编码码表//      response.setCharacterEncoding("utf-8");//      //2.通知浏览器以utf-8解码//      response.setHeader("Content-Type", "text/html;charset=utf-8");        //优化升级(处理向客户端输出中文乱码问题)        response.setContentType("text/html;charset=utf-8");//实现原理就是上面2句代码        //向客户端输出中文数据        //字节流输出        //response.getOutputStream().write("你好".getBytes());        //字符流输出        PrintWriter out = response.getWriter();        out.write("你好");    }

(4)Refresh
作用
通知浏览器按照指定时间刷新页面
功能1:刷新页面
功能2:指定3妙后,跳转到test.html页面

代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    //需求:指定1秒后刷新页面    //response.setHeader("refresh", "1");//1秒    //需求2:指定3妙后,跳转到test.html页面    response.setHeader("refresh", "3;url=/day08_58/test.html");//3秒    }

(5)Content-Disposition
作用
通知浏览器以附件形式进行下载

需求:向客户端输出一张图片

代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //需求:向客户端输出一张图片,客户端要以附件形式下载        //通知浏览器客户端要以附件形式下载        //attachment,代表以附件下载        //filename,下载后的文件名字        //传输中文,默认请求行与实体内容传输中文会默认进行URL编码操作,针对响应头与请求头传输中文,你要自己进行URL编码        String name = "柳岩";        //响应头数据中文要进行URL编码        name = URLEncoder.encode(name,"UTF-8");        response.setHeader("Content-Disposition", "attachment;filename="+name+".jpg");        //读取文件流,再输出        FileInputStream fileInputStream = new FileInputStream(new File("h:/1.jpg"));//路径中正斜杠只需要写一个,反斜杠需要写2个        int length = -1;        byte[] bytes = new byte[1024];        //创建输出        while((length=fileInputStream.read(bytes))!=-1){            response.getOutputStream().write(bytes,0,length);        }        fileInputStream.close();    }
原创粉丝点击