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

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

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

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

1 new User { ID = 1, Name = "张三" }.Insert()
时间: 2024-10-10 17:36:08

Farseer.net轻量级开源框架 中级篇:Cookies、Session、Request的相关文章

Farseer.net轻量级开源框架 中级篇:自定义配置文件

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 什么是自定义配置文件 目前系统提供了多个配置文件,一些开发过程中常用到的一些配置. 既然是配置,那么说明一些设置可能会根据项目的不同而有所不同.比如web.config其实就是个配置文件. 当我们定义好配置文件后,在项目运行的时调用了配置,都将在:~/App_Data/  文件夹中生成(如果不存在这

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

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: Cookies.Session.Request 下一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseMasterPage基类说明 MVC有路由在手,对于重写URL那是小菜一碟,更或者说是与身就有的“技能”,而面对.Net的WebForm就比较尴尬了.对UrlRewriter处在相对比较薄弱的环节.

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

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: SQL执行报告 下一篇:Farseer.net轻量级开源框架 中级篇: Cookies.Session.Request 在Farseer.Net 中 ORM的核心在命名空间:FS.ORM . 目前只有4个类文件.其实这4个文件只要是用来做数据库与实体模型之间的映射关系及缓存.至于SQL生成.不同数据库的驱动支持等 在另外的命名空间:FS.Core 中. 对于ORM来说,我们在转换

Farseer.net轻量级开源框架 中级篇:数据库切换

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 下一篇:Farseer.net轻量级开源框架 中级篇: SQL执行报告 上文中讲述了,在项目运行过程中,如何通过代码动态改变数据库的访问,这种方式更加倾向于实体类相同,有多个相同的表结构. 本篇中讲述的是,如何快速切换不同的数据库.比如你现在使用在使用SqlServer 哪天数据库老板心血来潮,让你换成Oracle了,怎么办? 这种数据库的切换在ORM中能明显突出

Farseer.net轻量级开源框架 中级篇:动态数据库访问

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 自定义配置文件 下一篇:Farseer.net轻量级开源框架 中级篇: 数据库切换 说到动态数据库的访问,不得不说的是,我们的实体类,是如何找到数据库配置并访问的呢? 回顾下我们的Users类: 1 [DB(Name = "Members_User")] 2 public class Users : BaseModel<Users>; 这里有个DB的特性,其

Farseer.net轻量级开源框架 中级篇:常用的扩展方法

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseMasterPage.BaseControls基类使用 下一篇:Farseer.net轻量级开源框架 中级篇: 常用工具 在使用框架的时候,都需要引用扩展方法的命名空间:using FS.Extend; 1 /// <summary> 2 /// 将值转换成类型对像的值(此方法作为公共的调用,只支持

Farseer.net轻量级开源框架 中级篇:BasePage、BaseController、BaseHandler、BaseMasterPage、BaseControls基类使用

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: UrlRewriter 地址重写 下一篇:Farseer.net轻量级开源框架 中级篇: 常用的扩展方法 BasePage基类:  在Asp.Net中我们建立的aspx页面都是继承在:System.Web.UI.Page.在使用Farseer后,需要继承到:FS.Core.Page.BasePage中. BaseController基类: 在Asp.Net中我们建立的mvc控制器

Farseer.net轻量级开源框架 中级篇:SQL执行报告

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据库切换 下一篇:Farseer.net轻量级开源框架 中级篇: 探究ORM(Mapping) 很多时候,我们希望能知道我们写的项目在运行过程中到底执行了哪些SQL语句,或者说一个页面中访问了几次数据库.好让我们在优化的时候提供一些方向. 举个例子,作者在有时候,会自信的认为这个页面很简单,估计也就顶多5条SQL语句就可以了.可是当打开SQL报告之后才吓傻眼,几十条SQL,看的

Farseer.net轻量级开源框架 中级篇:DbFactory数据工厂

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 执行SQL语句 下一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 越讲到后面,我们离基础的语法越远了.看到这篇文章,先恭喜下,说明大家已经能用该框架做日常的开发了. 当然还有一些绑定技巧,比如把枚举.List<Users>绑定到DorpDownList.CheckBoxList.RadioButtonList 并显示中文 在下一篇中再解释. 这一篇中,我们主要讲