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(); }
- day08-响应数据
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- day08
- Day08
- day08
- day08
- day08 homework
- Java设计模式——状态模式
- CentOS 6.4下编译安装MySQL 5.6.14
- UEditor在线编辑器配置及注意事项
- 似此星辰非昨夜 为谁风露立中宵
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
- day08-响应数据
- Getuch applies privacy instructions
- java 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
- Java
- 使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器(非常有用)
- android studio快捷键大全
- inflate参数释义
- 软件工具/插件
- PLSQL查询数据显示为乱码解决方法