也谈 ASP.NET 1.1 中 QueryString 的安全获取写法
来源:互联网 发布:华为机顶盒破解软件 编辑:程序博客网 时间:2024/06/07 00:46
刚才读到这个帖子:
http://www.cnblogs.com/arielyang/archive/2006/01/16/318044.html?Pending=true#Post
作者利用反射的方法,并且结合页面基类的做法,实现了一种 QueryString 的方便的读取方法。
然而,在我看来,这种做法有些太重了。而我通常采用的做法如下叙述如下。
在一个公共的方法类里面这样写,
private Util() {}
// 从 querystring 集合中安全的取得一个 string. (总是不会有 null,所以叫做 'Safe')
public static string GetStringSafeFromQueryString(Page page, string key) {
string value = page.Request.QueryString[key];
return (value == null) ? string.Empty : value;
}
// 在上述基础上,实现几个常用类型的获取方法。
public static int GetInt32SafeFromQueryString(Page page, string key, int defaultValue) {
string value = GetStringSafeFromQueryString(page, key);
int i = defaultValue;
try {
i = int.Parse(value);
} catch {}
return i;
}
// double 的实现
public static double GetDoubleSafeFromQueryString(Page page,
string key, double defaultValue) {
string value = GetStringSafeFromQueryString(page, key);
double d = defaultValue;
try {
d = double.Parse(value);
} catch {}
return d;
}
// 同理可以写出 float, 的实现
}
在我的任何页面里面,要获取 querystring 的时候,只要这样就可以了:
比如我要获取一个 string:
if (name.Length > 0) {
// 进行正常的处理
} else {
// 不处理。
}
获取 int:
处理 double, float 等等方法完全一样。
我认为就一个 QueryString 的处理没必要上升到反射的高度,其实有时候反过来想想,实现的那么复杂也许会丧失一定的灵活性。比如我某个值忽然要改为从 Form 里面得到呢?从 Session 得到呢?这时候就可以比较出哪种做法更适合敏捷的适应需求。
页面里的 QueryString 的处理,之所以大家都很痛恨手工写编码,无非是因为这么几点:
1. 需要判断是否 == null 才敢用 .ToString(), 很不爽。稍微不注意,就会抛出异常导致页面错误。
2. 整形,double 等值类型从 QueryString 里面获取的时候,不知道是否为合法的数值,因此 Parse 的时候总是要写重复的处理异常的代码。
归纳一下,其实,一个页面用下列语法获取一个 QueryString 的时候,他得到的是如下东西:
(假设用 string name = Request.QueryString["name"]; 来获取。)
1. ...test.aspx 得到 null
2. ...test.aspx?name= 得到 ""
3. ...test.aspx?name=abc 得到 "abc"
我认为 1 和 2 的情况实际上从程序处理上来讲,是没有区别的。因此判断 null 没有必要,我们每次都将 null 的值自动让他转为 string.Empty 应该是比较安全的做法。
基于上述理由,我觉得如我上面所写的简单的工具类,就可以轻量级的解决安全的读取 QueryString 的问题。
有不对的地方,请大家多多指教。
- 也谈 ASP.NET 1.1 中 QueryString 的安全获取写法
- 【转贴】也谈 ASP.NET 1.1 中 QueryString 的安全获取写法
- ASP.NET中QueryString安全获取写法
- request.querystring 在asp.net的前台html中如何获取
- 关于ASP.NET中Request.QueryString的乱码问题
- 关于ASP.NET中Request.QueryString的乱码问题
- 关于ASP.NET中Request.QueryString的乱码问题
- ASP.NET中加密与解密QueryString的方法
- Asp.net中request.QueryString与request.Params的区别
- Asp.net中request.QueryString与request.Params的区别
- 关于ASP.NET中Request.QueryString的乱码问题
- ASP.NET中Request.QueryString[int]和Request.QueryString[string]的区别
- asp中querystring的用法
- asp中querystring的用法
- asp.net中Request.QueryString乱码
- asp.net的Request.QueryString乱码
- ASP.NET 以 Request.Querystring、Request.Form 或 Request.Params 获取客户端的数据
- ASP.NET 以 Request.Querystring、Request.Form 或 Request.Params 获取客户端的数据
- python 学习之输出流重定向
- 使用某些 DOCTYPE 时会导致 document.body.scrollTop 失效
- Janc 学习摘要
- ViewState 剖析
- Page 的生命周期学习小结
- 也谈 ASP.NET 1.1 中 QueryString 的安全获取写法
- VSS 错误 "Error reading from file" 的修复方法
- 动态生成缩略图
- 写了一个八皇后解法
- ASP.NET 中基于角色的窗体身份验证的研究
- 拼音加加 4.0 正式版发布了
- 现在我采用的 php 开发的程序架构
- to do
- php 学习之 session