uploadify上传导致session丢失解决方案
来源:互联网 发布:四川广电网络怎么缴费 编辑:程序博客网 时间:2024/05/17 12:19
uploadify上传用的是一个flash插件。
flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致
导致问题
在进行 权限控制 登录的用户会存储session 导致 session获取不到 上传失败
解决思路
创建监听器存储session信息
在通过uploadify上传时候 存储sessionId
在权限控制中根据sessionId获取原有的session信息
解决方案
1.首先创建一个存储session和获取session和移除session的公共类
java代码:
public class CmsSessionContext { private static final Map<String,HttpSession> ctx=new HashMap<String, HttpSession>(); private CmsSessionContext (){ } public static void addSession(HttpSession session){ ctx.put(session.getId(), session); } public static void remoceSession(HttpSession session){ ctx.remove(session.getId()); } public static HttpSession getSession(String sessionId){ return ctx.get(sessionId); }}
2.创建session的监听器
/** * session的监听器为了解决uploadify上传session丢失的问题 * @author Administrator * */public class CmsSessionListener implements HttpSessionListener { //创建session @Override public void sessionCreated(HttpSessionEvent event) { } //关闭浏览器退出session销毁 @Override public void sessionDestroyed(HttpSessionEvent event) { CmsSessionContext.remoceSession(event.getSession()); System.out.println("移除了session"+event.getSession().getId()); }}
在web.xml配置监听器
<!-- 配置获取session的监听器 --> <listener> <listener-class>org.cms.web.CmsSessionListener</listener-class> </listener>
3.在登录成功之后存入session
CmsSessionContext.addSession(session); System.out.println("存储了session"+session.getId());
4.在上传页面传递sessionId
使用隐藏域存储当前的sessionId
根据 uploadify 的 formData 属性 传递sessionId
html代码:
<input type="hidden" id="sid" value="<%=session.getId()%>"/><input type="file" id="attach"name="attach" /> <input type="button" id="uploadFile"value="上传文件" />
$(function() { $('#attach') .uploadify( { 'swf' : $("#ctx").val() + '/resources/uploadify/uploadify.swf', 'uploader' : 'upload', //服务器段访问的名称 'fileObjName' : 'attach', //限制文件上传类型 'fileTypeExts' : '*.gif; *.jpg; *.png; *.txt', //不能自动上传 'auto' : false, 'formData':{"sid":$("#sid").val()}, 'onUploadSuccess' : function(file, data, response) { //alert('The file ' // + file.name // + ' was successfully uploaded with a response of ' // + response + ':' + data); //字符串转换成json var ao = $.parseJSON(data); //alert(ao.result); } }); $("#uploadFile").click(function() { $("#attach").uploadify("upload", "*"); }); });
5.在权限控制的拦截器中 获取sessionId
/** * 如果使用uploadify进行文件的上传,由于flash的bug问题,会产生一个新的session,此时验证失败 * 所以必须在此处获取一个原有的session,然后重置session信息 */ //如果是uploadify上传获取sid String sid=request.getParameter("sid"); if(sid!=null&&!"".equals(sid.trim())){ //当sid有值,就表示是通过uploadify上传文件,此时就应该获取原有的session session=CmsSessionContext.getSession(sid); }
6.在退出登录的方法中移除session
public String logout(HttpSession session){ //移除session CmsSessionContext.addSession(session); //session失效 session.invalidate(); return "redirect:/login"; }
0 0
- uploadify上传导致session丢失解决方案
- uploadify 上传 session丢失
- Uploadify上传Session丢失问题
- 解决uploadify上传丢失session问题
- jquery文件上传插件uploadify在.NET中session丢失的解决方案
- 基于jQuery和Flash的多文件上传插件uploadify在asp.net下session丢失解决方案
- uploadify 丢失session解决方法
- 使用Uploadify在FF中出现session假丢失解决方案
- 解决php uploadify上传文件时session丢失的问题
- Uploadify配置记录以及上传Session丢失问题解决java版
- 删除文件目录导致ASP.NET Session丢失的解决方案
- uploadify,swfupload等flash上传session丢失问题,无法接收到表单
- Uploadify上传Session问题解决方法
- 上传组件 uploadify 导致在firefox下 session 不一致问题 ie正常
- 上传组件 uploadify 导致在firefox下 session 不一致问题 ie正常
- java应用jquery uploadify 3.2 丢失session
- java应用uploadify 3.2丢失session
- uploadify 3.2 java应用丢失session
- HVM的调试方法
- Android ANR 分析解决方法
- 使用椭圆曲线进行加密解密
- Python性能鸡汤
- linux man命令
- uploadify上传导致session丢失解决方案
- **msf 连接不上数据库**
- Java中关于单例模式的10个面试问题
- 很讲究的雕爷牛腩
- git stash 常用命令用法
- qt 杂项
- ASM管理文件,数据库删掉表空间后数据文件自动删除
- AfxGetApp()的使用
- 地名地址编码工具