包裝你的Session,使Session對象化

           在Web開發中,經常需要使用Session來保存特定用戶的信息,在我們的程序中很多地方散落著類似下面的語句:
           int userAge = (int)this.Session["UserAge"];
              
              我們知道,Session中存放的是鍵值對,鍵是string類型的,如果我們一不小心把上面的語句寫成這樣:
            int userAge = (int)this.Session["UseAge"];
              編譯期不會發現這個錯誤,但運行時一定會拋出異常,這是在程序中直接操作Session可能引發的問題之一。另外,每次獲取userAge的時候都要寫代碼進行強制轉換,感覺很繁瑣。我們需要一個解決方案來解決這些問題。我的做法是引入一個Session的包裝,使之對象化、強類型化。就像接下來的例子一樣:
          public class SessionHelper
          {
              
          private HttpSessionState curSession;

              
          public SessionHelper(HttpSessionState session)
              {
                  
          this.curSession = session;
              }

              
          public static SessionHelper CreateInstance(HttpSessionState session)
              {        
                  
          return new SessionHelper(session);
              }


              
          public string UserID
              {
                  
          get
                  {
                      
          return this.curSession["UserID"].ToString();
                  }
                  
          set
                  {
                      
          this.curSession["UserID"= value ;
                  }
              }

              
          public int UserAge
              {
                  
          get
                  {
                      
          return (int)this.curSession["UserAge"];
                  }
                  
          set
                  {
                      
          this.curSession["UserAge"= value ;
                  }
              }

              
          //某用戶上傳的所有圖片
              public ArrayList PicList
              {
                  
          get
                  {
                      
          if (this.curSession["PicList"== null)
                      {
                          
          this.curSession["PicList"= new ArrayList();
                      }

                      
          return (ArraayList)this.curSession["PicList"];
                  }       
              }

              
          //清空圖片列表
              public void ClearAllPics()
              {
                  
          this.PicList.Clear();
              }  
          }

              這樣,我們用起來就非常方便了:
                 SessionHelper sessionHelper = SessionHelper.CreateInstance(this.Session);
                  ArrayList picList 
          = sessionHelper.PicList;
                  
          //    處理picList中的圖片
                  sessionHelper.ClearAllPics();  

              引入這一層包裝,可以使我們的程序的可讀性、可維護性更好,而且將原來的一些運行期的錯誤提前到了編譯期,這也是強類型帶來的好處。

          posted on 2008-01-11 09:36 靈! 閱讀(284) 評論(0)  編輯  收藏 所屬分類: Java技術-基礎語法 、Java技術-Session

          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          隨筆分類

          隨筆檔案

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 洛隆县| 邛崃市| 益阳市| 汉阴县| 奉贤区| 正定县| 黄浦区| 新巴尔虎左旗| 许昌市| 昂仁县| 南召县| 万荣县| 无锡市| 会同县| 吴川市| 聂荣县| 庆阳市| 安远县| 尉氏县| 名山县| 正蓝旗| 南靖县| 南漳县| 肇源县| 东平县| 永春县| 固阳县| 藁城市| 年辖:市辖区| 万荣县| 武胜县| 屯昌县| 武邑县| 淮滨县| 鄱阳县| 钦州市| 镇坪县| 遵化市| 宿迁市| 屏山县| 安宁市|