当前位置: 代码迷 >> Web前端 >> struts2 和 ewebeditor不能下传的冲突有关问题解决办法
  详细解决方案

struts2 和 ewebeditor不能下传的冲突有关问题解决办法

热度:126   发布时间:2012-10-08 19:54:56.0
struts2 和 ewebeditor不能上传的冲突问题解决方法
在集成ewebeditor到项目中时出了问题,不能上传图片,开始以为是配置没有配置好,找了一遍后发现没有问题,后来在网上找到了两篇文章。
http://hi.baidu.com/hsazj/blog/item/33f032119404251bb9127b89.html

http://aiesechugo.spaces.live.com/blog/cns!60E32E617081B7AA!6430.entry
很是奇怪,两人都说解决了这个问题,不知道他们是怎么解决的,其实两个人都只解决了一半。现在把我修改的问题做一个详细配置说明。

首先:也是很重要的,在web.xml中,为了防止出现struts出现不能使用的意外情况,配置时如下:
<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

正如其中一人说所,struts2把说有的都请求都出了一遍。处理代码如下:
try {
	            prepare.createActionContext(request, response);
	            prepare.assignDispatcherToThread();
	            prepare.setEncodingAndLocale(request, response);
	            request = prepare.wrapRequest(request);
	            ActionMapping mapping = prepare.findActionMapping(request, response);
	            if (mapping == null) {
	                boolean handled = execute.executeStaticResourceRequest(request, response);
	                if (!handled) {
	                    chain.doFilter(request, response);
	                }
	            } else {
	                execute.executeAction(request, response, mapping);
	            }
	        } finally {
	            prepare.cleanupRequest(request);
	        }

这就就造成我们无法访问的最终原因,当图片上传时其实是被struts截获了,并且出了,这样ewebeditor后台处理时就会出现一定的问题,导致最终不能上传。
   还有一个原因是ewebeditor使用的.jsp文件来上传,那么就和struts在处理的时候有冲突,当然,按第一种方法最简单,只需要在try{}catch之前加上判断,如果是图片上传,那么就不处理。但是jsp后坠多少有点不好(我也没有去测试,我是改过来的。为的是免得以后和jsp造成冲突),个人认为,最好的解决方案是,把后缀改下,当然要改的地方也就多了。具体改的方法见连接。
  相关解决方案