`
simpledev
  • 浏览: 196186 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork上传异常分析:getReader() or getInputStream() call

阅读更多

在使用webwork-2.2.4.jar,xwork-1.2.1.jar时文件上传发生异常.

00:29:07.390 ERROR! [SocketListener0-1] com.opensymphony.webwork.dispatcher.DispatcherUtils.prepare(DispatcherUtils.java:394) >17> Error setting character encoding to 'UTF-8' - ignoring.
java.lang.IllegalStateException: getReader() or getInputStream() called
 at org.mortbay.jetty.servlet.ServletHttpRequest.setCharacterEncoding(ServletHttpRequest.java:602)
 at javax.servlet.ServletRequestWrapper.setCharacterEncoding(ServletRequestWrapper.java:105)
 at com.opensymphony.webwork.dispatcher.DispatcherUtils.prepare(DispatcherUtils.java:392)
 ...

 
分析源码如下:
com.opensymphony.webwork.dispatcher.DispatcherUtils.java:394

 String encoding = null;
        if (Configuration.isSet(WebWorkConstants.WEBWORK_I18N_ENCODING)) {
            encoding = Configuration.getString(WebWorkConstants.WEBWORK_I18N_ENCODING);
        }
 Locale locale = null;
        if (Configuration.isSet(WebWorkConstants.WEBWORK_LOCALE)) {
            locale = LocalizedTextUtil.localeFromString(Configuration.getString(WebWorkConstants.WEBWORK_LOCALE), request.getLocale());
        }

        if (encoding != null && !MultiPartRequest.isMultiPart(request)) {
            try {
                request.setCharacterEncoding(encoding);
            } catch (Exception e) {
                LOG.error("Error setting character encoding to '" + encoding + "' - ignoring.", e);
            }
        }

 
webwork.properties

 webwork.locale=en_US
 webwork.i18n.encoding=UTF-8

 
文件上传经过控制层处理时,得到的文件file对象,文件类型ContentType,文件名FileName都是正确的,文件名中文显示正常.

为了避免上面webwork抛出的异常,我们可以使用低版本的webwork(webwork-2.2.2.jar,xwork-1.1.3.jar)
运行程序之后系统没有抛出"java.lang.IllegalStateException: getReader() or getInputStream() called",但是文件名如果是中文为乱码,
为了解决文件名中文乱码问题,我们可以采取两种简单的处理方法:
  //方法一:获取文件后缀名
  //优点:使用RandomStringUtils随机生成10位字符为文件名,可以避免上传后存在文件名同名情况

  int idx = file4FileName.indexOf(".");
  String suffix = fileFileName.substring(idx);
  System.out.println(suffix);
  String prefix = org.apache.commons.lang.RandomStringUtils.randomAlphabetic(10);
  String filename = prefix + suffix;
  System.out.println(filename);
  fileFileName = filename;

 
  
  //方法二:字符串转码
  //使用上传的文件名,将乱码中文名转码(UTF-8),

  String filename2 = new String(fileFileName.getBytes(),"UTF-8");
  System.out.println("filename2:"+filename2);
  fileFileName = filename2;

 
将该问题解决。(注:默认已使用webwork上传图片而出现上面异常时分析,具体上传代码略)

 

分享到:
评论

相关推荐

    webwork的上传和下载的Demo

    WebWork提供了异常处理机制,你可以定义Action错误处理方法来显示相应的错误消息。 7. **用户体验**:为了让用户知道文件上传或下载的状态,可以使用AJAX或者WebWork的异步更新功能来显示进度条或状态提示。 8. **...

    WebWork docs 2 -- webWork 详细的说明文档

    10. **错误处理与异常处理**:WebWork提供了优雅的错误处理机制,包括自定义异常类和全局异常处理器。这部分内容将教你如何处理和显示错误信息。 11. **测试**:WebWork支持单元测试和集成测试,文档会讲解如何编写...

    webwork2.1.7

    5. **异常处理**:WebWork提供了一套统一的异常处理机制,可以将异常信息转化为用户友好的错误页面。 **文件解析:** 1. **README.html**:通常包含项目的简要介绍、安装指南和使用注意事项。 2. **webwork-2.1.7....

    webwork中上传文件

    在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...

    培训教程-WebWork ppt(内附源码)

    WebWork是一种基于Java的轻量级MVC(Model-View-Controller)框架,它在2000年代初期被广泛使用,特别是在企业级应用开发中。这个“培训教程-WebWork ppt(内附源码)”显然是为了帮助开发者理解和掌握WebWork框架而...

    webwork in action

    - **实施WebWork动作**:第四章讲解了如何实现WebWork中的动作,包括动作的定义、参数传递、异常处理等内容。 - **使用拦截器增加功能**:第五章重点介绍了拦截器的作用及其配置方法,读者可以通过拦截器来增强动作...

    webwork详细讲解.doc

    ### WebWork详细讲解 #### WebWork概述 WebWork是由OpenSymphony组织开发的一款专注于组件化和代码重用的MVC模式的J2EE Web框架。该框架的核心目标是简化Web应用的开发流程并提高开发效率。当前WebWork的最新版本...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化支持以及强大的视图渲染机制。在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于...

    WebWork2.0讲解说明

    2. 强大的异常处理:WebWork2.0提供了一套完善的异常处理机制,可以将异常转换为用户友好的错误信息。 3. 动态方法调用:通过URL可以直接调用Action类的任何公开方法,提高了灵活性。 4. AJAX支持:WebWork2.0内建了...

    webwork 上传的例子

    这个是我查看了大量的网上文档后,利用webwork的上传机制写的一个上传到例子。因为网上很多都转来转去的文档。能不能不运行,还不一定。改起来很费时,所以我把我写的上传上去。力争做到用最少的代码和简单配置来...

    webwork

    在提供的"Webwork2 Guide.pdf"文档中,你可能会学习到如何安装配置WebWork2环境,创建和运行第一个WebWork应用程序,理解Action和Interceptor的工作原理,以及如何利用WebWork的特性进行表单处理、异常管理和国际化...

    webwork2开发指南

    4. 异常处理:WebWork2提供了全局异常处理器,可以统一处理未被捕获的异常,避免页面显示不友好。 5. 动态方法调用(Dynamic Method Invocation,DMI):允许通过URL直接调用对象的方法,增强了路由的灵活性。 6. ...

    webWork

    2. 异常处理:通过全局异常处理器,WebWork可以统一处理应用程序中的异常,提供友好的错误页面。 3. 国际化与本地化:WebWork支持多语言环境,方便开发者实现应用的国际化。 4. AJAX支持:WebWork提供了与AJAX集成...

    WebWork 文件上传

    通过分析这些代码,你可以更好地理解WebWork中如何实现多文件上传的完整流程。 总结起来,WebWork的多文件上传涉及了前端表单设计、后端Action处理、文件存储策略等多个环节。理解并掌握这一过程对于构建健壮的Web...

    webwork文件上传

    在本教程中,我们将探讨如何利用WebWork实现文件上传功能,特别是针对Excel文件的处理。 首先,理解WebWork的MVC模式至关重要。在WebWork框架中,控制器负责接收用户请求,调用业务逻辑,并将结果传递给视图进行...

    使用webwork上传excel并导入数据库

    总之,使用WebWork上传Excel并导入MySQL数据库是一项常见的任务,涉及到前端交互、文件上传处理、Excel解析和数据库操作等多个技术领域。理解并熟练掌握这些知识点对于开发企业级应用至关重要。在实践中,不断优化和...

    Webwork2开发指南.pdf

    Webwork2是一款基于Java的开源框架,主要用于构建企业级的Web应用程序。这个框架以其强大的MVC(模型-视图-控制器)架构而闻名,能够帮助开发者实现高效、可维护的代码结构。OpenDoc出品的"Webwork2开发指南.pdf"是...

    webwork,tomcat源码

    WebWork源码分析: WebWork的核心在于它的Action系统,它通过处理用户请求并调用相应的业务逻辑来驱动应用程序。源码中包含了Action、Interceptor、Result等关键组件的实现。Action是处理用户请求的入口点,...

    webwork_框架文档

    WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理机制以及对AJAX的支持,这些都使得开发更高效、更易于维护。 在WebWork框架中,`Action`是核心组件,它负责处理用户请求并执行业务逻辑。每个...

Global site tag (gtag.js) - Google Analytics