<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-57  評論-117  文章-1  trackbacks-0

         我們都知道普通的文件上傳是通過表單進行文件上傳的,還不能達到異步上傳的目的。通過使用某些技術手段,比如jquery form.js可以達到異步上傳的目的,但最重要的問題在于,它不能夠進行多個文件的上傳。如果你要上傳多個文件,必須一個一個地上傳,同時還要在界面上處理當上傳完一個文件之后,下一個文件上傳框的問題。
        現在我們有了一個更多的運行,即使用swfupload進行多文件異步上傳。顧名思義,它是一個flash的上傳工具,但在界面上的表現形式使它和普通的html元素一樣,沒有復雜的展現,就一個普通的上傳框,即可達到想要目的。

        關于swfupload的使用這里自不必多,這里主要介紹的是解決在java web開發過程中經常碰到的驗證失敗的問題。這是因為flash在上傳的時候使用的是和瀏覽器不同的會話,flash的SWFUpload上傳利用socket套接字進行通信,所以導致session和原來上一次的會話不同,導致session丟失。這樣就導致服務器在驗證時自然被認為是新會話,從而驗證不能通過,導致上傳不能成功了。
        解決問題的方法,就是讓flash在上傳文件的時候帶上同在一個界面的session標識,這通常是修改其中的upload_url來達到我們的目的,修改如下所示:

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

    上面這句話,必須放到jsp界面上,因為里面使用到了JavaWeb的語法,當然這可以修改,通過將<%=session.getId()%> 或 ${pageContext.session.id } 放到特殊的js變量中,可以達到隱藏變量的目的。比如如下的代碼:
    <!-- 這句要房子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"]),

    以上方案是解決在jsp頁面中解決的取值java的變量值;

    如上代碼的第一句放到jsp文件中,如jsp的公共include文件中。下面一句就放到js文件中,如引入的upload.js文件當中。
        但以上代碼還存在一個問題,就是默認的sessionName問題。在tomcat或者其它j2ee容器,默認的sessionName也是 jsessionId。如果我們修改了sessionName如通過tomcat的server.xml修改session_cookie_name,這樣默認的sessionName就是我們修改之后的了。解決此問題,需要再加一個參數設置才可,如下所示:

     

    <!-- 這三行放在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"])

    以上代碼的前三行放到公共的include.jsp中,最后一行放到公共的upload.js中。這樣即可滿足最終要求了。
    不過有一點不好的即是,在部署環境中時,如果部署環境修改了sessionName,則必須在此include.jsp中修改一個具體的sessionName才可。

    轉載請標明出處:i flym
    本文地址:http://www.iflym.com/index.php/code/201108190001.html



    作者:hoojo
    出處:
    blog:http://blog.csdn.net/IBM_hoojo
             http://hoojo.cnblogs.com
    本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


    版權所有,轉載請注明出處 本文出自:
    分享道版權所有,歡迎轉載,轉載請注明出處,謝謝
    posted on 2012-05-11 14:14 hoojo 閱讀(2967) 評論(0)  編輯  收藏 所屬分類: Ajax【富客戶端技術】HTML/CSSJavaEEJsp/Servlet
    主站蜘蛛池模板: 免费jlzzjlzz在线播放视频| 成年女性特黄午夜视频免费看| 亚洲 另类 无码 在线| 一本色道久久88亚洲精品综合| 100000免费啪啪18免进| 亚洲天堂一区在线| 91香蕉成人免费网站| 亚洲一区二区三区高清视频| 亚洲高清中文字幕免费| 亚洲偷自精品三十六区| 毛片免费全部免费观看| 亚洲AⅤ男人的天堂在线观看| 国产猛烈高潮尖叫视频免费| 另类小说亚洲色图| 亚洲VA综合VA国产产VA中| 曰韩无码AV片免费播放不卡| 日韩亚洲变态另类中文| 无码国产精品一区二区免费vr| 亚洲视频一区二区三区| 欧亚精品一区三区免费| 国产精品亚洲综合天堂夜夜| 国产成人免费a在线视频app| 一级做a爰全过程免费视频毛片| 不卡一卡二卡三亚洲| 精品无码国产污污污免费网站 | 亚洲AV成人精品日韩一区18p| 一本久久免费视频| 久久亚洲国产视频| 久久精品免费一区二区喷潮| 污污的视频在线免费观看| 亚洲精品无码久久久久| 青娱乐免费在线视频| 爱情岛论坛免费视频| 少妇中文字幕乱码亚洲影视 | 美女被吸屁股免费网站| 激情97综合亚洲色婷婷五| 亚欧免费一级毛片| 日韩国产欧美亚洲v片| 亚洲日产韩国一二三四区| 99在线视频免费观看视频 | 国产在线国偷精品免费看|