下载PDF时抛错,操作是,在下载进行中时,刷新了页面。后台就抛出了这个错请各位大侠帮忙看看!
小弟在此赶鸡不尽!!!
抛错信息:
12/11/09 16:04:49 java.lang.Exception: 生成response出错!
12/11/09 16:04:49 at com.Pdf.fileToResponseStream(Pdf.java:231)
12/11/09 16:04:49 at com.Pdf.pdf(Pdf.java:106)
12/11/09 16:04:49 at com.NewServlet.downloadMethod(NewServlet.java:2013)
12/11/09 16:04:49 at com.NewServlet.process(NewServlet.java:174)
12/11/09 16:04:49 at com.RootServlet.doPost(RootServlet.java:82)
12/11/09 16:04:49 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
12/11/09 16:04:49 at com.RootServlet.service(RootServlet.java:47)
12/11/09 16:04:49 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
12/11/09 16:04:49 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
12/11/09 16:04:49 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
12/11/09 16:04:49 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
12/11/09 16:04:49 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
12/11/09 16:04:49 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
12/11/09 16:04:49 12/11/09 16:04:49 delete 89388_0322642.pdf1 success!
12/11/09 16:04:49 delete 89388_8122641.pdf2 success!
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
12/11/09 16:04:49 at java.lang.Thread.run(Thread.java:534)
12/11/09 16:04:49 Caused by: com.evermind.server.http.HttpIOException: Connection reset by peer: socket write error
12/11/09 16:04:49 at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:250)
12/11/09 16:04:49 at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:151)
12/11/09 16:04:49 at java.io.BufferedOutputStream.write(BufferedOutputStream.java:106)
12/11/09 16:04:49 at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
12/11/09 16:04:49 at com.Pdf.fileToResponseStream(Pdf.java:222)
12/11/09 16:04:49 ... 14 more
INFO com.NewServlet - at LogCommImpl.java:26
Exception caught: java.lang.Exception: 生成response出错! ERROR com.NewServlet - at LogCommImpl.java:45
IOException when trying to include the error page path /Error.jsp com.evermind.server.http.HttpIOException: Connection reset by peer: socket write error
at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:250)
at com.evermind.server.http.EvermindJSPWriter.writeOut(EvermindJSPWriter.java:456)
at com.evermind.server.http.EvermindJSPWriter.jspflush(EvermindJSPWriter.java:373)
at com.evermind.server.http.EvermindJSPWriter.close(EvermindJSPWriter.java:345)
at oracle.jsp.runtime.OracleJspRuntime.extraHandlePCFinally(OracleJspRuntime.java:1460)
at _error._jspService(_error.java:97)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:121)
at com.RootServlet.include(RootServlet.java:126)
at com.RootServlet.handelException(RootServlet.java:185)
at com.RootServlet.doPost(RootServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at com.RootServlet.service(RootServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:534)
下载代码:try {
in = new BufferedInputStream(new FileInputStream(printFile
.getPath()));
byte[] b=new byte[in.available()];
in.read(b);
in.close();
response.reset();
if (printFile.getName().substring(
printFile.getName().lastIndexOf(".")).equals(".xls")) {
response.setContentType("application/vnd.ms-excel");
String filename = new String(printFile.getName()
.getBytes("GBK"), "ISO8859_1").trim();
response.setHeader("Content-Disposition", streamType
+ ";filename=" + filename);
} else if (printFile.getName().substring(
printFile.getName().lastIndexOf(".")).equals(".pdf")) {
response.setContentType("application/pdf");
String filename = new String(printFile.getName()
.getBytes("GBK"), "ISO8859_1").trim();
response.setHeader("Content-Disposition", streamType
+ ";filename=" + filename);
} else {
response.setContentType("text/html");
}
out = new BufferedOutputStream(response.getOutputStream());
out.write(b);
out.flush();
out.close();
} catch (IOException e) {
throw new Exception("生成PDF出错!", e);
} catch (Exception e) {
throw new Exception("生成PDF出错!", e);
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
小弟在此赶鸡不尽!!!
抛错信息:
12/11/09 16:04:49 java.lang.Exception: 生成response出错!
12/11/09 16:04:49 at com.Pdf.fileToResponseStream(Pdf.java:231)
12/11/09 16:04:49 at com.Pdf.pdf(Pdf.java:106)
12/11/09 16:04:49 at com.NewServlet.downloadMethod(NewServlet.java:2013)
12/11/09 16:04:49 at com.NewServlet.process(NewServlet.java:174)
12/11/09 16:04:49 at com.RootServlet.doPost(RootServlet.java:82)
12/11/09 16:04:49 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
12/11/09 16:04:49 at com.RootServlet.service(RootServlet.java:47)
12/11/09 16:04:49 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
12/11/09 16:04:49 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
12/11/09 16:04:49 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
12/11/09 16:04:49 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
12/11/09 16:04:49 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
12/11/09 16:04:49 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
12/11/09 16:04:49 12/11/09 16:04:49 delete 89388_0322642.pdf1 success!
12/11/09 16:04:49 delete 89388_8122641.pdf2 success!
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
12/11/09 16:04:49 at java.lang.Thread.run(Thread.java:534)
12/11/09 16:04:49 Caused by: com.evermind.server.http.HttpIOException: Connection reset by peer: socket write error
12/11/09 16:04:49 at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:250)
12/11/09 16:04:49 at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:151)
12/11/09 16:04:49 at java.io.BufferedOutputStream.write(BufferedOutputStream.java:106)
12/11/09 16:04:49 at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
12/11/09 16:04:49 at com.Pdf.fileToResponseStream(Pdf.java:222)
12/11/09 16:04:49 ... 14 more
INFO com.NewServlet - at LogCommImpl.java:26
Exception caught: java.lang.Exception: 生成response出错! ERROR com.NewServlet - at LogCommImpl.java:45
IOException when trying to include the error page path /Error.jsp com.evermind.server.http.HttpIOException: Connection reset by peer: socket write error
at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:250)
at com.evermind.server.http.EvermindJSPWriter.writeOut(EvermindJSPWriter.java:456)
at com.evermind.server.http.EvermindJSPWriter.jspflush(EvermindJSPWriter.java:373)
at com.evermind.server.http.EvermindJSPWriter.close(EvermindJSPWriter.java:345)
at oracle.jsp.runtime.OracleJspRuntime.extraHandlePCFinally(OracleJspRuntime.java:1460)
at _error._jspService(_error.java:97)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:121)
at com.RootServlet.include(RootServlet.java:126)
at com.RootServlet.handelException(RootServlet.java:185)
at com.RootServlet.doPost(RootServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at com.RootServlet.service(RootServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:534)
下载代码:try {
in = new BufferedInputStream(new FileInputStream(printFile
.getPath()));
byte[] b=new byte[in.available()];
in.read(b);
in.close();
response.reset();
if (printFile.getName().substring(
printFile.getName().lastIndexOf(".")).equals(".xls")) {
response.setContentType("application/vnd.ms-excel");
String filename = new String(printFile.getName()
.getBytes("GBK"), "ISO8859_1").trim();
response.setHeader("Content-Disposition", streamType
+ ";filename=" + filename);
} else if (printFile.getName().substring(
printFile.getName().lastIndexOf(".")).equals(".pdf")) {
response.setContentType("application/pdf");
String filename = new String(printFile.getName()
.getBytes("GBK"), "ISO8859_1").trim();
response.setHeader("Content-Disposition", streamType
+ ";filename=" + filename);
} else {
response.setContentType("text/html");
}
out = new BufferedOutputStream(response.getOutputStream());
out.write(b);
out.flush();
out.close();
} catch (IOException e) {
throw new Exception("生成PDF出错!", e);
} catch (Exception e) {
throw new Exception("生成PDF出错!", e);
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return null 是在类里面还是在前台jsp中写呢?不太懂,最好是能有代码就好了!在线等 !
try{
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx
.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
String filename2 = name + ".pdf";
response.setHeader("Content-disposition",
"attachment; filename="
+ new String(filename2.getBytes("gb2312"),
"iso8859-1"));
response.setContentType("application/pdf");
response.setContentLength(ba.size());
ServletOutputStream os = response.getOutputStream();
ba.writeTo(os);
ba.flush();
ba.close();
os.flush();
os.close();
}catch(Exception ex){
System.out.println("PDF生成异常:"+ex.getMessage());
}
return null;
没有用到框架。。
String po = request.getParameter("isTruePdf");
Pdf pppf=new Pdf();
pppf.pdf(request, response,po);
}
while ((i = in.read()) != -1) {
if(in.available()<response.getBufferSize()){
out.write(i);
}
}
求解
!!!!!!散分了!!!
token只会作用于一次请求完毕后,客户端刷新,form里面的数据重复提交 ,而不适用于上述情况,
上述问题是,第一次请求未响应到客户端,客户端便重新请求所造成的。。
希望大家再帮忙想想办法!!谢谢了。
处理方式:
使用AJAX去下载,完毕!开始散分了!!!大伙儿快快过来。。