zoukankan      html  css  js  c++  java
  • 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 的, 值为 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在上几篇文章中已经说明过了。因为它非常常用,所以我在这里在啰嗦一下。

      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()
  • 相关阅读:
    window
    pages
    百度小程序 配置 app.json 文件
    JavaScript Cookie
    jQuery ajax
    jQuery ajax
    jQuery ajax
    jQuery
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/steden/p/4079366.html
Copyright © 2011-2022 走看看