导航

目   录: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
 /// <summary>
/// Cookies工具
/// </summary>
public abstract class Cookies
{
/// <summary>
/// 写cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <param name="strValue">值</param>
public static void Set(string strName, object strValue, bool isAddPrefix = true); /// <summary>
/// 写cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <param name="value">值</param>
/// <param name="expires">过期时间(分钟)</param>
public static void Set(string strName, object value, int expires, bool isAddPrefix = true); /// <summary>
/// 读cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <returns>cookie值</returns>
public static string Get(string strName, bool isAddPrefix = true); /// <summary>
/// 读cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <param name="defValue">默认值</param>
/// <returns>cookie值</returns>
public static T Get<T>(string strName, T defValue, bool isAddPrefix = true); /// <summary>
/// 移除cookie值
/// </summary>
/// <param name="strName">名称c</param>
/// <returns></returns>
public static void RemoveCookie(string strName, bool isAddPrefix = true);
}
  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
     /// <summary>
/// Session工具
/// </summary>
public abstract class Sessions : IRequiresSessionState
{
/// <summary>
/// 从 Session 读取 键为 name 的值
/// </summary>
/// <param name="name">SessionID</param>
public static string Get(string name, bool isAddPrefix = true); /// <summary>
/// 从 Session 读取 键为 name 的值
/// </summary>
/// <param name="strName">SessionID</param>
/// <param name="defValue">为空时返回的值</param>
public static T Get<T>(string strName, T defValue, bool isAddPrefix = true); /// <summary>
/// 向 Session 保存 键为 name 的, 值为 value
/// </summary>
/// <param name="name">SessionID</param>
/// <param name="value">插入的值</param>
public static void Set(string strName, object value, bool isAddPrefix = true); /// <summary>
/// 从 Session 删除 键为 name session 项
/// </summary>
/// <param name="name">SessionID</param>
public static void Remove(string strName, bool isAddPrefix = true); /// <summary>
/// 删除所有 session 项
/// </summary>
public static void RemoveAll();
}
  1.   增加了对泛型的支持。
  2.   增加了名称前缀的支持。可以到:System.config配置文件中的Session_Prefix进行设置
  3.   增加对TimeOut的控制。可以到:System.config配置文件中的Session_TimeOut进行设置
  4.   增加移除所有的方法:RemoveAll()
  5.   取不到值时(不存在)返回参数默认值。
Request
 /// <summary>
