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

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

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

    Sky's blog

    我和我追逐的夢(mèng)

    常用鏈接

    統(tǒng)計(jì)

    其他鏈接

    友情鏈接

    最新評(píng)論

    誰(shuí)在創(chuàng)建session(1)-不恰當(dāng)?shù)膔equest.getSession()

        在HttpServlet中,HttpSession對(duì)象通常在request.getSession(true)方法調(diào)用時(shí)才創(chuàng)建。HttpSession的使用是有代價(jià)的,需要占用服務(wù)器資源,本著能不浪費(fèi)就不浪費(fèi)的原則,我希望系統(tǒng)中的session都在掌握之中,在需要?jiǎng)?chuàng)建時(shí)由我們的代碼明確創(chuàng)建。但是最近在開(kāi)發(fā)中發(fā)現(xiàn),新的session對(duì)象經(jīng)常在意料之外出現(xiàn),究竟是誰(shuí)在創(chuàng)建session呢?

        最常見(jiàn)的地方是錯(cuò)誤的使用request.getSession()函數(shù),通常在action中檢查是否有某個(gè)變量/標(biāo)記存放在session中。這個(gè)場(chǎng)景中可能出現(xiàn)沒(méi)有session存在的情況,正常的判斷應(yīng)該是這樣:

    private boolean ifFlagExistInSession(HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        if (session != null) {
            if (session.getAttribute("flagName")  != null) {
                return true;
            }
        }
        return false;
    }

        而下面的寫法,則可能會(huì)生成一個(gè)新的不在我們意圖之外的session:
    private boolean ifFlagExistInSession(HttpServletRequest request) {
        HttpSession session = request.getSession();   // a new session created if no session exists
        if (session.getAttribute("flagName")  != null) {
            return true;
        }
        return false;
    }

        注意request.getSession() 等同于 request.getSession(true),除非我們確認(rèn)session一定存在或者sesson不存在時(shí)明確有創(chuàng)建session的需要,否則請(qǐng)盡量使用request.getSession(false)。

    posted on 2007-12-19 11:41 sky ao 閱讀(2961) 評(píng)論(1)  編輯  收藏 所屬分類: web

    評(píng)論

    # re: 誰(shuí)在創(chuàng)建session(1)-不恰當(dāng)?shù)膔equest.getSession() 2007-12-19 15:33 隔葉黃鶯

    一般的(可能有些servlet實(shí)現(xiàn)不是這樣的),默認(rèn)的訪問(wèn)用戶第一次 jsp 頁(yè)面就會(huì)創(chuàng)建 session 的,因?yàn)?jsp 中指令 session 配置為 true,即
    <%@ page session="true"%>

    編譯出來(lái)的的 java 文件在 _jspService() 方法中有代碼行(Tomcat是這樣的)

    session = pageContext.getSession();

    除非你顯示設(shè)置
    <%@ page session="false"%>
    才會(huì)讓你自己 getSession(true)或 getSession()時(shí)創(chuàng)建session

    其實(shí)創(chuàng)建一個(gè) session 并不耗什么資源,無(wú)非就是一個(gè)空的map,就是別往里面塞太多的東西,尤其是在集群環(huán)境下,會(huì)增加同步的負(fù)擔(dān)。  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 亚洲日韩精品无码专区加勒比| 无遮挡国产高潮视频免费观看| 午夜免费福利影院| 永久免费无码网站在线观看个| 亚洲Av永久无码精品三区在线 | 久久亚洲精品无码gv| 亚洲精品和日本精品| 国产电影午夜成年免费视频| 精品亚洲成a人在线观看| 亚洲AV无码专区国产乱码4SE| 西西大胆无码视频免费| 成在线人免费无码高潮喷水| 亚洲国产成人综合| 久久久精品国产亚洲成人满18免费网站 | 国产精成人品日日拍夜夜免费| 亚洲精品乱码久久久久久V| 亚洲熟女少妇一区二区| 四色在线精品免费观看| 一级毛片aaaaaa免费看| 久久综合亚洲色一区二区三区| 国产精品酒店视频免费看| 精品无码国产污污污免费网站| 国产精品成人亚洲| 中文字幕人成人乱码亚洲电影| 免费观看激色视频网站bd| 亚洲日本一线产区和二线| 亚洲国语精品自产拍在线观看 | 亚洲日韩精品一区二区三区无码 | 国产性生交xxxxx免费| 亚洲精品免费在线| 九一在线完整视频免费观看| 亚洲成a人片在线观看精品| 亚洲精品卡2卡3卡4卡5卡区| 免费欧洲美女牲交视频| a级毛片免费完整视频| 亚洲狠狠色丁香婷婷综合| 91亚洲自偷手机在线观看| 亚洲中文字幕无码中文字在线 | 亚洲国产精品成人精品无码区在线| 国产成人免费手机在线观看视频 | 成人免费无毒在线观看网站 |