请问各位大侠 为什么会出现如下问题?
附件下载后 附件内容如下:
圣诞节快乐(附件内容)
===================错误信息如下所示====================================
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title></title>
</head>
<body bgcolor=#dae7f8>
<a href="#" onClick="history.go(-1)">返回</a>
<h1>JSP页面异常信息</h1>
请求的URL:http://10.10.11.183:7001/test/jsp/workflow/downFile.jsp
异常类型:class java.io.IOException
<br>
异常描述:response already committed
<br>
异常堆栈:<br>
<pre>
java.io.IOException: response already committed
at weblogic.servlet.jsp.JspWriterImpl.clear(JspWriterImpl.java:56)
at jsp_servlet._jsp._workflow.__downfile._jspService(__downfile.java:266)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.jamonapi.JAMonFilter.doFilter(JAMonFilter.java:57)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at gap.authority.filter.FunOrgAuFilterServlet.doFilter(FunOrgAuFilterServlet.java:35)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at gap.authority.filter.FilterServlet.doFilter(FilterServlet.java:73)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at sgcc.global.util.LoginManager.doFilter(LoginManager.java:358)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at sgcc.global.util.LoginManager.doFilter(LoginManager.java:358)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at venus.frames.web.SetEncodingFilter.doFilter(SetEncodingFilter.java:33)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3242)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2010)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1916)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
</pre>
</body>
</html>
附件下载实现代码如下:
<%@ page contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@ include file="/jsp/include/global.jsp"%>
<%@ page import="venus.pub.util.Encode"%>
<%@ page import="java.io.*"%>
<%
String fileName = (String)request.getSession().getAttribute("fileName");
String path = (String)request.getSession().getAttribute("path");
path = Encode.decode(path); //解密
try {
FileInputStream oFIS = new FileInputStream((String) path);
response.reset();
response.setContentType("application/x-download; charset=GBK");
String guessCharset = request.getCharacterEncoding(); /*根据request的locale 得出可能的编码*/
fileName = new String(fileName.getBytes(guessCharset), "ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
ServletOutputStream oOs = response.getOutputStream();
DataOutputStream oDos = new DataOutputStream(oOs);
if (null != oFIS) {
int nLength;
byte[] abBuffer = new byte[1024];
while ((nLength = oFIS.read(abBuffer, 0, 1024)) > 0)
oDos.write(abBuffer, 0, nLength);
oOs.close();
oFIS.close();
oDos.close();
out.clear();
out = pageContext.pushBody();
}
} catch (FileNotFoundException e) {
response.getWriter().println(
"<title>错误</title><center><br><br><br>找不到您所指定的文件,该文件有可能被删除,请与系统管理员联系。<br><input type='button' value='返回' onclick='history.go(-1)'/> <input type='button' value='关闭' onclick='window.close()'/></center>");
}
%>
附件列表:
<layout:collectionItem width="20%" title="附件" style="text-align:center;">
<bean:define id="filename" name="rmBean" property="acc_name"/>
<bean:define id="target" name="rmBean" property="acc_url"/>
<%
if(target!=null&&!target.equals("")){
String path = target.toString();
request.getSession().removeAttribute("path");
request.getSession().setAttribute("path",Encode.encode(path));
request.getSession().removeAttribute("fileName");
request.getSession().setAttribute("fileName",filename.toString());
%>
<a href="<%=request.getContextPath()%>附件URL地址信息" target="_parent" title="<%=filename.toString()%>">
<%=(filename.toString().length()>6?filename.toString().substring(0,6)+"......":filename.toString())%>
</a>
<%} %>
</layout:collectionItem>