在使用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中上传文件,webwork文件上传.doc
这个是我查看了大量的网上文档后,利用webwork的上传机制写的一个上传到例子。因为网上很多都转来转去的文档。能不能不运行,还不一定。改起来很费时,所以我把我写的上传上去。力争做到用最少的代码和简单配置来...
webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载
webwork in action 中文版
用于webwork构建的工程,当程序运行异常时,可以转入此页面,此代码可自动输出错误信息。
项目里需要实现webwork 上传与下载文件操作, 自己摸索过程中出现了很多问题,一一解决, 记录下来本准备做参考,现贡献给大家, 记得有点乱,耐心看完,一定会有帮助的。
使用webwork上传excel并导入数据库,上传时只能上传excel文件,数据库为mysql,可以根据需要自行修改。 数据库的配置也请自行修改。
webwork上传文件pdf文件说明文档
WebWork 文件上传 多个文件上传 范例
简单的使用webwork框架实现了文件上传的功能 主要是针对EXCEL文件
我自己写的。上次的只有上传没有下载。这次的添加了下载的功能。我自己备份用的。有需要可以参考。保证能够运行
非常好的Webwork2入门资料,OpenDoc出品
Web层:WebWork 中间层:Spring IoC 持久层:Hibernate, 需求分析: 用户在注册页面,填写注册信息,确认有效注册成为新用户 用户在登录页面,填写用户名和密码,确认正确后进入系统 用户可以在登录之后,浏览图书分类列表...
Web层:WebWork 中间层:Spring IoC 持久层:Hibernate, 需求分析: 用户在注册页面,填写注册信息,确认有效注册成为新用户 用户在登录页面,填写用户名和密码,确认正确后进入系统 用户可以在登录之后,浏览图书分类列表...
WEBWORK的配置
Struts 2 技术详解:基于WebWork核心的MVC开发与实践
webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程
第一部分:webwork 简介 第二部分: 核心概念 第三部分:内容显示 第四部分:高级话题
WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包
webWork 详细的说明文档, 由于我的上传大小有限, 这个好东西我只能是分两次上传了, 下载的人可能要辛苦一些了, 不过这些都是值得的, 将<<WebWork docs 2 -- webWork 详细的说明文档>> 也一同下载下来, 下载后两个...