




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Coldfusion初级培训
软件编程培训资料培训目标Coldfusion简介熟悉Coldfusion常用技巧了解使用Coldfusion本卷须知熟悉JS在IE及Firefox常见兼容问题COLDFUSION简介 ColdFusion〔直译:冷聚变〕出生于1995年夏天(7月13),创始人JJAllaire、JeremyAllaire,最初设计用途是用来帮助撰写HTML的程序设计师们能够设计出与数据库互动的网页应用程序。它既是一种应用效劳器也是一种编程语言,主要用于商业〔需购置〕应用效劳器。 ColdFusion语言〔CFML-ColdFusionMarkupLanguage〕是模仿HTML、功能强大的编程语言,拥有图表功能、全文检索引擎、WebServices、FlashRemoting等模块定制功能。它具有以下一些特点:1.易学易用。2.开发效率高。3.扩展性强,可自定义标签。4.可移植。5.基于J2EE核心。Coldfusion常用技巧-IsValid
1,使用IsValid函数
语法: IsValid(type,value)
IsValid(“range”,value,min,max)
IsValid(“regex”or“regular_expression”,value,pattern)
例如:
a.If(NOTIsvalid(‘email’,form.email))
//邮件无效;
b.If(Isvalid(‘variableName’),url.abc) ‘#url.abc#’=123; else //URL参数有误 c.If(!IsValid('range',Discount,0,100)) //折扣无效 d.IsValid("regex","abc123","[a-z]{0,3}[0-9]*") //正那么表达式Coldfusion常用技巧-IsValidIsValid函数参数:[type]any:等同于IsSimpleValue(),判断是否为简单变量array:等同于IsArray(),判断是否为数组binary:等同于IsBinary(),判断是否为二进制数据.boolean:等同于IsBoolean().creditcard:是否为一个13-16位的信用卡dateortime:等同于IsDate()email:判断是否为email格式.eurodate:是否为日期格式(包含US时间格式在内)floatornumeric:等同于IsNumeric().guid:是否为一个美国身份证号码.integer:是否为整型query:同等于IsQuery().range:是否在min-max范围内(IsValid('range',30,12,66)>>yes)regex
or
regular_expression:正则表达式判断.ssn
or
social_security_number:是否为一个美国安全号码.string:是否为一个字符串(由字母和数字组成)struct:等同于IsStruct().telephone:是否为一个美国标准电话号码.URL:是否为一个URL地址(http,https,ftp,file,mailto),UUID:是否为一个UUID.USdate:是否为美国时间格式(mm/dd/yy).zipcode:是否为5位或者9位的邮编.variableName:是否为一个合法的变量名.Coldfusion常用技巧-空白处理2,页面代码空白处理 Coldfusion产生的缩进CML代码的空白,可以采取以下方法进行处理.. a.ColdfusionAdministrator中Setting中,启用”SuppressWhitespace”,可以智能压缩常规空白b.<cfsettingenablecfoutoutonly=‘yes’>只显示output内容 c,<cfsilent>无条件压缩空白,包括output内容,例如: <cfsilent> <cfloopquery=‘userlist’> …….. </cfloop> </cfsilent> d,<cfprocessingdirectivesuppresswhitespace=‘no’>也可以压缩空白,另外 <suppresswhitespace=‘no’>用于保存<PRE>空白,例如:
<cfprocessingdirectivesuppresswhitespace=‘no’> <PRE> [空白行]…. </PRE> </cfprocessingdirective> e,禁止方法中输出内容,如<cffunctionoutput=‘false’>Coldfusion常用技巧-CFQuery3,CFQuery的一些技巧
a.动态访问cfquery的数据,queryName[columnname][row],如 qRate[qCurrency.FieldName][1] b,cfquery内置方法 void queryName.first()跳到第一个记录
void queryName.last()跳到最后一个记录
boolean queryName.isFirst()
是否为第一条记录
boolean queryName.isLast()是否为最后一条记录
boolean queryName.next()下一条记录
boolean queryName.previous()上一记录
int queryName.findColumn(Stringname)通过列名返回列ID〔由0开始〕
void sort(intcolumnID,booleanascending)排序
string getColumnTypeName(intcolumnID)返回列类型 array getMetaData(queryname),返回cfquery的元数据,可以得到真实的字段 名列表,不按字母排序,例如:queryname[1].name得到第一列字段名.Coldfusion常用技巧-CFQueryc,指定cfquery的result属性,例如<cfqueryresult=‘qresult’>,可以了解到cfquery详细执行情况,
Cached 是否使用了缓存
Columnlist 影响到的列
Executiontime 执行时间
Recordcount 返回记录数
SQL 所使用的SQL语句d,Cfscript快速读取cfquery<cfscript>while(quser.next()){ writeoutput(quser.next.UserEmail);}</cfscript>Coldfusion常用技巧-缓存4,使用缓存提高性能 a.使用”查询高速缓存”,例如: <cfquerycachedwithin="#CreateTimeSpan(0,0,15,0)#"> 实现功能:当第一次执行该sql以后,将结果保存在内存中15分钟,下次访问该页面的时候直接从内存中读取数据,不再跟数据库交互,15分钟以后重新到数据库取得数据并存放到内存.也可以使用下面的语句马上去除缓存. <cfquerycachedwithin="#CreateTimeSpan(0,0,0,-1)#"> 对于不经常更新的数据,使用这个特性可以大大提高程序性能. 本卷须知: *使用去除缓存功能的时候要保持两个cfquery中的代码及相关属性完全一致! *设置最大缓存数量限制,以免占用大量系统RAM资源(Coldfusionadministrator- >Caching>Maximumnumberofcachedtemplates),比方设置为20. *当cfquery返回记录数大于100时,添加BlockFactor=“100”,以提高整体查询性能
如:<cfqueryname=“qUser”BlockFactor=“100”…>Coldfusion常用技巧-缓存 b,使用客户端”页面缓存”,例如: <cfcacheaction=“ClientCache”TimeOut=“#DateAdd(‘h’,-3,now())#”> 在页面顶部添加以上代码,浏览器将在3小时内自由的使用页面的本地副本,如果需要缓存所有页面,在Application.cfm添加该代码即可. c,使用效劳器端”页面缓存”,例如: <cfcacheaction=“Cache”TimeOut=“#DateAdd(‘h’,-30,now())#”> 这句话告诉Coldfusion,本页面只需要每隔30分钟实际执行一次,当浏览器第一次发送请求时,它将该页面作为一个单独的,静态的文件保存在效劳器驱动器上,下次访问时就直接发回文件的静态版本. 本卷须知: *使用效劳器缓存技术以后,效劳器不再为每一个用户生成独立的页面,并且共享Client、Cookie、Session变量,涉及使用相关变量的页面建议使用客户端缓存. *带URL参数的页面将将作为不同页面独立缓存。 *使用<cfcacheaction=“Flush”>手工去除缓存.Coldfusion常用技巧-加密5.数据平安(加密)通常需要对用户密码,银行相关帐号,或者业务机密等信息进行加密,以防止泄漏,coldfusion也提供了一对加解密函数,实现数据的加密.如下所示: <cfsetkey="@shark~softisland@@"> <CFSETencrypted=ENCRYPT(string,key)><!---加密---> <CFSETdecrypted=DECRYPT(encrypted,key)><!---解密---> 或者 <cfsetkey=GenerateSecretKey("DES")> <cfsetencrypted=Encrypt(string,Key,"DES","Base64")> <cfsetdecrypted=Decrypt(encrypted,Key,"DES","Base64")>注意:不能使用DECRYPT(encrypted,key)和DECRYPT(encrypted,key)来处理中文。使用Coldfusion本卷须知1,关于SQL注释,不要在使用<cfqueryparam的地方使用sql注释,例如: <cfquerydatasource="#DSN#">
updateUser
set
--Phone=<cfqueryparamcfsqltype="cf_sql_varchar" value="#form.phone#> 这样,偶尔会出现”Invalidparameterbinding(s)”错误. 可以使用<!---xxx--->进行注释2,一定要在<cfquery中使用<cfqueryparam标签,以防止SQL注入,但是请注意:在使用日期型数据时尽量不要用<cfqueryparam标签指定日期类型,因为系统被自动加上时区信息,建议使用‘’进行处理,例如: …wherecreatedate_datetime>‘#form.searhdate#’3,防止使用evaluate(),除非没有其他方法来写代码了(几乎总是有其他的方法来写代码)。4,使用struct.key或者struct[key],不要使用structFind(struct,key)。因为速度更快,可读性更好。使用Coldfusion本卷须知5,尽量不使用iif(),用cfif/cfelse取代iif(),效率更高,可读性也更好。6,Coldfusion中数据操作比字符串操作效率更高,但如果变量本是一个List,不要把List转变成一个array然后循环-因为总的速度不会快多少.7,针对大于64k的数据存储,需要在ColdfusionAdministrator中数据源选项中进行设置,在数据源编辑窗口中,点击“ShowAdvancedSettings”,设置”LongTextBuffer(chr)”或者BlobBuffer(bytes)”值,如:1024000。8,Coldfusion中默认开启了脚本保护功能,智能防止恶意代码,进入数据库之前会自动将<script>、<Iframe>、<Meta>等字符串进行替换,如果需要在某个目录下的代码中禁用脚本保护,比方将一些HTML及JS代码存入到数据库,可以参考以下代码: <cfifFindNoCase(‘HTMLCreate’,CGI.Script_Name)gt0> <cfapplicationScriptProtect=‘none’name=“web”
… <cfelse> <cfapplicationname=“web”
… </cfif>使用Coldfusion本卷须知9,Coldfusion会自动缓存Webservice,如果对Webservice进行了更新,需要去除Webservice缓存方能起效! 去除方法参考以下代码:
<!---得到系统中所有已经注册的WebService---> <cfobjectaction=“create” type=“java”
name=“factory” class=“coldfusion.server.ServiceFactory”> <cfsetxmlRpc=factory.getXMLRPCService()> <cfsetwebServices=xmlRpc.mappings> <cfloopitem=‘ws’collection=‘#webServices#’> <!---刷新注册信息---> <cfsetxmlRpc.refreshWebservice(ws)> <!---删除注册信息---> <cfsetxmlRpc.unregisterWebservice(ws)> </cfloop>JS在IE及Firefox常见兼容问题1,取得对象 IE:document.formName.item("itemName") FF:document.formName.elements["elementName"] IE:document.forms(“formName”)
document.getElementsByName(“inputName”)(1)
FF:document.forms[“formName”]
document.getElementsByName(“inputName”)[1]
IE:document.[对象ID] FF:document.getElementById([对象ID])
建议: *尽量使用对象ID属性,比方<inputname=‘n1’id=‘n1’> *总是使用document.getElementById([对象ID])取得对象,包括Iframe
*使用[]作为下标运算JS在IE及Firefox常见兼容问题2,捕捉window.event事件IE中可以使用window.eventFF中event只能在事件发生的现场使用,可以改写成事件=函数(event);functionsomemethod(evt){ evt=evt?evt:(window.event?window.event:null); alert(evt);}例如:<inputonclick=somemethod(event)>取得事件的坐标使用event.clientX/clientY,因为Firefox不支付event.x/y3,showModalDialog子窗口
IE中可以用showModalDialog一个子窗口,并获得返回值.
FF中没有showModalDialog,但可以用window.open来实现.
例如:
在Main.cfm文件中有如下代码:
JS在IE及Firefox常见兼容问题functionShowItemList(Obj){ if(document.all){//IE
varReturnValue=window.showModalDialog("ItemList.cfm?Id=321", "self","dialogwidth:600px;status:false");
if(typeOf(ReturnValue)!='undefined')
Obj.value=ReturnValue;
}
else{
varsubwin=window.open(subwin.cfm?id=321, 'newWin','modal=yes,width=600px');
}
}
functionReturnValue(ReturnValue){
Obj=document.getElementById('elementname');
Obj.value=ReturnValue;
}
JS在IE及Firefox常见兼容问题如果需要得到返回值.需要用到window.open的参数modal=yes,而且必须在子窗口中向母窗口传值(window.opener).
例如在subwin.cfm中参加以下代码:
functionReturnThisValue(){
w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽淮南市招聘村级后备干部81人考前自测高频考点模拟试题附答案详解
- 2025年襄樊市公务员考试行测真题及答案详解(夺冠系列)
- 2025年度天津市卫生健康委员会所属天津市安定医院第二批次招聘方模拟试卷及答案详解(必刷)
- 2025年杭州市临安区部分事业单位统一公开招聘工作人员笔试备考试题及答案详解(真题汇编)
- 2025云南广电传媒集团公开招聘工作人员(16人)考前自测高频考点模拟试题及参考答案详解1套
- 2025年海城市面向应届毕业生招聘医疗岗位高层次急需紧缺人才考前自测高频考点模拟试题及答案详解参考
- 渔场合作经营及渔业资源利用协议
- 物联网技术产品研发合作协议
- 渔业生产技术交流合作合同
- 2025年辅警招聘考试试题库及参考答案(达标题)
- 2023年柳州市小微企业融资担保有限公司招聘笔试模拟试题及答案解析
- DB4401-T 112.1-2021 城市道路占道施工交通组织和安全措施设置+第1部分:交通安全设施设置-(高清现行)
- (新版)心理学专业知识考试参考题库500题(含答案)
- 跨境电商亚马逊运营实务完整版ppt课件-整套课件-最全教学教程
- DB32-T 3755-2020 U型H型组合钢板桩支护技术规程-(高清现行)
- 2021年12月2022年上海市教育考试院招考聘用练习题及答案(第0版)
- 装饰装修临水临电施工组织设计
- 纺织服装项目融资申请报告(参考范文)
- XX小区业主委员会的设立申请书范本
- 四议两公开一监督
- 临时用电作业票(共2页)
评论
0/150
提交评论