Farseer.net輕量級開源框架 中級篇:Cookies、Session、Request

導航

目   錄:Farseer.net輕量級開源框架 目錄html

上一篇:Farseer.net輕量級開源框架 中級篇: 探究ORM(Mapping)node

下一篇:Farseer.net輕量級開源框架 中級篇: UrlRewriter 地址重寫瀏覽器

  Cookies、Session、Request是專門針對WEB項目的額外支持。服務器

  順便說下,今天有園友在羣裏問到ORM對MVC的支持。或者對WinForm支持嗎?對於ORM來講,自己是對錶現層沒有任何的聯繫。它僅僅是讓你在開發的時候,能以面向對象的思想(語法)去作交互。cookie

  不過做者長期主要在WebForm上作開發,因此對Web上的服務器控件支持的比較多而已。因此這裏你們不須要擔憂。session

 

  好,回到正題,Farseer對Cookies、Session、Request進行了二次封裝,固然這些封裝主要是爲了提供更多的一些使用上的靈活而封裝的。app

  它們均在命名空間:FS.Utils.Web 中。框架

Cookies
 1 /// <summary>
 2     ///     Cookies工具
 3     /// </summary>
 4     public abstract class Cookies
 5     {
 6         /// <summary>
 7         ///     寫cookie值
 8         /// </summary>
 9         /// <param name="strName">名稱</param>
10         /// <param name="strValue"></param>
11         public static void Set(string strName, object strValue, bool isAddPrefix = true);
12 
13         /// <summary>
14         ///     寫cookie值
15         /// </summary>
16         /// <param name="strName">名稱</param>
17         /// <param name="value"></param>
18         /// <param name="expires">過時時間(分鐘)</param>
19         public static void Set(string strName, object value, int expires, bool isAddPrefix = true);
20 
21         /// <summary>
22         ///     讀cookie值
23         /// </summary>
24         /// <param name="strName">名稱</param>
25         /// <returns>cookie值</returns>
26         public static string Get(string strName, bool isAddPrefix = true);
27 
28         /// <summary>
29         ///     讀cookie值
30         /// </summary>
31         /// <param name="strName">名稱</param>
32         /// <param name="defValue">默認值</param>
33         /// <returns>cookie值</returns>
34         public static T Get<T>(string strName, T defValue, bool isAddPrefix = true);
35 
36         /// <summary>
37         ///     移除cookie值
38         /// </summary>
39         /// <param name="strName">名稱c</param>
40         /// <returns></returns>
41         public static void RemoveCookie(string strName, bool isAddPrefix = true);
42     }
  1.   增長了對泛型的支持。
  2.   增長了名稱前綴的支持。能夠到:System.config配置文件中的Cookies_Prefix進行設置
  3.   增長對TimeOut的控制。能夠到:System.config配置文件中的Cookies_TimeOut進行設置
  4.   增長對域的控制。能夠到:General.config配置文件中的CookiesDomain進行設置。默認爲空(不限制),能夠填好比:bbs.xxx.com 或者  aaa.xxx.com
  5.   增長移除Cookies的方法。
  6.   取不到值時(不存在)返回參數默認值。

  若是使用Cookies託管,必需要了解到的是由Cookies託管的Cookies都被設置了Cookies前綴。這是由System.config配置文件中的Cookies_Prefix進行設置的。默認是有前綴的。若是發現系統的與Farseer提供的Cookies沒法兼容,則主要緣由是前綴的問題。工具

Session
 1     /// <summary>
 2     ///     Session工具
 3     /// </summary>
 4     public abstract class Sessions : IRequiresSessionState
 5     {
 6         /// <summary>
 7         ///     從 Session 讀取 鍵爲 name 的值
 8         /// </summary>
 9         /// <param name="name">SessionID</param>
10         public static string Get(string name, bool isAddPrefix = true);
11 
12         /// <summary>
13         ///     從 Session 讀取 鍵爲 name 的值
14         /// </summary>
15         /// <param name="strName">SessionID</param>
16         /// <param name="defValue">爲空時返回的值</param>
17         public static T Get<T>(string strName, T defValue, bool isAddPrefix = true);
18 
19         /// <summary>
20         ///     向 Session 保存 鍵爲 name 的, 值爲 value
21         /// </summary>
22         /// <param name="name">SessionID</param>
23         /// <param name="value">插入的值</param>
24         public static void Set(string strName, object value, bool isAddPrefix = true);
25 
26         /// <summary>
27         ///     從 Session 刪除 鍵爲 name session 項
28         /// </summary>
29         /// <param name="name">SessionID</param>
30         public static void Remove(string strName, bool isAddPrefix = true);
31 
32         /// <summary>
33         ///     刪除全部 session 項
34         /// </summary>
35         public static void RemoveAll();
36     }
  1.   增長了對泛型的支持。
  2.   增長了名稱前綴的支持。能夠到:System.config配置文件中的Session_Prefix進行設置
  3.   增長對TimeOut的控制。能夠到:System.config配置文件中的Session_TimeOut進行設置
  4.   增長移除全部的方法:RemoveAll()
  5.   取不到值時(不存在)返回參數默認值。
