本帖最后由 jueyue 于 2013-9-16 23:02 编辑
首先我先介绍下问题: 可能很多朋友都发现,根据jeecg demo中上传文件,在IE下没有问题,但是在firefox或者chrome就没有办法了,但是demo却可以 解决这个问题, 我们要先接触下flash 在各个浏览器下的使用,ie 下flash 是在ie 受控下使用的, 所以可以和ie 共享session, 而firefox 和chrome 等flash 都是重新new 一个session 这造成sessionID 是新的, 在jeecg 中认证
file:///C:/Users/jueyue/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 发现session中sessionInfo没有,这样firfox和chrome就无法完成上传了 其实jeecg中为了上传问题作了两个方式: 第一种就是这个excludeUrls 排除在外的 在spring-mvc.xml中有这个excludeUrls 配置
file:///C:/Users/jueyue/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
第二个是一劳永逸的方法使用jsessionid 把sessionId强制设置为浏览器原来的 ,但是这个玩意好像被spring屏蔽了,查了google 没有找到解决办法,所以这个基本上就告别了,但是我们还是可以有更好的解决方法 1. 这个实现比较简单,和excludeUrls类似增加这个参数excludeMenthods即使用上传的方法 这样比较容易配置,比如saveImage,saveFile等配置几个就可以搞定了,不用没有url都写一次,比这jeecg的就很容易实现了,这个也是我的实现方法,统一命名,而且只允许post 2. 这个还是使用jsessionid来实现,不过session.getSessionContext().getSession(sessionId); 这个方法已经被java干掉了,所以我们只能自己写一个SessionManager了,
但是要在jsp页面中添加 <input id='sessionUID' value='<%=session.getId()%>'type="hidden"/> 这样才会加入到url中,这个可以看UploadTag源码
这个是ff的分析 [url=http://pan.baidu.com/share/link? ... 0&uk=2936138743]百度盘[/url]
|