<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)論   

    主站蜘蛛池模板: 亚洲电影一区二区三区| 我要看WWW免费看插插视频| 亚洲人成影院在线无码按摩店 | 亚洲第一网站免费视频| 嫩草成人永久免费观看| 久久久久亚洲精品天堂| 中国人xxxxx69免费视频| 亚洲成人免费网址| 成人AV免费网址在线观看| 亚洲日本人成中文字幕| 久久久久久99av无码免费网站| 国产 亚洲 中文在线 字幕| 日韩一区二区免费视频| 国产精品亚洲专区在线播放| 夜色阁亚洲一区二区三区| 精品无码国产污污污免费网站国产| 日韩va亚洲va欧洲va国产| 88xx成人永久免费观看| 亚洲免费网站在线观看| 国产成人无码a区在线观看视频免费 | gogo免费在线观看| 亚洲avav天堂av在线不卡| 又粗又大又黑又长的免费视频| 亚洲日韩亚洲另类激情文学| 日本免费高清一本视频| 一级毛片免费视频网站| 久久久久亚洲精品美女| 青娱分类视频精品免费2| 国产精品手机在线亚洲| 国产v亚洲v天堂无码网站| 成人免费观看一区二区| 国产亚洲午夜精品| 4444亚洲国产成人精品| 成人永久免费高清| 国色精品va在线观看免费视频| 亚洲人成人77777网站不卡| 国产一区二区三区在线观看免费| 久久高潮一级毛片免费| 精品亚洲国产成人| 国产亚洲美女精品久久久2020| 成年人视频免费在线观看|