一、项目基本环境:struts2等
二、基本需求&问题:需要自己写程序调用common-fileupload来处理上传的文件,但在代码调用upload.parseRequest(request)来处理时,返回了空的items
三、处理方法
1、按照网上找到对该问题的相关处理方法:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
修改为
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
这个处理方法的细节可以参考
http://topic.csdn.net/u/20090514/10/ba62c761-e591-4c9e-859a-87907634ea13.html
2、我的处理方法
对于第1钟处理方式,网友们的意思应该是别让请求经过struts2,免得inputStream被提前读取了。虽然这样可以正常使用common-fileupload了,但这样就不经过struts2的拦截器了,而我又想让它拦一次,于是,我自己实现一个servlet.Filter,并且把它的filter次序放到struts2的filter次序之前。主要源码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
chain.doFilter(new StrutsRequestWrapper((HttpServletRequest) request), response);
}
这里先用StrutsRequestWrapper来给他wrapper一次,这样在经过struts2的filter的时候就不会有问题了。为啥呢?可以自己看看这个类
org.apache.struts2.dispatcher.Dispatcher里面的wrapRequest方法,有这么个判断:
// don't wrap more than once
if (request instanceof StrutsRequestWrapper) {
return request;
}
挺恶心的处理方式吧,我也觉得。因为暂时没想到更好的处理方式了,先这样做,把功能实现先。
如果以后有其他网友看到我这里的记录,而且有更好的建议,欢迎一起讨论。
分享到:
相关推荐
fileList = upload.parseRequest(request);上传file文件和form表单提交 common-fileupload实例
//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。 ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> items = upload....
使不支持JSON.parse的浏览器,可以使用JSON.parse方法。 提供兼容性。
还有一个最简单的实现深拷贝的方式,那就是利用 JSON.parse(JSON.stringify(object)) ,但是也 存在一定的局限性。
http://blog.csdn.net/alanchen520/article/details/34409913
NULL 博文链接:https://speed-guo.iteye.com/blog/903163
var key = CryptoJS.enc.Utf8.parse("1234567890000000"); //16位 var iv = CryptoJS.enc.Utf8.parse("1234567890000000"); var encrypted = ''; if (typeof(word) == 'string') { var srcs = CryptoJS.enc.Utf...
解决JSON.parse()在IE7下不兼容( JSON在IE下未定义)问题。 直接引用就可以。 摘要必须大于100个字节!摘要必须大于100个字节!
目的:tomcat10版本导致List<FileItem> fileItems = sfu.parseRequest(request) 入参的HttpServletRequest必须为:import jakarta.servlet.http.HttpServletRequest; 运行cmd,再该目录下执行: 执行步骤:java -...
序列化可能不符合IEEE 754整数精度的值作为JSON API中的字符串是一个好主意,但是{ "value" : 9223372036854775807}例如仍然是有效的RFC4627 JSON字符串,并且在大多数JS运行时中JSON.parse的对象是此对象: { ...
jspsmartuploa.jar 是一个很好用的文件上传下载工具报。适合与小项目。里面有丰富的源码示例, 还有使用说明两份,非常非常棒,欢迎下载使用。 我以前项目使用过,但是后来被摒弃了,因为jspsmartupload.jar已经很久...
文章目录URL地址编码模块作用常用的方法urllib.parse.utlencode({dict})urllib.parse.quote(string)编码urllib.parse.unquote(string)解码 URL地址编码模块 模块 urllib.parse 作用 对URL地址中的查询参数进行编码...
方法说明: 将字符串转成对象。...querystring.parse(str, [sep], [eq], [options]) 接收参数: str 欲转换的字符串 sep 设置分隔符,默认为 ‘&’ eq 设置赋值符,默认为 ‘=’ [options] maxKeys
下面小编就为大家带来一篇关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
如果给Object.prototype添加一个解析json的方法(某人可能会强烈反对这么干污染了原生对象,这里纯粹为了讨论) 代码如下: Object.prototype.parseJSON = function () { return JSON.parse(this)
如下sql,JSON_OBJECT函数中存在CAST函数,随后报出ParseException问题! SELECT JSON_ARRAYAGG(obj) FROM (SELECT trt.relevance_id,JSON_OBJECT('id',CAST(trt.id AS CHAR),'taskName',trt.task_name,'openStatus'...
try {List items = upload.parseRequest(request);Iterator itr = items.iterator(); while (itr.hasNext()) {FileItem item = (FileItem) itr.next();if (item.isFormField()) { System.out.println("表单参数名:" ...
JSON.parse() 方法用于将一个 JSON 字符串转换为对象。 >str1 = {'distance': 1, 'update_time': 'None', 'n_homalt_N_het': '13/3822', 'ratio': '-', 'quality': '451'} {'distance': 1, 'update_time': 'None', '...
主要介绍了JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能,结合实例形式分析了JSON.parse()与JSON.stringify()方法实现深拷贝的相关实现技巧与操作注意事项,需要的朋友可以参考下