在使用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提供了异常处理机制,你可以定义Action错误处理方法来显示相应的错误消息。 7. **用户体验**:为了让用户知道文件上传或下载的状态,可以使用AJAX或者WebWork的异步更新功能来显示进度条或状态提示。 8. **...
10. **错误处理与异常处理**:WebWork提供了优雅的错误处理机制,包括自定义异常类和全局异常处理器。这部分内容将教你如何处理和显示错误信息。 11. **测试**:WebWork支持单元测试和集成测试,文档会讲解如何编写...
5. **异常处理**:WebWork提供了一套统一的异常处理机制,可以将异常信息转化为用户友好的错误页面。 **文件解析:** 1. **README.html**:通常包含项目的简要介绍、安装指南和使用注意事项。 2. **webwork-2.1.7....
在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...
WebWork是一种基于Java的轻量级MVC(Model-View-Controller)框架,它在2000年代初期被广泛使用,特别是在企业级应用开发中。这个“培训教程-WebWork ppt(内附源码)”显然是为了帮助开发者理解和掌握WebWork框架而...
- **实施WebWork动作**:第四章讲解了如何实现WebWork中的动作,包括动作的定义、参数传递、异常处理等内容。 - **使用拦截器增加功能**:第五章重点介绍了拦截器的作用及其配置方法,读者可以通过拦截器来增强动作...
### WebWork详细讲解 #### WebWork概述 WebWork是由OpenSymphony组织开发的一款专注于组件化和代码重用的MVC模式的J2EE Web框架。该框架的核心目标是简化Web应用的开发流程并提高开发效率。当前WebWork的最新版本...
WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化支持以及强大的视图渲染机制。在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于...
2. 强大的异常处理:WebWork2.0提供了一套完善的异常处理机制,可以将异常转换为用户友好的错误信息。 3. 动态方法调用:通过URL可以直接调用Action类的任何公开方法,提高了灵活性。 4. AJAX支持:WebWork2.0内建了...
这个是我查看了大量的网上文档后,利用webwork的上传机制写的一个上传到例子。因为网上很多都转来转去的文档。能不能不运行,还不一定。改起来很费时,所以我把我写的上传上去。力争做到用最少的代码和简单配置来...
在提供的"Webwork2 Guide.pdf"文档中,你可能会学习到如何安装配置WebWork2环境,创建和运行第一个WebWork应用程序,理解Action和Interceptor的工作原理,以及如何利用WebWork的特性进行表单处理、异常管理和国际化...
4. 异常处理:WebWork2提供了全局异常处理器,可以统一处理未被捕获的异常,避免页面显示不友好。 5. 动态方法调用(Dynamic Method Invocation,DMI):允许通过URL直接调用对象的方法,增强了路由的灵活性。 6. ...
2. 异常处理:通过全局异常处理器,WebWork可以统一处理应用程序中的异常,提供友好的错误页面。 3. 国际化与本地化:WebWork支持多语言环境,方便开发者实现应用的国际化。 4. AJAX支持:WebWork提供了与AJAX集成...
通过分析这些代码,你可以更好地理解WebWork中如何实现多文件上传的完整流程。 总结起来,WebWork的多文件上传涉及了前端表单设计、后端Action处理、文件存储策略等多个环节。理解并掌握这一过程对于构建健壮的Web...
在本教程中,我们将探讨如何利用WebWork实现文件上传功能,特别是针对Excel文件的处理。 首先,理解WebWork的MVC模式至关重要。在WebWork框架中,控制器负责接收用户请求,调用业务逻辑,并将结果传递给视图进行...
总之,使用WebWork上传Excel并导入MySQL数据库是一项常见的任务,涉及到前端交互、文件上传处理、Excel解析和数据库操作等多个技术领域。理解并熟练掌握这些知识点对于开发企业级应用至关重要。在实践中,不断优化和...
Webwork2是一款基于Java的开源框架,主要用于构建企业级的Web应用程序。这个框架以其强大的MVC(模型-视图-控制器)架构而闻名,能够帮助开发者实现高效、可维护的代码结构。OpenDoc出品的"Webwork2开发指南.pdf"是...
WebWork源码分析: WebWork的核心在于它的Action系统,它通过处理用户请求并调用相应的业务逻辑来驱动应用程序。源码中包含了Action、Interceptor、Result等关键组件的实现。Action是处理用户请求的入口点,...
WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理机制以及对AJAX的支持,这些都使得开发更高效、更易于维护。 在WebWork框架中,`Action`是核心组件,它负责处理用户请求并执行业务逻辑。每个...