`
iiaf
  • 浏览: 50491 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

struts文件上传以及中文乱码问题

    博客分类:
  • java
阅读更多
Struts上传实现很简单,不需要自己用什么common_fileupload包,struts中用一个FormFile的接口用到了common_fileupload包的东西。在StrutsForm中只要定义一个FormFile类型的属性就行了。

程序代码
protected FormFile file;
public FormFile getFile() {
    return file;
}
public void setFile(FormFile theFile) {
    this.file = theFile;
}

uploadFile.jsp文件:
程序代码
<html:form action="/uploadFile" enctype="multipart/form-data">
File Description : <html:text property="description"/>
<br />
Please select the file that you would like to upload: <br /><html:file property="file" /></p>
<html:submit/>
</html:form>
在jsp的Form定义里面 “enctype="multipart/form-data"”不能忘记,不然会出现一个“BeanUtils.populate”属性赋值的错误。


程序代码
UploadFileForm uploadFileForm = (UploadFileForm) form;   
String desciption = uploadFileForm.getDescription();
FormFile file = uploadFileForm.getFile();       
String fileName = file.getFileName();
String contentType = file.getContentType();
String size = (file.getFileSize() + " bytes");
String filePath = null;
try {
    stream = file.getInputStream();// ??????????
    filePath = getServlet().getServletContext().getRealPath("/upload");
    OutputStream bos = new FileOutputStream(filePath + "/"+ file.getFileName());
    System.out.println(filePath+"\\"+file.getFileName());
    int bytesRead = 0;
    byte[] buffer = new byte[8192];
    while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
        bos.write(buffer, 0, bytesRead);       
    }
    bos.close();
    stream.close();
} catch (Exception e) {
    // do some thing
}   
info = "The file uploaded to the path:\""+filePath+"\"";
// log the success infomation
file.destroy();

这样文件上传基本就可以成功了,但是存在中文乱码问题。

在Action的excute方法里面设置
程序代码
String encoding = "gb2312";
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding + "");

但是利用form的get方法取出来的值仍然是乱码,后来知道了,Struts从request里利用BeanUtils.populate把值赋给form的时候已经是乱码的,excute方法里面设置是没用的,所以要在赋值之前进行编码转换,所以下面两种方法才是有效的:
1.在filter里面对request,response的编码进行设定
2.在RequestProcessor.process()里进行编码设定

方法一:filter过滤
程序代码
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {   
    String encoding = "gb2312";
    request.setCharacterEncoding(encoding);
    response.setContentType("text/html;charset=" + encoding + "");
               
    filterChain.doFilter(request,response);
}

web.xml中

程序代码
<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>xxx.xxxx.xxxx.EncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>

方法二:自己写一个RequestProcessor,
程序代码
public class EncodingProcessor extends RequestProcessor {
    public void process(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        String encoding = "gb2312";
        request.setCharacterEncoding(encoding);
        response.setContentType("text/html;charset=" + encoding + "");
        super.process(request, response);
    }
}

并在struts-config.xml里设定:
程序代码
<controller processorClass="xxx.xxxx.xxxx.EncodingProcessor" />
分享到:
评论

相关推荐

    Struts2文件上传下载 中文乱码

    Struts2文件上传下载 上传为单个上传, 下载包括中文乱码的问题:前台传后台时中文乱码,下载时显示时中文乱码,以及URLEncoder

    Struts上传,已经处理好乱码问题

    Struts上传,已经处理好乱码问题Struts上传,已经处理好乱码问题

    struts2文件上传(解决中文乱码)

    struts2实现文件上传。解决中文url和中文文件名乱码问题

    无中文乱码的Struts上传下载(任意文件上传)

    实现了struts框架中文件的下载,下载操作解决了中文乱码问题,同时还包括了任意数目的文件上传操作,压缩文件中有整个源代码,还包括有工程的使用说明。

    struts2中的批量上传与文件下载(解决中文乱码问题)

    很受网络上庞杂的Struts2上传下载的误导,很多没有解决中文乱码问题,本例实现了Struts2批量上传与下载,中文乱码问题完美解决,供大家参考!

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

    Myeclipse 6.5, JDK1.6,Tomcat 6.0 未解决点击取消报错的问题,可能是jdk版本问题

    Struts2文件上传完美解决中文乱码问题

    今天主要分享开源框架Struts2文件上传实例过程,并且笔者将带着大家解决出现的一系列乱码问题,本文章中的重要部分将用特殊颜色标识,斜体表示不确定内容。笔者建议读者先快速阅读一遍本文,下载应具备的工具,再...

    struts2上传下载 解决中文文件名乱码

    之前,为中文文件名出现乱码在google上搜索是大量资源,说的很好,但都未能通过验证。此次认真阅读,上机调试终于通过。

    使用struts2.0上传文件,完全解决了中文乱码问题

    使用struts2.0上传文件,完全解决了中文乱码问题。运行项目前请先在D盘建立个名tmp的文件夹,实例上传的文件将保存在tmp文件夹中。文件大小限制为15M,该示例蛮完整的,有些架包忘删了导致项目有点大。

    Ext3.2 + struts 文件上传实例

    文件上传一直是Ext3.0以上版本的难点,本实例利用Ext3.2和struts实现文件和参数的共同上传,并解决了中文乱码的问题。

    struts2带进度条文件上传

    1.struts2 带进度条文件上传 源码 2.源码中有lib 下载后部署马上就能用 3.代码中有详细的注释信息 4.对关键点有详细的解释说明 5.如果谁用起来觉得有问题可在评论留言,留联系方式,我会联系你的 6.非常感谢原创作者...

    02_张孝祥09年Struts视频_文件上传单元

    struts文件上传单元目录列表: 01.文件上传的网页设置与数据格式分析 02.阐释软件分层的设计思想 03.文件上传组件的实现原理与应用分析 04.用struts获取上传文件名和解决中文乱码 05.保存用struts获取的上传文件内容...

    struts1的文件上传

    文件上传、多文件上传,文件名 乱码,上传文件名的重名都在此工程中有具体的解决 此工程中为了上传容易,删除了jar包,要使的工程运行,只要加入struts-1.2.9的jar包就可以了

    11_张孝祥09年Struts视频_文件上传单元

    struts文件上传单元目录列表: 01.文件上传的网页设置与数据格式分析 02.阐释软件分层的设计思想 03.文件上传组件的实现原理与应用分析 04.用struts获取上传文件名和解决中文乱码 05.保存用struts获取的上传文件内容...

    struts中文件的上传

    一个比较简单的struts项目,实现了文件的上传,文件的中中文乱码的处理,里面有很多细节值得注意

    struts文件的上传下载功能实现

    struts文件的上传下载功能实现,并利用过滤器解决了相应的中文乱码问题

    struts文件带进度条上传,文件下载

    struts文件带进度条上传,文件下载 解决个浏览器中文乱码,带进度条,同时下载页支撑各个浏览器

    Struts2上传下载

    Struts2文件 上传 下载 解决: a标签中文乱码,无法下载问题 tomcat下载格式变换问题,如下载apk,下载下来的则是zip

    ssh2多文件的上传与下载

    Struts2+hibernate+spring实现多文件的上传与下载功能,主要包括:上传、下载、删除 1.能够对多个文件进行上传(可以选择上传文件个数,也即...文件上传是运用了Ajax技术对上传文件校验,判断数据库中是否存在该文件

    s2sh框架+struts2国际化的实例

    另外,关于struts2国际化乱码问题: 解决方法: 找到jdk的安装目录--C:\Program Files\Java\jdk1.6.0_10\bin(我的安装目录) 在bin里面找到native2ascii.exe并运行 在命令窗口输入 native2ascii -encoding UTF-8 ...

Global site tag (gtag.js) - Google Analytics