Servlet中Response对象应用1(输出简单文字、实现文件下载)
通过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(输出简单文字、实现文件下载)的更多相关文章
- Servlet中Response对象应用2(输出随机验证码图片)
预期结果如图: 可用于登陆界面的验证 需要使用random类和绘画相关的几个类.以及imageio的内容. import java.awt.*; import java.awt.image.Buffe ...
- Servlet中response对象Commit状态的分析
response是服务端对客户端请求的一个响应,其中封装了响应头.状态码.内容(也就是最终要在浏览器上显示的HTML代码或者其他数据格式)等. 服务端在把response提交到客户端之前,会使用一个缓 ...
- Servlet中response、request乱码问题解决
Java Web(二) Servlet中response.request乱码问题解决 三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现 ...
- Java Web之Servlet中response、request乱码问题解决
Java Web之Servlet中response.request乱码问题解决 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...
- jsp九大内置对象与servlet中java对象
jsp九大内置对象 request对象 : getParameter(String name)获取表单提交的数据 getParamegerNames() 获取客户端提交的所有参数名 getAttri ...
- php中json对象数据的输出转化
php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端 ...
- jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字
jsp的C标签一般使用方法以及js接收servlet中的对象及对象数组 由于现流行的javaWeb框架提倡前后端分离,比如在SpringMvc中已经很少写servlet的一些东西:目前 前端jsp中大 ...
- Java Web(二) Servlet中response、request乱码问题解决
三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, M ...
- web开发(二) Servlet中response、request乱码问题解决
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6412475.html>,在此仅供学习参考之用. 一.re ...
随机推荐
- MySQL后台线程的清理工作
后台清理工作:脏页刷盘.undo回收 1.page cleaner thread:刷新脏页 2.purge thread:清空undo页.清理“deleted”page 一.innodb_page_c ...
- luogu P3373 【模板】线段树 2
题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N.M.P,分别 ...
- 发票OCR识别/票据OCR自动识别
对于一些大的集团公司来说,分散式财务管理模式管理效率不高,管理成本相对较高,同时也制约了集团企业发展战略的实施,因而需要建设财务共享中心.一个企业想建造财务共享中心,面临的难题是大量的数据采集和信息处 ...
- vue-axios配置token,上传图片
vue1.0用 vue-resource 目前不维护了 vue2.0用 axios 使用 1.安装axios, npm install axios 2.在main.js中配置 import axios ...
- HTML随笔2
1. 快捷键: * div*8 + tab键 - 可快捷出现八个div标签. * 标签名."名称" + tab键 - 可快速出现类名为"名称"的该标签,如果不加 ...
- HttpURLConnection getInputStream异常的解决
http://blog.csdn.net/q2232/article/details/48136973 但是当getResponseCode为自定义值,比如422时,httpURLConnection ...
- Javascript DOM 编程艺术———总结-2
第三章: 一,DOM: Document(文档) Object(对象):用户定义对象,内建对象,宿主对象. Model(模型) 二,节点: 元素节点:诸如:<body> <p> ...
- Vue实例对象的数据选项
前面的话 一般地,当模板内容较简单时,使用data选项配合表达式即可.涉及到复杂逻辑时,则需要用到methods.computed.watch等方法.本文将详细介绍Vue实例对象的数据选项 data ...
- swift3.0 顶部状态栏隐藏
横屏进入手机状态栏是隐藏的,但是调用了相册选去图片后顶部状态栏又显示了出来,网上查阅按照以下方式: override var prefersStatusBarHidden: Bool{ return ...
- IntelliJ IDEA(2017.2)安装和破解(转)
如果有一定的经济基础,请支持正版,这里提供破解方法. 一.下载并安装, IntelliJ IDEA的官网:https://www.jetbrains.com 二.破解. 百度下载一个 Jetbrain ...