首页 > 代码库 > Farseer.net轻量级开源框架 中级篇:Cookies、Session、Request

Farseer.net轻量级开源框架 中级篇:Cookies、Session、Request

导航

目   录:Farseer.net轻量级开源框架 目录

上一篇:Farseer.net轻量级开源框架 中级篇: 探究ORM(Mapping)

下一篇:Farseer.net轻量级开源框架 中级篇: UrlRewriter 地址重写

  Cookies、Session、Request是专门针对WEB项目的额外支持。

  顺便说下,今天有园友在群里问到ORM对MVC的支持。或者对WinForm支持吗?对于ORM来说,本身是对表现层没有任何的联系。它仅仅是让你在开发的时候,能以面向对象的思想(语法)去做交互。

  不过作者长期主要在WebForm上做开发,所以对Web上的服务器控件支持的比较多而已。所以这里大家不需要担心。

 

  好,回到正题,Farseer对Cookies、Session、Request进行了二次封装,当然这些封装主要是为了提供更多的一些使用上的灵活而封装的。

  它们均在命名空间: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 的, 值为 value21         /// </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.QueryString114         /// </summary>115         public static string QS(string parmsName)116 117         /// <summary>118         ///     Request.QueryString119         /// </summary>120         public static T QS<T>(string parmsName, T defValue)121 122         /// <summary>123         ///     Request.QueryString124         /// </summary>125         public static string QS(string parmsName, Encoding encoding)126 127         /// <summary>128         ///     Request.QueryString129         /// </summary>130         public static T QS<T>(string parmsName, T defValue, Encoding encoding)131 132         /// <summary>133         ///     Request.Form134         /// </summary>135         public static string QF(string parmsName)136 137         /// <summary>138         ///     Request.Form139         /// </summary>140         public static T QF<T>(string parmsName, T defValue)141 142         /// <summary>143         ///     先QF后QS144         /// </summary>145         /// <param name="parmsName"></param>146         /// <returns></returns>147         public static string QA(string parmsName)148 149         /// <summary>150         ///     先QF后QS151         /// </summary>152         /// <param name="parmsName"></param>153         /// <returns></returns>154         public static T QA<T>(string parmsName, T defValue)155 156         /// <summary>157         ///     获得当前页面客户端的IP158         /// </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在上几篇文章中已经说明过了。因为它非常常用,所以我在这里在啰嗦一下。

  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是一款ORM框架 + 常用工具 + 扩展集合。

Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。

ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)

Farseer.Net的目标是:快速上手、快速开发、简单方便。

1 new User { ID = 1, Name = "张三" }.Insert()

Farseer.net轻量级开源框架 中级篇:Cookies、Session、Request