通过response对象可以实现很多功能,下面的代码都是在myeclipse上实现过的,整理下路,以备后用。


response对象应用1

1向客户端发送简单消息

A利用已经声明的对象,调用其getOutputStream()方法,向客户端输出内容

response.getOutputStream().write("输出,以默认编码形式".getBytes());
System.out.println(response.getCharacterEncoding());

2向客户端发送中文消息,并指定编码

//下面语句设置了响应内容类型和编码方式
//response.setContentType("text/html;charset=GBK");
public void test3(HttpServletResponse response) throws IOException{

        OutputStream out = response.getOutputStream();
        out.write(1);//会乱码,服务器发送默认是以ISO编码,浏览器解析默认是gb2312
    }
    //不指定编码,发送数据,中文
    public void test2(HttpServletResponse response) throws IOException{

        OutputStream out = response.getOutputStream();
        out.write("中国".getBytes());//会乱码,iso编码中没有汉字
    }
    //以GBK编码发送数据
    public void test1(HttpServletResponse response) throws IOException{
        response.setContentType("text/html;charset=GBK");//设置响应内容和编码规则
        OutputStream out = response.getOutputStream();
        out.write("中国".getBytes());//可以正常现实出中文
    }

3使用response对象实现用户下载功能

步骤:

1、获取文件的真实路径

2、获取文件的文件名(用于告诉用户)

3、告知客户这是一次下载响应,通过设置response对象的相关内容

4、打开一 个输入流,将文件传进来。(这个流是针对文件的)

5、打开一个输出流,并将之前的文件流传进来,用response对象传出去。


response.setContentType("text/html;charset=UTF-8");
        1、获取文件的真实路径
        String path = getServletContext().getRealPath("/File/长大水塔.jpg");//获取文件的绝对路径
        2、获取文件的文件名(用于告诉用户)
        String filename = path.substring(path.lastIndexOf("\\")+1);//获取文件名字
        System.out.println(filename);
        System.out.println(path);
        3、告知客户这是一次下载响应,通过设置response对象的相关内容
        response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename, "UTF-8"));//少了个等于号,attachment附件
        4、打开一个输入流,将文件传进来。(这个流是针对文件的)
        InputStream in = new FileInputStream(path);//这个流是针对文件的输入的
        5、打开一个输出流,并将之前的文件流传进来,用response对象传出去。
        OutputStream out = response.getOutputStream();//这个流是针对response的输出的
        //传递这个流,固定套路
        byte[] buf = new byte[1024];
        int len = -1;
        while((len=in.read(buf)) != -1){
            out.write(buf);
        }
        in.close();

下面是一些关于response对象的细节

1、getOutputStream和getWriter方法分别用于得到输出二进制数据、输出文本数据的ServletOuputStream、Printwriter对象。

2、getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。 会抛异常。

3、Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。

4、Serlvet的service方法结束后,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象。

对于第四条,我们也可以手动关闭输出流,毕竟“有借有还再借不难”,因为一时偷懒,系统崩了,那就得不偿失了。

Servlet中Response对象应用1(输出简单文字、实现文件下载)的更多相关文章

  1. Servlet中Response对象应用2(输出随机验证码图片)

    预期结果如图: 可用于登陆界面的验证 需要使用random类和绘画相关的几个类.以及imageio的内容. import java.awt.*; import java.awt.image.Buffe ...

  2. Servlet中response对象Commit状态的分析

    response是服务端对客户端请求的一个响应,其中封装了响应头.状态码.内容(也就是最终要在浏览器上显示的HTML代码或者其他数据格式)等. 服务端在把response提交到客户端之前,会使用一个缓 ...

  3. Servlet中response、request乱码问题解决

    Java Web(二) Servlet中response.request乱码问题解决   三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现 ...

  4. Java Web之Servlet中response、request乱码问题解决

    Java Web之Servlet中response.request乱码问题解决   一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...

  5. jsp九大内置对象与servlet中java对象

    jsp九大内置对象 request对象 :  getParameter(String name)获取表单提交的数据 getParamegerNames() 获取客户端提交的所有参数名 getAttri ...

  6. php中json对象数据的输出转化

    php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端 ...

  7. jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字

    jsp的C标签一般使用方法以及js接收servlet中的对象及对象数组 由于现流行的javaWeb框架提倡前后端分离,比如在SpringMvc中已经很少写servlet的一些东西:目前 前端jsp中大 ...

  8. Java Web(二) Servlet中response、request乱码问题解决

    三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, M ...

  9. web开发(二) Servlet中response、request乱码问题解决

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6412475.html>,在此仅供学习参考之用. 一.re ...

随机推荐

  1. 第2章 rsync(二):inotify+rsync详细说明和sersync

    本文目录: inotify+rsync 1.1 安装inotify-tools 1.2 inotifywait命令以及事件分析 1.3 inotify应该装在哪里 1.4 inotify+rsync示 ...

  2. SSM整合学习笔记

    对学习Spring+Spring MVC+Mybatis过程中出现的问题解决办法汇总 出现的问题 1.pom.xml报错 右键项目->maven->update project 因此每次更 ...

  3. [补] windows C socket编程——大物实验预约

    注 : 心血来潮,想着把这两年没能记录下来的经历,写一波回忆杀.诚然,有些经历十分复杂繁琐,希望能耐下性子,写出好文章来,可惜一时不能全想起来这两年来的种种,就想起来什么便写什么吧. 时间估摸着是大一 ...

  4. linux下 git 安装

    1.使用yum安装 yum -y install git yum remove git 2.源代码安装 a.下载git源码  网址为 https://github.com/git/git/releas ...

  5. 内核对象kobject和sysfs(3)——kobj分析

    内核对象kobject和sysfs(3)--kobj分析 在分析kobj之前,先总结下kobj的功能: 实现结构的动态管理: 实现内核对象到sysfs的映射: 实现自定义属性的管理. 关注一下kobj ...

  6. MySql 求一段时间范围内的每一天,每一小时,每一分钟

    平常经常会求一段时间内的每一天统计数据,或者每一时点的统计数据.但是mysql本身是没有直接获取时点列表的函数或表.下面是自己用到的一些方法,利用临时变量和一个已存在的比较多数据(这个需要根据实际情况 ...

  7. 使用VMware安装CentOS

    使用VMware安装CentOS 第1步:首先安装VMware Workstation,只需点下一步即可,安装过程略 第2步:文件 → 新建虚拟机 或 直接点击 创建新的虚拟机 图标 第3步:选择 典 ...

  8. python函数(5):迭代器和生成器

    迭代器和生成器是函数中的一大重点,务必掌握,何为迭代?何为迭代器? 预习: 处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕 一.迭代器 for i in 50: pr ...

  9. Nlpir Parser智能语义平台全文搜索

    全文索引用于处理大文本集合,利用它人们可以在海量文本中快速获取需要的信息.全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统.一般来说,全文检索需要具备建立索引和提供查询的基本功能 ...

  10. 微服务(二)hystrix

    特性 1.延迟和失败容忍 防止级联错误,错误回退,优雅降级.快速失败和恢复 线程和信号量隔离 2.实时监控和配置更改 3.并发 并行执行,请求缓存,自动批处理失败请求 总运行流程 当你发出请求后,hy ...