Request
  1 /// <summary>
  2     ///     Request操做類
  3     /// </summary>
  4     public abstract class Req
  5     {
  6         /// <summary>
  7         ///     請求類型
  8         /// </summary>
  9         public enum SubmitType
 10         {
 11             /// <summary>
 12             ///     Get
 13             /// </summary>
 14             Get = 0,
 15 
 16             /// <summary>
 17             ///     Post
 18             /// </summary>
 19             Post = 1,
 20 
 21             /// <summary>
 22             ///     Get 和 Post (Post優先)
 23             /// </summary>
 24             All = 255
 25         }
 26 
 27         /// <summary>
 28         ///     獲取當前應用程序訪問的完整路徑信息
 29         ///     http://localhost:1480/WebSite2/Default.aspx?UserID=1
 30         /// </summary>
 31         /// <returns></returns>
 32         public static string GetUrl()
 33 
 34         /// <summary>
 35         ///     獲取當前應用程序訪問的域名(帶端口)
 36         ///     www.xxx.com:81
 37         /// </summary>
 38         /// <param name="node">要獲取第幾個節點,0:不限制</param>
 39         public static string GetDomain(int node = 3)
 40 
 41         /// <summary>
 42         ///     獲取當前應用程序訪問的路徑(不帶域名、不帶頁面文件名、URL重寫地址的真實路徑)
 43         ///     /Manage/
 44         /// </summary>
 45         public static string GetTruePath()
 46 
 47         /// <summary>
 48         /// 獲取當前應用程序訪問的路徑(不帶域名、不帶頁面文件名)
 49         /// /Manage/
 50         /// </summary>
 51         public static string GetPath()
 52 
 53         /// <summary>
 54         ///     獲取當前應用程序訪問的頁面文件名稱(不帶參數)
 55         ///     Default.aspx
 56         /// </summary>
 57         public static string GetPageName()
 58 
 59         /// <summary>
 60         ///     獲取當前應用程序訪問的參數
 61         /// </summary>
 62         public static string GetParams()
 63 
 64         /// <summary>
 65         /// 解析成參數字符串
 66         /// </summary>
 67         /// <param name="dic"></param>
 68         /// <returns></returns>
 69         public static string ParseParams(Dictionary<string, string> dic)
 70 
 71         /// <summary>
 72         ///     上一個頁面地址
 73         /// </summary>
 74         public static string GetPrevious()
 75 
 76         /// <summary>
 77         ///     判斷當前頁面是否接收到了提交請求
 78         /// </summary>
 79         public static bool IsSubmit(SubmitType submitType = SubmitType.Post)
 80 
 81         /// <summary>
 82         ///     返回指定的服務器變量信息
 83         /// </summary>
 84         /// <param name="strName">服務器變量名</param>
 85         /// <returns>服務器變量信息</returns>
 86         public static string GetServerString(string strName)
 87 
 88         /// <summary>
 89         ///     獲得當前完整主機頭
 90         /// </summary>
 91         /// <returns></returns>
 92         public static string GetCurrentFullHost()
 93 
 94         /// <summary>
 95         ///     獲得主機頭
 96         /// </summary>
 97         /// <returns></returns>
 98         public static string GetHost()
 99 
100         /// <summary>
101         ///     判斷是否來自搜索引擎連接
102         /// </summary>
103         /// <returns>是否來自搜索引擎連接</returns>
104         public static bool IsSearchEnginesGet()
105 
106         /// <summary>
107         ///     返回表單或Url參數的總個數
108         /// </summary>
109         /// <returns></returns>
110         public static int GetParamCount()
111 
112         /// <summary>
113         ///     Request.QueryString
114         /// </summary>
115         public static string QS(string parmsName)
116 
117         /// <summary>
118         ///     Request.QueryString
119         /// </summary>
120         public static T QS<T>(string parmsName, T defValue)
121 
122         /// <summary>
123         ///     Request.QueryString
124         /// </summary>
125         public static string QS(string parmsName, Encoding encoding)
126 
127         /// <summary>
128         ///     Request.QueryString
129         /// </summary>
130         public static T QS<T>(string parmsName, T defValue, Encoding encoding)
131 
132         /// <summary>
133         ///     Request.Form
134         /// </summary>
135         public static string QF(string parmsName)
136 
137         /// <summary>
138         ///     Request.Form
139         /// </summary>
140         public static T QF<T>(string parmsName, T defValue)
141 
142         /// <summary>
143         ///     先QF後QS
144         /// </summary>
145         /// <param name="parmsName"></param>
146         /// <returns></returns>
147         public static string QA(string parmsName)
148 
149         /// <summary>
150         ///     先QF後QS
151         /// </summary>
152         /// <param name="parmsName"></param>
153         /// <returns></returns>
154         public static T QA<T>(string parmsName, T defValue)
155 
156         /// <summary>
157         ///     得到當前頁面客戶端的IP
158         /// </summary>
159         /// <returns>當前頁面客戶端的IP</returns>
160         public static string GetIP()
161 
162         /// <summary>
163         ///     判斷當前訪問是否來自瀏覽器軟件
164         /// </summary>
165         /// <returns>當前訪問是否來自瀏覽器軟件</returns>
166         public static bool IsBrowserGet()
167 
168         /// <summary>
169         ///     判斷是否有上傳的文件
170         /// </summary>
171         /// <returns>是否有上傳的文件</returns>
172         public static bool IsPostFile()
173 
174         /// <summary>
175         ///     保存用戶上傳的文件
176         /// </summary>
177         /// <param name="path">保存路徑</param>
178         public static void SaveRequestFile(string path)
179 
180         /// <summary>
181         ///     Post信息
182         /// </summary>
183         public static string Post(HttpClient wc, string url, string data, Encoding encoding = null)
184 
185         /// <summary>
186         ///     獲取端口
187         /// </summary>
188         /// <returns></returns>
189         public static int GetPort()
190 
191         /// <summary>
192         ///     把服務器返回的Cookies信息寫入到客戶端中
193         /// </summary>
194         public static void WriteCookies(HttpClient wc)
195 
196         /// <summary>
197         /// 記住用戶最後一次訪問地址
198         /// </summary>
199         public static void RememberUrl()
200 
201         /// <summary>
202         ///     轉到網址
203         /// </summary>
204         public static void GoToUrl(string url, params object[] args)
205 
206         /// <summary>
207         ///     轉到網址(默認爲最後一次訪問)
208         /// </summary>
209         public static void GoToUrl(string url = "")
210 
211         /// <summary>
212         ///     把提交過來的內容轉化成爲實體類(注意CheckBox 未選中時,是NULL,須要手動判斷)
213         /// </summary>
214         /// <param name="request">NameValueCollection</param>
215         /// <param name="prefix">控件前綴</param>
216         /// <param name="tip">彈出框事件委託</param>
217         /// <param name="url">跳轉地址</param>
218         public static TInfo Fill<TInfo>(NameValueCollection request, Action<string, string> tip = null, string url = "",
219                                         string prefix = "hl") where TInfo : ModelInfo, new()
220 
221         /// <summary>
222         ///     把提交過來的內容轉化成爲實體類(注意CheckBox 未選中時,是NULL,須要手動判斷)
223         /// </summary>
224         /// <param name="request">NameValueCollection</param>
225         /// <param name="prefix">控件前綴</param>
226         /// <param name="tip">彈出框事件委託</param>
227         public static TInfo Fill<TInfo>(NameValueCollection request, Action<Dictionary<string, List<string>>> tip,
228                                         string prefix = "hl") where TInfo : ModelInfo, new()
229 
230         /// <summary>
231         ///     把提交過來的內容轉化成爲實體類(注意CheckBox 未選中時,是NULL,須要手動判斷)
232         /// </summary>
233         /// <param name="request">NameValueCollection</param>
234         /// <param name="prefix">控件前綴</param>
235         /// <param name="dicError">返回錯誤消息,key:屬性名稱;value:錯誤消息</param>
236         public static TInfo Fill<TInfo>(NameValueCollection request, out Dictionary<string, List<string>> dicError, string prefix = "hl") where TInfo : ModelInfo, new()
237     }

  這裏有有不少方法,我在這裏就不一一說明了。其中QS/QF/QA在上幾篇文章中已經說明過了。由於它很是經常使用,因此我在這裏在囉嗦一下。ui

  QS全稱是:Request.QueryString 

  QF全稱是:Request.Form

  QA:先執行QF,若是沒有取到值,再執行QA

  在這裏進行了二次封裝的目的是加入了泛型的支持,不少時候咱們在獲取值的時候(Request.Form[""]、Request.QueryString[""])須要先判斷是否爲null值。而後再進去值的轉換(好比轉到int/bool/datetime)。

  使用QS/QF/QA 則能夠經過兩個參數進行以上的操做:QS("ID",0)  第1個參數是參數名稱、第2個參數是默認值。當轉換失敗,好比爲Null值或者爲非數字的字符串時,則返回0。經過這個0,咱們也能夠肯定爲int類型  因此整個返回的是INT類型。

總結

  基本上做者都沒有使用原生的以上提到的這些功能了,都是使用了框架提供的方法。在使用的過程當中,你們會發覺代碼量的開發明顯減小。

導航

目   錄:Farseer.net輕量級開源框架 目錄

上一篇:Farseer.net輕量級開源框架 中級篇: 探究ORM(Mapping)

下一篇:Farseer.net輕量級開源框架 中級篇: UrlRewriter 地址重寫

廣告時間

QQ羣:116228666 (Farseer.net開源框架交流) 請註明:Farseer.Net

Farseer.Net是一款ORM框架 + 經常使用工具 + 擴展集合。

Farseer 意爲:先知、預言家 一般在某些場合時,提供計謀、策略。也但願該框架能給你們提供最大化的便捷。

ORM:其英文全稱是:Object(對象) Relational(關係) Mapping(映射)

Farseer.Net的目標是:快速上手、快速開發、簡單方便。

1 new User { ID = 1, Name = "張三" }.Insert()
相關文章
相關標籤/搜索