以下属于asp内置对象的是
ASP内置对象一共就那么几个,下属考试却总爱拿它们做文章。内置Response、对象Request、下属Server、内置Session、对象Application、下属ObjectContext——这六个才是内置正主。很多人把Cookies也算进去,对象其实那是下属Response和Request的属性,不是内置独立对象。
拿个实际场景说事儿。对象你写个登录页面,下属用户输了密码点提交,内置浏览器把数据甩给服务器。对象这时候Request对象就登场了,它负责接住表单里传来的用户名和密码。紧接着你得回应人家,Response.Write输出一段欢迎语,或者Response.Redirect把人踹到主页去。一来一回,这俩对象是ASP里最忙的伙计,一天到晚跑前跑后。
Session和Application这俩容易混。Session是单人间,每个访客各住各的,存购物车、存登录状态正合适。你往Session里塞了个变量,换台电脑就没了,因为那是跟浏览器会话绑定的。Application则是大通铺,所有访客共享,聊天室在线人数、全局计数器这类东西放这儿。有个坑得提醒你——Application里的数据是所有用户都能改的,写的时候得加锁,不然并发操作能把数据搅成一锅粥。
Server对象像个万能工具人。Server.CreateObject能创建组件,Server.MapPath能把虚拟路径翻译成物理路径,Server.HTMLEncode能防XSS攻击。我见过不少人写文件上传功能时,直接拿Server.MapPath拼路径,结果目录不存在就报错——这时候Server.CreateObject("Scripting.FileSystemObject")配合FolderExists检查一下,能省不少事。
ObjectContext这个家伙比较特殊,它跟MTS(微软事务服务器)打交道。你要处理银行转账这种需要事务的操作,就得靠它来保证要么全成功要么全回滚。平时写小网站基本碰不到它,但你要是做企业级应用,这玩意儿就是保命符。
还有个容易忽略的点:Response对象里有个Buffer属性,默认是True。这玩意儿决定了你是攒够了一整页再发给浏览器,还是边写边发。以前调试程序时喜欢设成False,这样出错了能立刻看到输出到哪一步,但生产环境千万别这么干——性能差得不是一星半点。
最后说个冷知识:ASP里没有内置的Cookie对象,但很多人写代码时习惯直接写Response.Cookies("user")="张三",看起来像是个独立对象。实际上这行代码是在调用Response的Cookies集合,底层还是Response在干活。考试要是出判断题问“Cookies是ASP内置对象”,你得敢打叉。
总结一下识别方法:看MSDN文档里ASP对象列表,只有那六个带“对象”后缀的才是正牌货。其他的像Request.QueryString、Response.Cookies,都是集合或属性,别被名字骗了。下次再有人拿这个考你,直接把这六个名字甩他脸上,保准没错。