/// Request操作类
/// </summary>
public abstract class Req
{
/// <summary>
/// 请求类型
/// </summary>
public enum SubmitType
{
/// <summary>
/// Get
/// </summary>
Get = , /// <summary>
/// Post
/// </summary>
Post = , /// <summary>
/// Get 和 Post (Post优先)
/// </summary>
All =
} /// <summary>
/// 获取当前应用程序访问的完整路径信息
/// http://localhost:1480/WebSite2/Default.aspx?UserID=1
/// </summary>
/// <returns></returns>
public static string GetUrl() /// <summary>
/// 获取当前应用程序访问的域名(带端口)
/// www.xxx.com:81
/// </summary>
/// <param name="node">要获取第几个节点,0:不限制</param>
public static string GetDomain(int node = ) /// <summary>
/// 获取当前应用程序访问的路径(不带域名、不带页面文件名、URL重写地址的真实路径)
/// /Manage/
/// </summary>
public static string GetTruePath() /// <summary>
/// 获取当前应用程序访问的路径(不带域名、不带页面文件名)
/// /Manage/
/// </summary>
public static string GetPath() /// <summary>
/// 获取当前应用程序访问的页面文件名称(不带参数)
/// Default.aspx
/// </summary>
public static string GetPageName() /// <summary>
/// 获取当前应用程序访问的参数
/// </summary>
public static string GetParams() /// <summary>
/// 解析成参数字符串
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
public static string ParseParams(Dictionary<string, string> dic) /// <summary>
/// 上一个页面地址
/// </summary>
public static string GetPrevious() /// <summary>
/// 判断当前页面是否接收到了提交请求
/// </summary>
public static bool IsSubmit(SubmitType submitType = SubmitType.Post) /// <summary>
/// 返回指定的服务器变量信息
/// </summary>
/// <param name="strName">服务器变量名</param>
/// <returns>服务器变量信息</returns>
public static string GetServerString(string strName) /// <summary>
/// 得到当前完整主机头
/// </summary>
/// <returns></returns>
public static string GetCurrentFullHost() /// <summary>
/// 得到主机头
/// </summary>
/// <returns></returns>
public static string GetHost() /// <summary>
/// 判断是否来自搜索引擎链接
/// </summary>
/// <returns>是否来自搜索引擎链接</returns>
public static bool IsSearchEnginesGet() /// <summary>
/// 返回表单或Url参数的总个数
/// </summary>
/// <returns></returns>
public static int GetParamCount() /// <summary>
/// Request.QueryString
/// </summary>
public static string QS(string parmsName) /// <summary>
/// Request.QueryString
/// </summary>
public static T QS<T>(string parmsName, T defValue) /// <summary>
/// Request.QueryString
/// </summary>
public static string QS(string parmsName, Encoding encoding) /// <summary>
/// Request.QueryString
/// </summary>
public static T QS<T>(string parmsName, T defValue, Encoding encoding) /// <summary>
/// Request.Form
/// </summary>
public static string QF(string parmsName) /// <summary>
/// Request.Form
/// </summary>
public static T QF<T>(string parmsName, T defValue) /// <summary>
/// 先QF后QS
/// </summary>
/// <param name="parmsName"></param>
/// <returns></returns>
public static string QA(string parmsName) /// <summary>
/// 先QF后QS
/// </summary>
/// <param name="parmsName"></param>
/// <returns></returns>
public static T QA<T>(string parmsName, T defValue) /// <summary>
/// 获得当前页面客户端的IP
/// </summary>
/// <returns>当前页面客户端的IP</returns>
public static string GetIP() /// <summary>
/// 判断当前访问是否来自浏览器软件
/// </summary>
/// <returns>当前访问是否来自浏览器软件</returns>
public static bool IsBrowserGet() /// <summary>
/// 判断是否有上传的文件
/// </summary>
/// <returns>是否有上传的文件</returns>
public static bool IsPostFile() /// <summary>
/// 保存用户上传的文件
/// </summary>
/// <param name="path">保存路径</param>
public static void SaveRequestFile(string path) /// <summary>
/// Post信息
/// </summary>
public static string Post(HttpClient wc, string url, string data, Encoding encoding = null) /// <summary>
/// 获取端口
/// </summary>
/// <returns></returns>
public static int GetPort() /// <summary>
/// 把服務器返回的Cookies信息寫入到客戶端中
/// </summary>
public static void WriteCookies(HttpClient wc) /// <summary>
/// 记住用户最后一次访问地址
/// </summary>
public static void RememberUrl() /// <summary>
/// 转到网址
/// </summary>
public static void GoToUrl(string url, params object[] args) /// <summary>
/// 转到网址(默认为最后一次访问)
/// </summary>
public static void GoToUrl(string url = "") /// <summary>
/// 把提交过来的内容转化成为实体类(注意CheckBox 未选中时,是NULL,需要手动判断)
/// </summary>
/// <param name="request">NameValueCollection</param>
/// <param name="prefix">控件前缀</param>
/// <param name="tip">弹出框事件委托</param>
/// <param name="url">跳转地址</param>
public static TInfo Fill<TInfo>(NameValueCollection request, Action<string, string> tip = null, string url = "",
string prefix = "hl") where TInfo : ModelInfo, new() /// <summary>
/// 把提交过来的内容转化成为实体类(注意CheckBox 未选中时,是NULL,需要手动判断)
/// </summary>
/// <param name="request">NameValueCollection</param>
/// <param name="prefix">控件前缀</param>
/// <param name="tip">弹出框事件委托</param>
public static TInfo Fill<TInfo>(NameValueCollection request, Action<Dictionary<string, List<string>>> tip,
string prefix = "hl") where TInfo : ModelInfo, new() /// <summary>
/// 把提交过来的内容转化成为实体类(注意CheckBox 未选中时,是NULL,需要手动判断)
/// </summary>
/// <param name="request">NameValueCollection</param>
/// <param name="prefix">控件前缀</param>
/// <param name="dicError">返回错误消息,key:属性名称;value:错误消息</param>
public static TInfo Fill<TInfo>(NameValueCollection request, out Dictionary<string, List<string>> dicError, string prefix = "hl") where TInfo : ModelInfo, new()
}

  这里有有很多方法,我在这里就不一一说明了。其中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的目标是:快速上手、快速开发、简单方便。

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

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

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: Cookies.Session.Request 下一篇:Farseer.net轻量 ...

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: SQL执行报告 下一篇:Farseer.net轻量级开源框架 中级篇: Cooki ...

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 ...

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseM ...

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

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

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据库切换 下一篇:Farseer.net轻量级开源框架 中级篇: 探究ORM(M ...

  7. Farseer.net轻量级开源框架 中级篇:事务的使用

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: Where条件的终极使用 下一篇:Farseer.net轻量级开源框架 中级篇: ...

  8. Farseer.net轻量级开源框架 中级篇:执行SQL语句

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 事务的使用 下一篇:Farseer.net轻量级开源框架 中级篇: DbFacto ...

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 执行SQL语句 下一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 ...

随机推荐

  1. mysql11---主键普通全文索引

    .1主键索引添加 当一张表,把某个列设为主键的时候,则该列就是主键索引 create table aaa (id int unsigned primary key auto_increment , n ...

  2. 建立自己的私有docker(ssl&login auth)

    建立私有docker需要先建立ssl证书,然后建立htpass的登陆证书 最后使用nginx配置docker-compose.yml 参考: https://www.digitalocean.com/ ...

  3. mac系统下设置eclipse的补全快捷键方法

    eclispe Word Completion 的默认快捷键是Alt+/eclipse Content Assist 的默认快捷键是Ctrl+Space在使用中发现Word Completion经常导 ...

  4. Linux网络协议栈(二)——套接字缓存(socket buffer)

    Linux网络核心数据结构是套接字缓存(socket buffer),简称skb.它代表一个要发送或处理的报文,并贯穿于整个协议栈.1.    套接字缓存skb由两部分组成:(1)    报文数据:它 ...

  5. Python基础第七天

    一.内容 二.练习 练习1 题目:编写函数,函数执行的时间是随机的 图示: 代码: import time import random def func(): s = 1 l = [] for i i ...

  6. Git 仓库结构 (一)***

    Git 仓库      1.1Git 基本概念    在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Gi ...

  7. 小程序-demo:小熊の日记

    ylbtech-小程序-demo:小熊の日记 1.CHANGELOG.md # -- * 更新开发者工具至`v0.10.101100` * 修改`new`页的数据绑定方式 & 修改多行文本框输 ...

  8. 小程序-demo:小程序示例

    ylbtech-小程序-demo:小程序示例     1.返回顶部 0. 1.app.js const openIdUrl = require('./config').openIdUrl App({ ...

  9. 异常备忘:java.lang.UnsupportedClassVersionError: Bad version number in .class file

    转自:https://blog.csdn.net/myyugioh/article/details/7724915 今天在导入一个工程时,编译并打包到Tomcat后,发现出现java.lang.Uns ...

  10. c语言struct和c++的class的暧昧

    c语言风格的封装 数据放在一起,以引用和指针的方式传给行为c++ 认为封装不彻底 1数据和行为分开 对外提供接口 2没有权限设置 看看struct的一个例子 //data.h //c语言风格的封装 数 ...