`
nannan408
  • 浏览: 1756602 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jsp关于respose.getOutputStream()异常的解决方案

 
阅读更多

     由于jsp隐式调用和respose.getOutputStream()显示调用,都都用到了jsp内置对象,如果不加处理,会报错为"....called"。

   解决方案分两种:(1)如果是一般纯jsp嵌入式的java代码,则在respose.getOutputStream()的前面将out重置,即加上 

   out.clear();
   out = pageContext.pushBody();

 

这两句即可。

(2)如果是struts2或者struts1等架构,则只需要在调用out前,加上out.flash(),即可。

下面举个jsp例子,直接放tomcat或下可以跑

写道
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page language="java" import="java.io.*,java.util.zip.*"%>
<%
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 'testZip.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>
<%
out.clear();
out = pageContext.pushBody();

//找到后台文件夹
ZipOutputStream zos = null;
BufferedReader in = null;
//String fileName = "d:\\test1.csv";
String srcDirectoryName = "e:\\test";
zos = new ZipOutputStream(response.getOutputStream());
OutputStreamWriter writer = new OutputStreamWriter(zos);
try {
File srcDirectory = new File(srcDirectoryName);
if (!srcDirectory.isDirectory()) {
return;
}
String filename = "users.zip";
response.setHeader("content-disposition",
"attachment; filename=" + filename);
response.setCharacterEncoding("UTF-8");
// 不设置ContentType的话会乱码
response.setContentType("application/zip");
//如果文件夹存在,那么把文件夹里面的文件全部读进zip里面
String[] srcFileNames = srcDirectory.list();
if (0 == srcFileNames.length) {
return;
}
for (int i = 0; i < srcFileNames.length; i++) {
//如果存在文件则写
String srcFileName = srcFileNames[i];
String srcFileAllName = srcDirectoryName + "\\"
+ srcFileName;
File file = new File(srcFileAllName);
if (file.isFile()) {
ZipEntry zipEntry = new ZipEntry(srcFileName);
in = new BufferedReader(new FileReader(srcFileAllName));
zos.putNextEntry(zipEntry);
int ch;
//当压缩过程未结束时继续读写
while ((ch = in.read()) != -1) {
zos.write(ch);
System.out.println(ch);
}
in.close();
in = null;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != in) {
in.close();
}
if (null != zos) {
zos.close();
}
if (null != writer) {
writer.close();
}
}
%>

</body>
</html>

 以上需要注意两点:(1)先清理out

                           (2)文件夹下的文件起名最好是英文和数字,不然文件名有乱码。

0
0
分享到:
评论

相关推荐

    jsp开发实战

    jsp九大内置对象。page,applisrt.resquset,respose....

    Python接口测试get请求过程详解

    print(respose.status_code) # text为返回的数据 print(respose.text)  请求结果:返回状态码为200,表明请求的服务器响应正常,但不能说明该接口正常  判断接口正常,看返回数据,如果返回数据达

    ASP.NET打开新页面而不关闭原来的页面 实例代码

    代码如下:Respose.Write(“[removed]window.open(‘”+ url +”‘);[removed]”); (打开简洁窗口):Respose.Write(“[removed]window.open(‘” + url + “‘,”,’resizable=1,scrollbars=0,status=1,...

    TRANS-RESPOSE-1.rar_transient

    information on transient response

    robotframework接口测试案例.pdf

    ${respose} post request _session ${api} data=${data} headers=${headers} #校验请求是否成功 Should Be Equal As Strings ${respose.status_code} 200 ${json}= set variable ${respose.json()} #返回请求结果 ...

    创建和显示CAD的Controlbar

    创建和显示CAD的Controlbar。内嵌一个对话框,可以响应控件消息。代码非常简洁,有注释,...(Create CAD controlbar.There is a Inner embedded dialog can respose.It is helpful to learn cad control bar and arx.)

    实际项目中绝对实用的JavaScript公共类 - JavaScriptClass

    实战项目中后台cs文件弹出提示或者转向,或者模态窗口弹出,模态窗口弹出提示后刷新父页面或者跳转新页面等等,总结了10来个常用的方法,可以直接加载到...简化您每次都要Respose.write(大一堆打印脚本)。非常方便调用.

    跨域的解决方案有多重JSONP、Flash、Iframe等,当然还有CORS(跨域资源共享,Cross-Origin Resource Sharing)

    跨域的解决方案有多重JSONP、Flash、Iframe等,当然还有CORS(跨域资源共享,Cross-Origin Resource Sharing)

    JSP内置对象

    session application request respose 对象的讲解

    天轰穿系列教程之-19核心对象[二](Response,server)

    天轰穿系列教程之-19核心对象[二](Response,server)天轰穿系列教程之-19核心对象[二](Response,server)天轰穿系列教程之-19核心对象[二](Response,server)天轰穿系列教程之-19核心对象[二](Response,server)天轰...

    EOS运算逻辑中获取session和request

    在普元Primeton EOS运算逻辑中获取HttpSession和Httprequest以及application 在普元Primeton EOS运算逻辑中获取HttpSession和Httprequest以及application

    python实现异步回调机制代码分享

    def ds_asyncore(addr,callback,timeout=5): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(addr) r,w,e = select.select([s],[],[],timeout) if r: respose_data=s.recv(1024) callback...

    NodeHelloServer:简单的 Hello World Node.js 服务器

    调用 http.createServer(function(request, respose) { ... } 侦听以下路由: “/” -&gt; 响应返回“Hello World”字符串 "/jedi/FirstName/Lastname 路由 -&gt; 响应返回用户的绝地姓名 启动服务器并监听 8080 端口上...

    微信投票相关问题.txt

    具体一点说把,首先是客户端(我们)发出请求(Request)给服务端(投票网站),跟他们说,我们需要看他们网站的信息,然后服务端就会回复(Respose)我们,我们再把填好的表单发给他们(Request),他们收到后就会...

    基于JAVA的WEB服务器与图形化浏览器

    java实现模拟tomcat服务器,利用socket接手请求,resquest和respose处理请求发送响应,编写了Servlet接口,用户需要在web.xml配置全类名和URL,编写servlet实现类就可以使用,客户端浏览器,使用java的Swing组件,...

    AppxInstaller, 在 Windows 存储外安装Uwp应用程序的工具.zip

    AppxInstaller, 在 Windows 存储外安装Uwp应用程序的工具 这种repostitory在respose中是以一些关于通用 Windows 平台( UWP ) 应用的错误和错误信息( 特别是关于它们对 Windows 存储和suppsed无法在它的外部发布)的...

    跨平台python异步回调机制实现和使用方法

    def ds_asyncore(addr,callback,timeout=5): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(addr) r,w,e = select.select([s],[],[],timeout) if r: respose_data=s.recv(1024) callback...

    aliasing.zip_The Signal_alising _alliasing_distortion

    This program illustrates the effect of alising of frequency leading to signal distortion,the output graph illustrates frequency respose due to alliasing,easy for students learning DSP

    浅析node.js中close事件

    本文简单介绍了http.ServerRespose对象的close事件,并给出了相关实例,推荐给需要的小伙伴参考下吧。

    企业级网站监控系统

    respose time page keyword customize header customize post body support get post put method send to nightingale、open-falcon、statsd、prometheus Architecture ScreenShot FAQ default user/password:admin...

Global site tag (gtag.js) - Google Analytics