- 浏览: 77997 次
- 性别:
- 来自: 广州
文章分类
最新评论
JSP文件下载及出现getOutputStream() has already been called for this response的解决方法
- 博客分类:
- Java
一、采用RequestDispatcher的方式进行
1、web.xml文件中增加
<mime-mapping> <extension>doc</extension> <mime-type>application/vnd.ms-word</mime-type> </mime-mapping>
2、程序(JSP)如下:
<%@page language="java" import="java.net.*" pageEncoding="gb2312"%> <% response.setContentType("application/x-download");//设置为下载application/x-download String filenamedownload = "/系统解决方案.doc";//即将下载的文件的相对路径 String filenamedisplay = "系统解决方案.doc";//下载文件时显示的文件保存名称 filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay); try { RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload); if(dispatcher != null) { dispatcher.forward(request,response); } response.flushBuffer(); } catch(Exception e) { e.printStackTrace(); } finally { } %>
二、采用文件流输出的方式下载
1、web.xml文件中增加
<mime-mapping> <extension>doc</extension> <mime-type>application/vnd.ms-word</mime-type> </mime-mapping>
2、程序(JSP)如下:
<%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%><% //关于文件下载时采用文件流输出的方式处理: //加上response.reset(),并且所有的%>后面不要换行,包括最后一个; //因为Application Server在处理编译jsp时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter, //而你却要进行流输出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制, //就会发生:getOutputStream() has already been called for this response的错误 //详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270 //而且如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件 //下载下来的文件中就会多出一些换行符0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。 response.reset();//可以加也可以不加 response.setContentType("application/x-download");//设置为下载application/x-download // /../../退WEB-INF/classes两级到应用的根目录下去,注意Tomcat与WebLogic下面这一句得到的路径不同,WebLogic中路径最后没有/ System.out.println(this.getClass().getClassLoader().getResource("/").getPath()); String filenamedownload = this.getClass().getClassLoader().getResource("/").getPath() + "/../../系统解决方案.doc"; String filenamedisplay = "系统解决方案.doc";//系统解决方案.txt filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay); OutputStream output = null; FileInputStream fis = null; try { output = response.getOutputStream(); fis = new FileInputStream(filenamedownload); byte[] b = new byte[1024]; int i = 0; while((i = fis.read(b)) > 0) { output.write(b, 0, i); } output.flush(); } catch(Exception e) { System.out.println("Error!"); e.printStackTrace(); } finally { if(fis != null) { fis.close(); fis = null; } if(output != null) { output.close(); output = null; } } %>
发表评论
-
HTTPClient
2012-12-21 21:11 0public class RenRen { // The ... -
Export To Excel - Testing
2012-12-18 13:15 0MainTest ..... Map configM ... -
Export To Excel - ExcelUtils.java [Version 0.2]
2012-12-18 13:11 9import java.io.BufferedReader; ... -
Export To Excel - Action Oupt Excel
2012-11-23 13:49 10public String doAction(Work ... -
Export To Excel - ExcelUtils.java
2012-12-17 16:31 3import java.io.BufferedReader; ... -
Export To Excel - ExcelDAO.java
2012-12-18 12:55 5import java.sql.CallableStateme ... -
Export To Excel - commonExcelStyle.css
2012-12-18 12:55 6body { FONT-FAMILY: "Ari ... -
Export To Excel - ExcelConstants.java
2012-12-18 12:55 5/** * <p><b> * ... -
Export To Excel - ExcelRowList.java
2012-12-18 09:55 5import java.util.ArrayList; im ... -
Export To Excel - ExcelRowItem.java
2012-12-17 16:32 7import java.util.ArrayList; im ... -
Export To Excel - ExcelInfo.java
2012-11-23 13:50 8/** * <p><b> * ... -
Export To Excel - ExcelColList.java
2012-11-23 13:50 6import java.util.ArrayList; im ... -
Export To Excel - ExcelColItem.java
2012-11-23 13:50 11Version 0.1 import java.uti ... -
Export To Excel - ExcelCellItem.java
2012-11-23 13:49 7public class ExcelCellItem { ... -
Util
2012-12-17 16:32 676import java.io.BufferedReader; ... -
DMSUtil
2012-12-17 16:31 707import java.io.ByteArrayInputSt ... -
PooledConnectionManager
2012-12-17 16:31 926import java.sql.Connection; im ... -
FloatValidator
2012-10-05 13:42 772public class FloatValidator ext ... -
XmlHelper
2012-08-31 09:33 1268import java.io.ByteArrayInputSt ... -
XMLEncode
2012-08-30 18:43 1054public class XMLEncode implemen ...
相关推荐
在Java Web开发中,"getOutputStream() has already been called for this response" 是一个常见的错误,通常出现在使用Servlet或JSP时。这个错误意味着在HTTP响应中,`getOutputStream()`已经被调用,然后尝试再次...
1.在tomcat6.0下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法 在tomcat6.0下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有...
验证码出现getOutputStream() has already been called for this response错误解决
纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....
解决了getOutputStream() has already been called for this response. 并将产生验证码的逻辑从JSP页面中分离出来,单独写了一个类 便于重用。
解决“Cannot forward after response has been committed”的方法包括: 1. **检查和修正逻辑**:确保在请求处理的任何阶段,一旦响应被提交,就不再进行转发或重定向。 2. **使用try-catch-finally**:在可能抛出...
在Java和JSP中,实现文件下载是一项常见的任务,它涉及到服务器与客户端之间的交互,以及对文件流的处理。下面将详细讲解如何使用Java和JSP来实现这一功能。 首先,我们从`downloadtool.jsp`开始,这是一个用户界面...
标题:JSP文件下载的解决方法 描述:本文将探讨并提供多种方法来解决JSP文件下载的问题,重点介绍源代码级别的实现方案。 在Web开发中,文件下载是常见的需求之一,尤其在企业级应用中,用户可能需要下载报告、...
本话题关注的是如何在JSP页面上实现文件下载功能,这对于构建一个交互性强、功能丰富的Web应用是至关重要的。以下我们将详细探讨这个主题。 首先,我们需要理解JSP页面的基本结构和工作原理。JSP页面由HTML、CSS、...
"基于jsp的文件上传下载"是Web应用程序中的常见需求,涉及到客户端与服务器之间的数据交互。本项目详细阐述了如何利用JSP实现文件的上传和下载功能。 首先,文件上传涉及的主要技术有HTML表单、Servlet和多部分请求...
本文将详细介绍如何通过JSP实现文件的下载功能,并针对特定场景提供解决方案。 #### 关键知识点 ### 1. JSP文件下载的基本流程 #### 1.1 设置响应头 在进行文件下载之前,首先需要设置HTTP响应头`Content-...
### 使用JSP下载Excel文件知识点解析 #### 一、引言 在Web开发中,经常需要将服务器上生成的数据导出为Excel文件供用户下载。本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到...
`jspSmartUpload`是一个非常实用的库,它简化了处理文件上传和下载的复杂性。本文将深入探讨如何使用`jspSmartUpload`来实现这两个功能,并详细解释其工作原理和相关知识点。 首先,`jspSmartUpload`是一个基于Java...
### Java Response 下载文件方法详解 在Web应用开发过程中,经常需要实现文件的上传与下载功能。其中,通过`java response`实现文件下载是常见需求之一。本文将深入解析如何利用Java中的`HttpServletResponse`对象...
1. 设置响应头:在JSP页面中,我们需要使用`response`对象来设置响应头,指示浏览器进行文件下载。如下所示: ```jsp response.setContentType("application/octet-stream"); // 设置Content-Type response.set...
`response.getOutputStream()` 方法是Servlet API的一部分,它用于获取与HTTP响应关联的输出流对象。这个方法在服务器端处理请求时非常常见,尤其在构建动态网页时。 当我们处理一个HTTP请求时,服务器会创建一个`...
### jsp页面文件下载功能实现 #### 概述 在Web开发中,文件下载是一项基本且常用的功能。本文将详细介绍如何使用JSP技术实现文件下载功能,并解释代码中涉及的关键概念和技术点。 #### 核心知识点解析 ##### 1. ...
本文将深入探讨如何使用JSP来实现文件的上传和下载功能,这对于构建交互性强的Web应用来说至关重要。 **一、文件上传** 文件上传通常涉及到客户端的表单提交和服务器端的数据处理。在JSP中,我们可以使用HTML的`...
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)和jspSmartUpload库来实现文件的上传与下载功能。JSP是一种动态网页技术,它允许开发者在HTML中嵌入Java代码,从而创建交互式的Web应用程序。而jsp...