您的位置:首页 > 编程语言 > Java开发

Str问题java.lang.IllegalStateException: getOutputStream() has already been called for this response的解决

2015-08-21 09:51 639 查看
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub

response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");

String username=null;
try {
<span style="white-space:pre">			</span>//解决接受的username乱码的问题
username = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
System.out.println(username);
UserService userService=new UserService();
User user=userService.getUserByUsername(username);

String filterFilename=null;
try {
//将user.getOldfilename(文件原来的名字)进行utf-8编码,防止中文乱码
filterFilename=java.net.URLEncoder.encode(user.getOldfilename(),"utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

//设置一个头,告诉浏览器有文件下载
response.setHeader("Content-Disposition","attachment;filename="+filterFilename);
//得到要下载文件的绝对路径
String filePath=this.getServlet().getServletContext().getRealPath("/file");
//得到要下载文件的全路径
String fileAllPath=filePath+"\\"+user.getNewfilename();

FileInputStream fis=null;
OutputStream oStream=null;
byte []buffer=new byte[1024];
int len=0;

try {
//将文件放入输入流
fis=new FileInputStream(fileAllPath);
//得到输出流
oStream=response.getOutputStream();
while((len=fis.read(buffer))>0)
{
oStream.write(buffer, 0, len);
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
oStream.close();
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

//一定要返回null,不然会报错:java.lang.IllegalStateException: getOutputStream() has already been called for this response
return null;
}
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Javaee Struts action