`
lym6520
  • 浏览: 704196 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

解决Struts2下载中文乱码

阅读更多
struts2的showcase例子中提供了下载文件的例子,这里贴出来看看:

/*
 * $Id: FileDownloadAction.java 496318 2007-01-15 13:58:24Z husted $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.struts2.showcase.filedownload;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

/**
 * Demonstrates file resource download.
 * Set filePath to the local file resource to download,
 * relative to the application root ("/images/struts.gif").
 *
 */
public class FileDownloadAction implements Action {

    private String inputPath;
    public void setInputPath(String value) {
        inputPath = value;
    }

    public InputStream getInputStream() throws Exception {
        return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
    }

    public String execute() throws Exception {
        return SUCCESS;
    }

}




<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="filedownload" extends="struts-default" namespace="/filedownload">

        <default-action-ref name="download"/>

        <action name="download" class="org.apache.struts2.showcase.filedownload.FileDownloadAction">
            <param name="inputPath">/images/struts.gif</param>
			<result name="success" type="stream">
                <param name="contentType">image/gif</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">filename="struts.gif"</param>
                <param name="bufferSize">4096</param>
            </result>
        </action>

    </package>
</struts>



可以注意下struts2 xml配置文件中action的param:contentDisposition,其中filename值就是输出的文件名,如果改成中文就会出现乱码,而且可能下载失败,所以这里就需要对filename进行一个特殊的编码转换。

具体处理如下:
首先修改xml文件的action
 <action name="download" class="org.apache.struts2.showcase.filedownload.FileDownloadAction">
            <param name="inputPath">/images/struts.gif</param>
  <param name="filename">下载.gif</param>
			<result name="success" type="stream">
                <param name="contentType">image/gif</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">filename="${filename}"</param>
                <param name="bufferSize">4096</param>
            </result>
        </action>


然后再action中对filename进行一个编码处理:
/*
 * $Id: FileDownloadAction.java 496318 2007-01-15 13:58:24Z husted $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.struts2.showcase.filedownload;
import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

/**
 * Demonstrates file resource download.
 * Set filePath to the local file resource to download,
 * relative to the application root ("/images/struts.gif").
 *
 */
public class FileDownloadAction implements Action {

    private String inputPath;
    public void setInputPath(String value) {
        inputPath = value;
    }
    
    private String filename;
    public void setFilename(String filename) {
		this.filename = filename;
	}
    public String getFilename() {
		return filename;
	}

    public InputStream getInputStream() throws Exception {
    	filename = new String(filename.getBytes(),"iso8859-1");
        return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
    }

    public String execute() throws Exception {
        return SUCCESS;
    }

}



引用

filename = new String(filename.getBytes(),"iso8859-1");

分享到:
评论

相关推荐

    struts中文乱码问题解决详细步骤

    解决这个问题通常涉及到编码设置的调整,下面将详细介绍两种方法来解决Struts中的中文乱码问题。 **方法一:配置Filter** 1. **添加过滤器**:首先,我们需要在Web应用的`web.xml`文件中添加一个`...

    Struts2中文乱码问题最终解决方案

    在Struts2的各个版本和不同过滤器设置下,GET方式提交的中文乱码问题仍然存在。一种可行的解决方案是在Tomcat服务器的配置文件`server.xml`中,修改`&lt;Connector&gt;`标签,添加`URIEncoding="UTF-8"`属性。这将强制...

    struts2的中文乱码问题解决

    下面将详细介绍如何解决Struts2中的中文乱码问题。 #### 一、理解中文乱码的原因 中文乱码主要出现在以下几个方面:页面乱码、Action乱码以及数据库乱码。具体来说: 1. **页面乱码**:指用户在浏览器中看到的...

    Struts2下载文件中文乱码处理

    ### Struts2下载文件中文乱码处理 在Web开发中,使用Struts2框架进行文件下载操作时,经常遇到的一个问题是文件名中的中文字符显示为乱码。这主要是因为浏览器和服务器之间的编码不一致所导致的。为了确保用户能够...

    Struts2.0解决中文乱码

    本文将深入探讨如何在Struts2.0中解决中文乱码问题,确保应用程序能够正确地处理和显示中文字符。 ### Struts2.0中文乱码问题分析 #### 1. 表单提交中文乱码 在Web应用中,表单是用户与服务器交互的主要方式之一...

    struts解决中文乱码问题

    本文将深入探讨如何解决Struts框架下的中文乱码问题。 首先,我们来看一个具体的实例。在登录验证的例子中,原本只要用户名(username)和密码(userpass)都是"123"就会返回成功页面。现在,我们将其升级,要求...

    struts 2. 5.2解决中文乱码

    通过以上步骤,一般可以解决Struts 2.5.2框架下的中文乱码问题。但请注意,每个项目可能有不同的配置和需求,因此在实际应用中,还需要根据具体情况进行调试和调整。 在`myStruts`这个压缩包中,可能包含了示例代码...

    struts1.2 解决中文乱码

    ### Struts 1.2 中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会...

    struts下的汉字乱码问题

    总结来说,解决Struts下的汉字乱码问题,需要从页面、过滤器、服务器配置和Struts核心Servlet等多方面进行设置,确保在整个请求生命周期中,中文字符始终以正确的编码进行处理。这不仅涉及了前端的展示,还涉及到...

    Struts2Action处理中文乱码

    通过以上两种方法,你可以有效地解决Struts2 Action中处理中文乱码的问题。选择哪种方法取决于你的具体需求和项目结构。一般来说,如果你的整个应用都使用同一种编码格式,那么在Struts2配置中设置全局编码可能更...

    Struts2注解下载 中文非乱码

    解决Struts2下载中文出现乱码情况,已通过测试,

    Struts2乱码终极解决办法

    本文将详细介绍如何彻底解决Struts2中的乱码问题,并提供实际可行的解决方案。 #### 二、乱码产生的原因 在Struts2框架中,中文乱码主要由以下几个方面的原因造成: 1. **请求编码问题**:客户端发送请求时未指定...

    奇怪的struts2的中文乱码问题及解决.docx

    本文将深入探讨一个关于Struts2在Internet Explorer(IE)浏览器中出现中文乱码的奇怪问题及其解决方案。 首先,中文乱码问题通常涉及到几个关键因素:数据库编码、开发文件编码和网页的Content-Type编码。在确保这...

    struts2文件下载(解决了中文乱码问题)

    综上所述,解决Struts2文件下载时的中文乱码问题需要从多个角度考虑,包括文件名编码、响应头设置、过滤器配置、JDK版本、Tomcat配置以及开发环境的一致性。具体到本例中的DownLoadFile,可能是一个示例代码或测试...

    struts2中文乱码解决Demo

    本DEMO是为了解决Struts2在处理中文输入时可能出现的乱码问题,确保系统能够正确地接收和显示中文字符。 首先,我们要理解乱码产生的原因。在Web应用中,数据的传输通常涉及多种编码方式,如HTTP请求的默认编码通常...

    struts2中文乱码问题

    本文将详细介绍几种解决Struts2中文乱码问题的方法。 #### 方法一:设置JSP页面编码 首先,可以在JSP页面中设置正确的字符集编码。例如,可以将页面编码设置为`GB18030`,这是一种兼容GB2312、GBK,并支持更多汉字...

    Struts中文乱码解决方案

    这里我们将详细探讨如何解决 Struts 中的中文乱码问题。 一、在 Action 类中的解决方法: 当在 Action 类中遇到中文乱码问题时,可以使用以下代码进行转换。创建一个静态工具类,如 `Chinese`,并定义一个 `...

    Struts2资源文件在jsp页面中显示乱码解决

    通过上述两种解决方案,我们可以有效解决Struts2资源文件在JSP页面中显示乱码的问题。虽然第一种方法可以达到目的,但其带来的维护不便使其不被推荐;相比之下,安装PropertiesEditor插件不仅操作简便,还能彻底解决...

    Struts2文件上传下载 中文乱码

    接下来,我们将详细讨论如何解决Struts2中的这些问题。 1. **文件上传**: - **Action配置**:首先,你需要在Struts2的Action类中定义一个`File`类型的属性来接收上传的文件,并通过`@Result`注解设置结果类型为`...

    解决struts2.1.6+spring+hibernate 中文乱码

    ### 解决Struts2.1.6 + Spring + Hibernate 中文乱码问题 在Web开发过程中,特别是使用Java EE框架时,字符编码问题一直是开发者关注的重点之一。对于使用Struts2.1.6、Spring以及Hibernate这三个框架组合的项目而...

Global site tag (gtag.js) - Google Analytics