-
package demo;
-
-
-
-
-
-
-
-
-
-
-
import java.
util.
logging.
Logger;
-
-
import javax.faces.application.Application;
-
import javax.faces.context.FacesContext;
-
-
import javax.servlet.ServletOutputStream;
-
import javax.servlet.http.HttpServletResponse;
-
-
import org.operamasks.faces.annotation.ManagedBean;
-
import org.operamasks.faces.annotation.ManagedBeanScope;
-
-
public class DownFile {
-
-
//OaMailAttach oaMailAttach = getOaMailAttach();
-
-
-
String fileName="20074111452140.doc";
-
-
try {
-
FacesContext ctx = FacesContext.getCurrentInstance();
-
ctx.responseComplete();
-
//String contentType = "application/octet-stream;charset=utf-8";
-
String contentType = "application/x-download";
-
HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();
-
-
-
-
response.setContentType(contentType);
-
-
StringBuffer contentDisposition = new StringBuffer();
-
-
contentDisposition.append("attachment;");
-
-
contentDisposition.append("filename=\"");
-
contentDisposition.append(fileName);
-
contentDisposition.append("\"");
-
//log.debug(System.getProperty("file.encoding"));
-
response.
setHeader("Content-Disposition",
new String(contentDisposition.
toString().
getBytes(System.
getProperty("file.encoding")),
"iso8859_1"));
-
// log.debug(contentDisposition.toString());
-
ServletOutputStream out = response.getOutputStream();
-
-
//log.debug(new Long(oaMailAttach.getAtFile().length()));
-
-
byte[] bytes = new byte[0xffff];
-
-
int b = 0;
-
while ((b = is.read(bytes, 0, 0xffff)) > 0) {
-
out.write(bytes, 0, b);
-
}
-
is.close();
-
out.flush();
-
ctx.responseComplete();
-
-
// TODO 自动生成 catch 块
-
e.printStackTrace();
-
}
-
return null;
-
}
-
-
}
关键语句:ctx.responseComplete();
不然会报错误如下:
Servlet response already use stream, Writer not possible
分享到:
相关推荐
总之,JSF文件下载功能的实现涉及到JSF上下文、Servlet上下文、HTTP响应头设置、文件流处理等多个关键环节。理解并熟练掌握这些知识点对于开发Web应用程序,特别是处理文件操作的场景非常重要。
以上就是JSF文件上传和下载的基本实现。为了确保安全性和性能,还需要考虑错误处理、文件大小限制、临时文件管理以及用户权限控制等细节。同时,现代的Web开发中,还可能结合使用CDN(内容分发网络)和云存储服务来...
JavaScript Faces (JSF) 是Java平台上用于构建企业级Web应用程序的一种服务器端的用户界面框架。...理解JSF的工作原理、生命周期以及如何利用其组件和绑定特性,是成为合格的Java开发工程师的关键技能之一。
这个API帮助文档是开发者理解和使用JSF的关键资源。 在JSF中,**组件** 是构建用户界面的基本单元,它们可以是简单的HTML元素,如按钮和输入字段,也可以是复杂的自定义组件。每个组件都有一个与之关联的**事件模型...
总的来说,JSF中文帮助文档涵盖了JSF框架的所有关键概念和技术,包括API详解、生命周期、组件使用、数据绑定、验证、导航等,对于希望在Java Web开发中使用JSF的开发者来说,是极具价值的学习资源。通过阅读和实践,...
**TLD(Tag Library Descriptor)** 文件是JSF标签库的元数据,它定义了标签的属性、行为以及与之关联的Java类。每个TLD文件对应一个特定的标签库,例如JSF的核心库、HTML库或自定义库。在TLD文件中,你可以找到每个...
JSF API文档是理解并使用JSF框架的关键参考资料。 ### JSF_API.CHM 这个CHM文件包含了JSF的核心API文档,是开发者在编写JSF应用时的重要参考。CHM(Compiled HTML Help)是一种微软的文件格式,用于存储和查看帮助...
`jsf-api.jar` 和 `jsf-impl.jar` 是JSF框架的核心组件,它们在JSF应用中扮演着关键角色: 1. **jsf-api.jar**:这个JAR文件包含了JSF API,即JSF规范定义的接口和类。开发者在编写JSF应用程序时,主要会引用这个...
在**JSF开发帮助文档**中,你可能会找到以下几个关键知识点: 1. **组件库**: JSF 提供了一个丰富的内置组件库,如按钮、表单、输入字段、标签等。这些组件可以通过XML(Facelets)或者JSP页面声明式地使用。理解每...
**JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web...而`core jsf.chm`文件很可能是关于JSF 1.2的官方文档或教程集合,可以帮助深入学习和掌握这些概念。
在JSF中,Backing Bean(或称为Glue Bean)扮演着关键角色,它们是连接用户界面(UI)和业务逻辑的桥梁。Backing Bean通常是Java Bean,它们在`faces-config.xml`配置文件中被定义和管理。例如: ```xml ...
【标题】"lib文件,jar包,jsf+spring"涉及的是Java开发中的关键组成部分,主要包括库文件、Java Archive(JAR)包以及JavaServer Faces(JSF)与Spring框架的整合。这些元素在构建现代Java Web应用程序时起着至关...
3. **关键类和接口** - **UIComponent**:所有JSF组件的基类,定义了组件的基本属性和方法。 - **FacesContext**:提供对当前JSF上下文的访问,包括请求、响应、会话和应用范围的数据。 - **ManagedBean**:JSF ...
**Mojarra**是JSF规范的主要实现之一,由Oracle公司维护。Mojarra JSF 2.0是针对JSF 2.0规范的实现库,包含了处理JSF生命周期、渲染组件以及与其他Java EE技术集成所需的所有类和接口。将Mojarra JSF 2.0库文件放置...
`jsf.jar`中的类和接口定义了JSF框架的基本行为,如FacesContext、UIComponent、ManagedBean等关键类,这些都是开发JSF应用的基础。 **jsf-api.jar** 文件则包含了JSF的公共API,这是开发人员编写JSF应用程序所必须...
下面将详细介绍如何使用JSF实现文件上传,以及涉及到的关键技术和注意事项。 ### 1. JSF的文件上传组件 JSF提供了`<h:inputFile>`组件来实现文件上传的功能。这个组件允许用户选择本地文件,并将其上传到服务器。...
**jsf传参.docx** 详细介绍了如何在JSF中传递参数,这可能涉及到请求参数、会话参数、属性绑定等,是理解和实现JSF应用间通信的关键。 **java环境变量配置.txt** 涉及到Java开发的基础,Java环境变量如JAVA_HOME、...
在“jsf第一个例子”中,我们通常会遇到以下关键概念: 1. **JSF生命周期**:JSF有六个主要阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用业务逻辑以及渲染响应。开发者可以在这些阶段插入自定义...
`jsf-api.jar` 文件是JSF API的核心库,包含了JSF框架的所有接口和抽象类,开发者可以通过这个API来实现JSF的功能。 该API包特别强调了对中文的支持,这意味着在使用过程中,开发者不会遇到由于找不到中文资源包...