用户从页面点击连接(link),下载相关的文件,该文件存在服务器端,或者由服务器端生成文件流,没有物理文件;下载后页面不跳转。
JSP代码:
<h:commandLink actionListener="#{productBean.downloadAction}" styleClass="highLightLink"> <h:outputText value="download"/> <f:param name="productId" value="#{productBean.id}"/></h:commandLink>
Backing bean设计及代码:
注意这是个Action listener方法,没有返回值,并且有javax.faces.event.ActionEvent参数
public void downloadAction(ActionEvent event) { try { String fileName="D:\\temp\\images\\products\\" + this.id + ".xls"; logger.debug("file name=" + fileName); ByteArrayOutputStream baos=this.serviceLocator.getFileService().downloadFile(fileName); //调用Service方法,获得文件的ByteArrayOutputStream HttpServletResponse response=FacesUtils.getServletResponse(); response.setHeader("Content-disposition", "attachment; filename=" + id+ ".xls" ); //不是内嵌显示(inline),而是作为附件下载 response.setContentLength(baos.size()); ServletOutputStream sos=response.getOutputStream(); baos.writeTo(sos); baos.close(); sos.flush(); } catch (IOException ex) { logger.debug(ex); } }
Service代码:
这个实现是一个从已经存在的物理文件获得输出流的范例,至于由Server在内存中生成输出流也是一样处理,例如生成一个Excel文件,再让用户下载。
public ByteArrayOutputStream downloadFile(String fileName) throws IOException { FileInputStream fis=new FileInputStream(fileName); BufferedInputStream bis=new BufferedInputStream(fis); ByteArrayOutputStream baos=new ByteArrayOutputStream(); BufferedOutputStream bos=new BufferedOutputStream(baos); int i; while((i=bis.read())!=-1) { bos.write(i); } bos.flush();//提交文件流,很关键 bis.close(); return baos; }
分享到:
相关推荐
在JavaServer Faces (JSF)框架中,实现文件下载功能是一项常见的需求。在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上下文环境获取**: 在`...
以上就是JSF文件上传和下载的基本实现。为了确保安全性和性能,还需要考虑错误处理、文件大小限制、临时文件管理以及用户权限控制等细节。同时,现代的Web开发中,还可能结合使用CDN(内容分发网络)和云存储服务来...
为了实现JSF的大文件上传,开发者通常需要借助第三方库,如Apache Commons FileUpload或者PrimeFaces的FileUpload组件。这些组件提供了分块上传的能力,将大文件切割成小块进行传输,从而避免一次性加载整个文件到...
### 使用JSF和MyFaces实现文件上传 #### 一、理解文件上传机制 在Web开发中,文件上传主要通过HTML表单实现,其中`<input type="file">`元素用于让用户选择文件。当表单提交时,浏览器将表单数据编码为`multipart/...
本文将详细介绍如何在JSF环境中实现文件上传和下载,并提供一个可直接在Eclipse下用Tomcat运行的例子。 一、文件上传 1. **依赖库**:在JSF中处理文件上传,我们需要引入Apache Commons FileUpload库,它提供了...
下面将详细介绍如何使用JSF实现文件上传,以及涉及到的关键技术和注意事项。 ### 1. JSF的文件上传组件 JSF提供了`<h:inputFile>`组件来实现文件上传的功能。这个组件允许用户选择本地文件,并将其上传到服务器。...
jsf结合ajax实现文件上传,值得阅读
在JSF Bean中,使用`localExportServer`方法来实现文件的读取和下载。该方法首先从前台页面接收到文件名称,并将其转换为UTF-8编码。然后,使用`FileInputStream`和`OutputStream`来读取和写入文件,实现文件的传输...
在这个"jsf实现登录功能"的例子中,我们将探讨如何利用JSF来构建一个基本的用户登录系统。 首先,登录功能通常包括两部分:前端页面和后端逻辑。在JSF中,前端页面通常由XHTML文件(.xhtml)组成,这些文件结合了...
总之,尽管JSF在原生支持文件上传方面存在不足,但通过开发自定义组件或利用第三方库,开发者可以有效地实现文件上传功能,以满足其应用程序的需求。理解这一过程有助于提升JSF开发者的技能,并能更好地应对实际项目...
由于JSF2.0标准实现没有提供文件上传组件,而实际应用中很多时候需要上传文件,为了方便开发,我做了一个基于JSF2.0的文件上传组件,上传使用的是Apache 的commons-fileupload组件,我已经将commons-fileupload-...
这可以通过在Bean中定义验证方法或者使用JSF提供的Validator接口实现。 5. **会话管理**:在登录成功后,通常会将用户信息保存在session中,以便后续页面访问时能识别用户身份。JSF提供了`FacesContext`对象来操作...
**JSF标准的两个实现** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的MVC(Model-View-Controller)框架,它为Web...在实际使用时,需要解压这些文件,并根据项目配置将对应的JSF实现添加到类路径中。
在这个"JSF实现的CRUD例子 myeclipse"中,我们将探讨如何使用JSF和MyEclipse开发一个简单的CRUD(Create, Read, Update, Delete)应用,而无需连接到数据库。 首先,"first-java-server-faces-tutorial-en.pdf"可能...
### 生成Excel并在客户端下载的JSF实现 #### 概述 在现代的企业级应用开发中,导出数据为Excel格式是一种常见的需求。这不仅便于用户进行数据分析,还能提高系统的易用性。JavaServer Faces(JSF)作为一款广泛使用...
总的来说,"jsf的资源jar文件"是一个包含JSF相关组件的压缩包,特别是JSTL的1.2版本实现库和API库。下载并正确引入这些库,开发者可以利用JSF和JSTL的强大功能,构建功能丰富的、基于Java的Web应用程序。
在这个“jsf实现多语言国际化demo”中,我们将深入探讨如何在 JSF 应用程序中实现这一特性。 首先,我们需要创建一个资源库,存储各种语言的文本。在 JSF 中,通常使用 `.properties` 文件来存储这些资源。例如,...
3. **myfaces-extensions.jar**:MyFaces Extensions 是对MyFaces JSF实现的扩展,提供了额外的功能和组件。在文件上传场景中,它可能包含了一些特定的文件上传组件或功能增强,比如进度条显示、文件大小限制等。 4...
2. **jsf-impl.jar**:此JAR文件包含了JSF实现,即对JSF API的具体实现。它提供了JSF规范的底层逻辑,包括生命周期管理、渲染器、默认组件实现等。这个实现库使得开发者无需关注底层细节,可以直接使用JSF提供的服务...
### JSF实现基于Ajax的文件上传案例解析 #### 核心知识点概述 本文将深入探讨如何利用JavaServer Faces (JSF) 和 Ajax 技术来实现一个用户友好的文件上传组件。传统上,通过HTML `<input type="file">` 标签进行...