java.lang.IllegalStateException错误!!怎么解决?

Ryo6688 2008-06-10 02:20:43
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'servlet1.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%
String name=request.getParameter("filename");
String filename=new String(name.getBytes("ISO-8859-1"),"GBK");
//获得服务器上下载文件的物理路径 *注意如传参带中文要改tomcat里的server文件的配置
String filePath=application.getRealPath("/load")+"/"+filename;
//生成文件对象
File file=new File(filePath);
long fileLength=file.length();//获得文件长度
//设定下载文件长度
response.setContentLength((int)fileLength);
//设定文件MIME类型为application/x-msdownload下载类型
response.setContentType("application/x-msdownload");
//设定下载文件名
response.setHeader("Content-Disposition","attachment;filename="+new String (filename.getBytes("GBK"),"ISO-8859-1"));
FileInputStream fis=new FileInputStream(file);
BufferedInputStream bis=new BufferedInputStream(fis);
//使用缓冲写,提高速度
byte[] buff=new byte[2048];
OutputStream os=response.getOutputStream();//获得输出流
int k=0;
while((k=bis.read(buff,0,buff.length))!=-1){
os.write(buff,0,k);
}
os.close();
%>
</body>
</html>

用个JSP页写的下载:
找了一些资料说是,在程序中添加:
out.clear();
out = pageContext.pushBody();
可是这2行代码添加在什么位置呀?

...全文
4972 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ryo6688 2008-06-10
  • 打赏
  • 举报
回复
没有回车什么的,关注中.....
zidasine 2008-06-10
  • 打赏
  • 举报
回复
java.lang.IllegalStateException: getOutputStream() has already been called for this response
是不是页面中有多余的空格或者回车啊
我遇到过在结尾%>的地方多了回车就报这个
Ryo6688 2008-06-10
  • 打赏
  • 举报
回复
严重: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:599)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:117)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:191)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
at org.apache.jsp.servlet1_jsp._jspService(servlet1_jsp.java:113)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.zg.servlet.glq.doFilter(glq.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
错误报告!
burningice44 2008-06-10
  • 打赏
  • 举报
回复
楼主啊,什么位置报的错啊
错误能不能全点儿
Ryo6688 2008-06-10
  • 打赏
  • 举报
回复
os.close();
%>
out.clear();
out = pageContext.pushBody();
</body>
</html>
这样了,也不对!
interpb 2008-06-10
  • 打赏
  • 举报
回复
那就根据上面那个链接 写在jsp里面
Ryo6688 2008-06-10
  • 打赏
  • 举报
回复
os.write(buff,0,k);

放在这行后面,不行!

os.close();
放在这行后面也不行!
interpb 2008-06-10
  • 打赏
  • 举报
回复
http://blog.csdn.net/haley2/archive/2008/01/02/2010642.aspx

你看看这个帖子
interpb 2008-06-10
  • 打赏
  • 举报
回复
os.write(buff,0,k);

放在这行后面试试
zoroz 2008-06-10
  • 打赏
  • 举报
回复
帮顶……

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