// 告诉Struts 执行完 Action 就行了,不用再去调用结果响应的操作
ActionContext.getContext().getActionInvocation().getProxy().setExecuteResult(false);
// 取得 HttpServletResponse
HttpServletResponse response = ServletActionContext.getResponse();
// 下面是输出(一定要注意编码)
InputStream in = null;
try {
response.setContentType("xls");
response.setHeader("Content-Disposition", "attachment; filename=" + encode(fileName + ".xls"));
OutputStream os = response.getOutputStream();
in = new FileInputStream(file);
int tp = in.read();
while (tp != -1) {
response.getOutputStream().write(tp);
tp = in.read();
}
os.flush();
} catch (Throwable e) {
logger.info("文件下载失败!", e);
throw new RuntimeException("文件下载失败!", e);
} finally {
try {
in.close();
} catch (IOException e) {
logger.info("关闭流失败!", e);
throw new RuntimeException("关闭流失败!", e);
}
}
相关推荐
然后,将这个输出流作为输入流提供给 Struts2 的结果配置,通过 `HttpServletRequest` 获取请求响应对象,设置响应头(如 Content-Type 和 Content-Disposition),最后将输出流写入响应输出流,完成文件下载。...
在Struts2中,我们可以将HttpServletResponse的OutputStream绑定到Action的返回值上,这样图表就会被直接输出到浏览器。 4. **Struts2结果类型配置**: 在Struts2的配置文件中,我们需要定义一个结果类型,指定当...
OGNL标签是Struts2标签库中的一个重要组成部分,它们允许开发者在JSP页面中直接使用OGNL表达式进行数据访问和处理。 ##### 5.3 功能性标签详解 除了OGNL标签外,Struts2还提供了许多功能性标签,如append、...
最后,Servlet将文件内容写入到响应输出流中,完成下载。 接下来,我们来看看Struts2的处理方式。Struts2同样依赖`commons-fileupload`库,但在处理方式上更加简洁。在Action类中,你可以定义一个`File`类型的字段...
第三种实践是利用Struts2的流结果类型(Stream Result)来直接输出图像流。这样,浏览器可以直接显示由服务器生成的图表,而无需先保存到服务器或客户端的硬盘上。 第四种方法是将图表作为附件提供下载。在Action中...
1. **Action配置**:在Struts2的配置文件中,为导出Excel的请求定义一个Action,设置其结果类型为StreamingResult或StreamingAction,这样可以直接将文件流输出到客户端。 2. **创建Workbook对象**:在Action的执行...
3. **Stream**:用于处理需要流式传输的内容,比如下载文件或图片,它能直接将数据写入到HTTP响应的输出流中。 4. **Httpheader**:允许设置HTTP响应头,比如设置缓存控制、内容类型等。 开发者还可以自定义Result ...
通常,我们会配置一个`stream`结果类型,这样可以将Excel文件作为流直接发送到客户端。 ```xml <param name="contentType">application/vnd.ms-excel <param name="contentDisposition">attachment;filename=...
使用`<s:property value="byteArray" />`标签,并设置`escape="false"`,以防止字符转义,这样Struts2会自动处理这个字节数组,将其作为图像数据输出。 最后,通过发送HTTP请求到对应的Struts2 Action,用户就可以...
1. `<result name="success" type="stream">`:指定当 Action 执行成功后,返回的结果类型为流,这使得我们可以直接将生成的 Excel 文件内容输出到浏览器。 2. `<param name="contentType">application/vnd.ms-excel...
结果可能是转发到一个JSP页面,重定向到另一个URL,或者进行其他类型的输出,如JSON或XML。 7. **响应客户端**: 最后,FilterDispatcher将Action返回的结果转换成HTTP响应,发送回客户端浏览器。浏览器接收到响应...
【Struts2+Spring+MyBatis环境搭建】是指在Java Web开发中整合这三个开源框架,构建一个完整的MVC架构。Struts2作为表现层框架,负责处理HTTP请求和视图展示;Spring作为业务层框架,提供依赖注入和事务管理等功能;...
Struts2是一个流行的Java Web...通过以上步骤,你将完成一个基本的Struts2登录应用。在实际开发中,你可能还需要处理错误、添加更多复杂的业务逻辑、集成数据库操作以及实现其他高级特性,如拦截器、插件和国际化等。
6. 配置Struts2 ActionResult,返回报表内容到浏览器。 以上就是MyEclipse、Eclipse、iReport、JasperReport和Struts2整合的基本步骤和相关知识点。通过这种整合,开发者可以在Web应用中轻松地创建和展示动态报表,...
6. **Struts2 Action响应**:在Struts2的Action中,你可以将生成的图表写入到HttpServletResponse的输出流中,这样在浏览器端就可以显示出来。记得设置正确的MIME类型,如"image/jpeg"或"image/png"。 7. **展示在...
Struts2框架本身并不直接处理`multipart/form-data`类型的请求,而是依赖于第三方组件来完成这一任务。Struts2默认使用的是Apache Commons FileUpload框架进行文件上传的处理。 1. **配置文件上传框架**:为了支持...
6. **HTTP 响应**: 在 Struts 2 中,可以通过 `ServletResponse` 接口的 `getOutputStream()` 方法获取到输出流,然后将 POI 生成的 XLS 文件内容写入这个流,完成文件发送。 7. **拦截器的使用**: Struts 2 的拦截...
通常,这可以通过设置Action的返回值来决定视图的渲染方式,例如,可以将图像作为流直接输出到响应体,或者将图像路径存储在session或request中,然后在JSP页面中显示。 6. **在JSP页面上展示**:在JSP页面中,可以...
标签“action输出二进制图片”指的是在Web应用中,使用Action组件将服务器端的二进制图片数据直接输出到HTTP响应,供前端展示。这在很多场景下都很实用,比如用户上传图片到服务器,服务器存储二进制数据,然后在...