您的位置:首页 > 编程语言 > Java开发

Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传

2013-12-14 17:00 471 查看

Java利用SWFUpload多文件上传session为空失效,不能验证的问题(转)

[code]upload_url:"/admin/infobuild/image/upload.action;jsessionid=${pageContext.session.id}"

[/code]
[/code]

上面这句话,必须放到jsp界面上,因为里面使用到了JavaWeb的语法,当然这可以修改,通过将<%=session.getId()%>或${pageContext.session.id}放到特殊的js变量中,可以达到隐藏变量的目的。比如如下的代码:
[code]
[code]<!--这句要房子jsp页面中的script脚本中,或是放在servlet的response.getWriter()流中的script脚本中;总之要在swfupload的js引入之前执行-->

window["sessionId"]="${pageContext.session.id}";

<!--这句话就可以在引入的js中使用-->

upload_url:Gtip.util.addContextPath("/admin/infobuild/image/upload.action;jsessionId"+"="+window["sessionId"]),

[/code]
[/code]
以上方案是解决在jsp页面中解决的取值java的变量值;

如上代码的第一句放到jsp文件中,如jsp的公共include文件中。下面一句就放到js文件中,如引入的upload.js文件当中。
但以上代码还存在一个问题,就是默认的sessionName问题。在tomcat或者其它j2ee容器,默认的sessionName也是jsessionId。如果我们修改了sessionName如通过tomcat的server.xml修改session_cookie_name,这样默认的sessionName就是我们修改之后的了。解决此问题,需要再加一个参数设置才可,如下所示:

[code]
[code]<!--这三行放在include导入的那个jsp的页面中-->

window["contextPath"]="${pageContext.request.contextPath}";

window["sessionId"]="${pageContext.session.id}";

window["sessionName"]="jsessionId";


//js中使用jsp中设置的window的变量值

upload_url:addContextPath("/admin/infobuild/image/upload.action;"+window["sessionName"]+"="+window["sessionId"])

[/code]
[/code]

以上代码的前三行放到公共的include.jsp中,最后一行放到公共的upload.js中。这样即可满足最终要求了。
不过有一点不好的即是,在部署环境中时,如果部署环境修改了sessionName,则必须在此include.jsp中修改一个具体的sessionName才可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: