【Jsp】把Java写到Respond输出流里面供用户下载
来源:互联网 发布:淘宝联盟一个月赚多少 编辑:程序博客网 时间:2024/06/15 18:13
把Java中的内容输出到文件大家都会了,输入输出流是每一个Java程序猿的必须课。在《【Java】打印流与缓冲区读者完成输入与输出到文件操作》(点击打开链接)与《【Java】输入与输出与JDK1.5之后的新型字符串StringBuilder》(点击打开链接)之中,我都说过这个问题。但是在Jsp上,怎么把Java内容直接把文件写到网页上给用户下载呢?一般一些导出功能实现,就需要这样弄。
具体如下图:
用户访问download这个Servlet,就直接提供一个“中文是没有问题.txt”的文件给用户下载。里面的内容是在Java中直接写到Respond输出流的,在服务器上根本没有这个文件。中文是没有问题.txt中的“呵呵”是在用户访问download这个Servlet才构造出来的。
你可以写如下的Servlet,无须任何插件,构造一个Respond输出流给打印流PrintWriter打印内容就行了。
其余什么插件输出到文件同理,你可以改一改它的write方法就OK了。
以下的Servlet采用了Servlet3.0写法,指明此Servlet的访问地址是/download,测试是不要写成localhost:8080/工程名/download/,这样是不行的,后面没有斜杠,service方法是原来doPost与doGet方法的集合,一般不这样写:
import java.io.*;import java.net.*;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;@SuppressWarnings("serial")@WebServlet(name = "download", urlPatterns = { "/download" })public class download extends HttpServlet {protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {//在SSH框架中,可以通过HttpServletResponse response=ServletActionContext.getResponse();取出Respond对象//清空一下response对象,否则出现缓存什么的response.reset();//指明这是一个下载的respondresponse.setContentType("application/x-download");//这里是提供给用户默认的文件名String filename = "中文是没有问题的.txt";//双重解码、防止乱码filename = URLEncoder.encode(filename,"UTF-8");response.setCharacterEncoding("UTF-8");response.addHeader("Content-Disposition","attachment;filename=" + filename);/* * 这里是最关键的一步。 * 直接把这个东西写到response输出流里面,给用户下载。 * 如果输出到c:\b.txt就是: * PrintWriter printwriter = new PrintWriter(new FileWriter("c:\\b.txt",true)); * 现在写好respond头,就写成: * PrintWriter printwriter = new PrintWriter(response.getOutputStream()); * 把PrintWriter的输出点改一下 */PrintWriter printwriter = new PrintWriter(response.getOutputStream());printwriter.println("呵呵!");//打印流的所有输出内容,必须关闭这个打印流才有效printwriter.close();}}
0 0
- 【Jsp】把Java写到Respond输出流里面供用户下载
- 【Servlet】把文件写到Respond输出流里面供用户下载
- java输出EXCEL并提供下载 源码
- 流合并(把多个文件里面的内容写到一个文件里面)
- 把error.jsp中的Exception通过Log4j写到后台文件,显示友善信息给用户
- 数据库导出到EXAL 再供用户下载
- 怎样把java输出流输出到打印机上呢?
- 如何在jsp里面写java代码
- 在jsp里面写java代码
- 把html写在控制器中,然后输出到view里面
- 试试把xml和javascript写到同一个文件里面
- 把视频数据写到文件里面去来分析
- 通过JAVA写数据到XML里面
- 从CListCtrl里面把数据写到数据库里面,顺序错误的问题
- jsp把图片写到数据库的代码,多种写法
- jsp把图片写到数据库的代码,多种写法
- IPA 包不经过APP Store直接发布到网站供用户下载安装
- iOS — IPA 包不经过APP Store直接发布到网站供用户下载安装
- STM32L0xx_HAL_Driver库的使用——UART续
- ViewPager中添加和删除Fragment
- 第三章作业3.22
- POJ 1080 Human Gene Functions(DP)
- Android弹出窗口PopuWindow
- 【Jsp】把Java写到Respond输出流里面供用户下载
- IOS 记录用户登陆状态 第二次免登陆
- iOS开发--UIPickerView的动画效果
- JAVA参数传值
- 堆(heap)和栈(stack)有什么区别??
- poj 2112 Optimal Milking (输出超限)
- 川大oj 4429
- 动态页面技术(jsp)
- 第51页17题