编了一个Servlet,出现java.lang.IllegalStateException: getWriter() has already been called for this

packagecom.lai;importjava.io.*;importjavax.servlet.ServletException;importjavax.servl... package com.lai;

import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet3 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//演示下载文件
response.setHeader("Content-Disposition", "attachment;filename=girl.jpg");
//打开文件。说明一下web站点下载文件的原理
//1.获取到要下载文件的全路径
String path=this.getServletContext().getRealPath("/image/girl.jpg");
//System.out.println("path="+path);
//2.创建一个文件输入流
FileInputStream fis=new FileInputStream(path);
//做一个缓冲字节数组
byte buff[]=new byte[1024];
int len=0;//表示实际每次读取了多少个字节
OutputStream os=response.getOutputStream();

while((len=fis.read(buff))>0){

os.write(buff, 0, len);
}
//关闭
os.close();
fis.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}

}
刷新页面的时候就出错,好像是服务器出错了吗?
展开
 我来答
yf920502
推荐于2017-10-06 · 超过15用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:24.7万
展开全部
把PrintWriter out = response.getWriter();删掉,因为你已经有一个OutputStream的。。建议你下次把那些get和post方法里面的代码都删掉再写你自己想写的代码。那样就不会影响进行别的操作!希望可以帮到你。
百度网友e3b1108
2013-07-23 · 超过21用户采纳过TA的回答
知道答主
回答量:50
采纳率:100%
帮助的人:36.1万
展开全部
getWriter() 和getOutputStream() 只能用一个,一个字符输出流,一个字节输出流,都获取后就会出现这个异常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Anter_0
2013-07-22 · TA获得超过353个赞
知道小有建树答主
回答量:461
采纳率:100%
帮助的人:193万
展开全部
去掉 PrintWriter out = response.getWriter();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式