<p>作者:yan </p>
<p> </p>
<p>Action代码:</p>
<p><textarea cols="50" rows="15" name="code" class="java">package com.xxx.base.view.action;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import com.ruizcon.base.util.MyException;
public class DownloadAction extends BaseAction {
private String fileName;
private String relativePath;
public void setFileName(String fileName) throws UnsupportedEncodingException {
/*
* 对fileName参数进行UTF-8解码,注意:实际进行UTF-8解码时会使用本地编码。
* 这里使用request.setCharacterEncoding解码无效.
* 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件
* */
String str=new String(fileName.getBytes("ISO8859-1"),"utf-8");
this.fileName=str;
}
/**
* @getFileName
* 此方法对应的是struts.xml文件中的:
* <param >attachment;filename="${fileName}"</param>
* 这个属性设置的是下载工具下载文件时显示的文件名,
* 要想正确的显示中文文件名,我们需要对fileName再次编码
* 否则中文名文件将出现乱码,或无法下载的情况
* @return
* @throws UnsupportedEncodingException
* @author XieYanZhou(Yan)
* @date 2011-6-1
* @version v1.0
*/
public String getFileName() throws UnsupportedEncodingException{
String str= new String(fileName.getBytes(), "ISO8859-1");
return str;
}
public void setRelativePath(String relativePath) throws UnsupportedEncodingException {
//this.relativePath = relativePath;
String str=new String(relativePath.getBytes("ISO8859-1"),"utf-8");
this.relativePath=str;
}
/**
*
* @getDownloadFile
* 此方法的命名是有规定的,对应的是struts.xml文件中的:
* <param >downloadFile</param>
* 返回下载文件的流,可以参看struts2的源码
* @return
* @author XieYanZhou(Yan)
* @date 2011-6-1
* @version v1.0
*/
public InputStream getDownloadFile(){
/*String baseRealPath=this.getSession().getServletContext().getRealPath("");
String path = baseRealPath + relativePath + "//" + this.fileName;
path=path.replaceAll("/", "////");
FileInputStream fis = new FileInputStream(path);
return fis;*/
return this.getServletContext().getResourceAsStream(relativePath +"/"+ fileName);
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
</textarea> </p>
<p> </p>
<p>xml配置:</p>
<p><textarea cols="50" rows="15" name="code" class="xhtml"> <action name="downloadAction" class = "downloadAction">
<result name="success" type="stream">
<!-- <param name="contentType">application/excel,application/vnd.ms-excel</param> -->
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="inputName">downloadFile</param>
<param name="bufferSize">4096</param>
</result>
</action></textarea> </p>
<p> </p>
<p>页面调用:</p>
<p>如:</p>
<p><span><a class=" " title="http://localhost:8080/hims/importdata/base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&fileName=济南20110531184126875.xls" href="http://localhost:8080/hims/importdata/base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&fileName=%E6%B5%8E%E5%8D%9720110531184126875.xls"><a href="base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&amp;fileName=济南20110531184126875.xls">下载</a></a></span></p>
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Struts2框架实现文件下载功能,尤其是处理包含中文名字的附件。Struts2是一个流行的Java Web开发框架,它提供了丰富的功能,包括处理HTTP请求、表单提交以及数据绑定等。对于文件...
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
在处理文件下载时,Struts2提供了一套完整的解决方案,包括处理中文文件名的乱码问题。在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行...
在“struts2 中文文件名文件下载”的场景中,我们需要关注的是如何在Struts2框架下正确处理包含中文字符的文件名。首先,我们要理解文件名编码ISO8859-1,这是一个西欧字符编码标准,不支持中文字符。在处理中文...
一种可行的解决方案是在Tomcat服务器的配置文件`server.xml`中,修改`<Connector>`标签,添加`URIEncoding="UTF-8"`属性。这将强制服务器解析URL时使用UTF-8编码,从而解决GET请求的中文乱码问题。 4. **Tomcat配置...
Struts是Apache软件基金会旗下Jakarta项目的一个核心框架,它是一个用于构建企业级Java Web应用程序的开放源代码解决方案。这个“Struts中文文档”包含了关于Struts框架的详细信息,旨在帮助开发者理解和掌握该框架...
这个问题在早期的互联网资源中被广泛讨论,但并非所有解决方案都能适用于所有情况。下面我们将深入探讨这个问题,并提供一种经过验证的有效方法。 首先,我们需要理解乱码问题的根源。在Java中,默认的字符编码通常...
以下是对这个问题的详细分析及解决方案: 首先,问题出现在文件列表的展示和下载链接的生成过程中。在Action中,`request.getRealPath()` 获取了服务器上文件的物理路径,然后遍历目录,将文件名添加到ArrayList中...
通过上述两种解决方案,我们可以有效解决Struts2资源文件在JSP页面中显示乱码的问题。虽然第一种方法可以达到目的,但其带来的维护不便使其不被推荐;相比之下,安装PropertiesEditor插件不仅操作简便,还能彻底解决...
本文将围绕“Struts2配置文件传值中文乱码”这一主题,深入探讨其成因、解决方案以及相关的配置细节,旨在帮助开发者有效解决中文乱码问题,提升用户体验。 ### Struts2框架简介 Struts2是Apache组织下的一个开源...
这份文档不仅覆盖了基础概念,还深入到了实际开发中可能遇到的问题和解决方案,对于学习和提升Struts2开发技能非常有帮助。无论是初学者还是经验丰富的开发者,都应该充分利用这份资源,以提升项目开发的效率和质量...
对于中文文件名的下载,Struts2提供了灵活的解决方案。我们可以通过在`contentDisposition`中使用`${downloadFileName}`变量,并在对应的Action类中定义`getDownloadFileName()`方法来返回经过编码的文件名。 例如...
### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...
三、请求参数中的中文乱码问题解决方案: 对于用户提交的含有汉字的请求数据导致的乱码,可以通过自定义 RequestProcessor 来解决。首先,创建一个新的类 `SelfRequestProcessor` 继承自 Struts 内置的 `...
Struts2是Java Web开发中的一个强大框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案。本篇文档将深入探讨Struts2的核心概念、架构以及实际应用,旨在帮助...
总之,Struts2提供了一套完整的解决方案来构建Java Web应用,其丰富的标签库简化了页面的开发,而强大的拦截器机制使得业务逻辑和控制流程的管理更为灵活。通过深入理解和实践,开发者可以有效地提高开发效率,构建...
本文将详细介绍如何彻底解决Struts2中的乱码问题,并提供实际可行的解决方案。 #### 二、乱码产生的原因 在Struts2框架中,中文乱码主要由以下几个方面的原因造成: 1. **请求编码问题**:客户端发送请求时未指定...
在`myStruts`这个压缩包中,可能包含了示例代码、配置文件或测试用例,这些内容可以作为实践上述解决方案的参考。如果你在应用上述步骤后仍然遇到问题,可能需要检查`myStruts`中的具体文件以找出问题所在。例如,...
SSH(Spring、Struts2、Hibernate)是Java开发中的经典组合,它结合了Spring的依赖注入、事务管理,Hibernate的对象关系映射,以及Struts2的MVC框架,提供了一站式的解决方案。这种整合使得开发更加高效,降低了代码...