1: 到底什么時候該用#符號把變量和表達式圍起來? 在CFML中,#是用來把ColdFusion變量或表達式從字符串中區(qū)分開的符號?梢园<CFOUTPUT> 和 </CFOUTPUT>當(dāng)中的內(nèi)容當(dāng)成一個字符串,其中的變量或表達式必須用#圍起來,ColdFusion在處理是就會對其做相應(yīng)的處理。但是,在標簽里,所有的數(shù)據(jù)都被當(dāng)作變量或表達式而不是字符串,因此不需要#(如:<CFSET x=y+1>)。所以只有在ColdFusion把數(shù)據(jù)當(dāng)成字符串時才要用#把變量或表達式區(qū)分開。 2: 在HTML中用#表示顏色時(如<CFOUTPUT><hr color="#FF0000">...</CFOUTPUT>),ColdFusion會出錯,如何解決? #在ColdFusion有其特殊的意義,是用來把變量和表達式從字符串中區(qū)分開的。而且必須配對使用,(如<CFOUTPUT>#now()#</CFOUTPUT>)如果ColdFusion發(fā)現(xiàn)只有一個#的話就報錯,解決的方法時用兩個#來轉(zhuǎn)義,如:<CFOUTPUT><hr color="##FF0000">...</CFOUTPUT>這樣就沒問題了。 3: 為什么有時候在輸出的HTML頁面里我得到的是#var#而不是實際的變量? 大多數(shù)情況下是因為你忘了用<CFOUTPUT> 和 </CFOUTPUT>標簽。 4: Verity是用來干什么的? Verity是一個全文搜索引擎。用來實現(xiàn)靈活快速的對特定文字進行搜索。ColdFusion中的Verity有兩種使用方法:1)使用Verity對硬盤上的文件按指定內(nèi)容進行搜索(包括文本文件,MS Word文檔等),2)Verity也可以對數(shù)據(jù)庫中的記錄進行搜索(特別是對文字內(nèi)容校多的字段)。 要使用Verity,請參考ColdFusion中的<CFSEARCH>標簽。 5: CFML條件判斷標簽可以嵌套使用嗎? CFML的條件判斷和流程控制標簽(如<CFIF>,<CFLOOP>)可以被嵌套使用,但過多的嵌套會影響執(zhí)行速度,所以盡量避免不必要的嵌套. 6: 在ColdFusion中使用隊列(lists)時,為什么空的元素會被忽略? ColdFusion隊列和CSV的有些區(qū)別,ColdFusion會忽略空的隊列元素,如:ListLen("a,b,,d,e")會返回4而不是5,執(zhí)行ListGetAt("a,b,,d,e",5)就會報錯。在這種情況下,可以先用Replace()函數(shù)把所有的",,"(逗號 逗號)替換為", ,"(逗號 空格 逗號)?崭袷且粋能被ColdFusion識別的隊列元素。 7: 什么時候要在<CFQUERY>內(nèi)的SQL語句中用到引號? 所有寫在<CFQUERY>和</CFQUERY>中的內(nèi)容都會被傳送到數(shù)據(jù)庫進行處理,和CFML不一樣,SQL不會對變量自動轉(zhuǎn)型,在寫SQL語句時必須嚴格遵守SQL語句的規(guī)范。所有字符串(包括被用作字符串的變量)都必須用單引號圍起來,而數(shù)值不能用引號圍起來,所用到的日期和時間也都必須符合相應(yīng)的格式。 8: 我該應(yīng)用 <CFINSERT> 和 <CFUPDATE> 標簽嗎? 當(dāng)然可以,而且條件許可的話,沒有理由不去用。不過,要注意的是使用這些標簽有很大的限制。它們只能和FORM表單用在一起,且表單中的元素必須和數(shù)據(jù)庫中的字段使用相同的名稱,另外也無法象標準SQL中那樣的功能強大,當(dāng)用<CFUPDATE>時,還必須在表單中指明關(guān)鍵字段。 9: 我的郵件服務(wù)器在發(fā)送郵件時需要認證,在用ColdFusion發(fā)郵件時我如何能發(fā)送認證信息? 從ColdFusion MX 6.1開始,ColdFusion支持SMTP的認證。你可以在<CFMAIL>標簽中提供相應(yīng)的認證信息,或在ColdFusion管理界面中用以下的格式提供認證信息:user:password@hostname 10: 能不能在同一郵件中生成普通文本和HTML超文本兩種不同的信息? 從ColdFusion MX 6.1開始用新的 <CFMAILPART>標簽即可。請參考下面的代碼。 <CFMAIL TO="..." FROM="..." SUBJECT="..."> <CFMAILPART TYPE="text"> 普通文本信息。。。 </CFMAILPART> <CFMAILPART TYPE="html"> <B>超文本信息。。。</B> </CFMAILPART> </CFMAIL>
11: 我想發(fā)送郵件給一郵件組用戶,我如何才能跟蹤?quán)]件的發(fā)送結(jié)果?如失敗或者被拒絕。 <CFMAIL>中有一個FAILTO屬性,可以用來指定一個郵件地址,在遇到郵件發(fā)送失敗的情況時,ColdFusion會向此郵件地址發(fā)送一個失敗通知。
<CFMAIL TO="#email#" FROM="admin@myhost.com" FAILTO="listadmin@myhost.com" ...> ... </CFMAIL> 12: 怎么才能得到一個文件的大小,最后修改的日期和時間? <CFDIRECTORY>可以用來訪問ColdFusion所在服務(wù)器上的文件目錄, 其中的ACTION="list" 參數(shù)可以幫你獲得這些信息。 13: ColdFusion可以訪問客戶機上的文件嗎? 不可以,ColdFusions是運行在服務(wù)器端的,不能在客戶機端做任何操作。ColdFusion只能通過客戶端的瀏覽器獲得一些客戶機信息。所以ColdFusion不能訪問處理客戶機端的任何文件,除非在上傳到服務(wù)器端以后。 14: 如何把客戶端的文件傳遞給ColdFusion? 最安全的方法是通過客戶的瀏覽器使用HTTP文件上傳功能。ColdFusion的確可以通過HTTP或FTP訪問網(wǎng)絡(luò)資源,但這要求被訪問的一端有相應(yīng)的HTTP或FTP服務(wù)器。這在一般的客戶端都是沒有的。 15: 如何寫一段能用來讓客戶上傳文件的表單代碼? 創(chuàng)建一個表單,指定表單的ENCTYPE屬性為"multiform/form-data",添加一個表單元素,類型為“文件”(TYPE="file")。這段代碼在客戶端顯示的時候,客戶會看到相應(yīng)的操作界面來選擇要上傳的文件,當(dāng)這個表單被遞交的時候,文件就會被上傳到服務(wù)器端。 <FORM ACTION="process.cfm" ENCTYPE="multipart/form-data" METHOD="post"> File: <INPUT TYPE="file" NAME="FileToUpload"> <BR> <INPUT TYPE="submit" VALUE="Upload"> 16: 如何訪問并處理上傳的文件? 通過客戶端表單上傳的文件可以由<CFFILE ACTION="upload"> 標簽來訪問處理。通過此標簽,可以對上傳的文件進行處理,如保存,改名,限制上傳文件類型等。 17: REQUEST有效的有效范圍是什么? 和Variables一樣,Request只能在一個頁面處理請求中有效(同Application或Session對比)。但它們的區(qū)別在于,Request同時還能被同一頁面處理過程中所用到的其它文件所訪問,如Custom Tags。 18: 如何在用戶關(guān)閉瀏覽器后馬上結(jié)束session變量 在ColdFusion MX中,通過改變ColdFusion管理員界面中的一個設(shè)置,就能輕易實現(xiàn):進入Memory Variabes菜單,選中Use J2EE session variables選項。 在MX以前的版本中,ColdFusion Session變量使用cookies(CFID和CFTOKEN)來定位每一個用戶。缺省的情況下,這些Cookies留在客戶端的硬盤上,即使用戶關(guān)閉瀏覽器。要避免這種情況,這需要重寫這些Cookies讓它們在瀏覽器關(guān)閉之后過期就可以了。請參考下面的代碼。
<CFCOOKIE NAME="cfid" VALUE="#SESSION.cfid#"> <CFCOOKIE NAME="cftoken" VALUE="#SESSION.cftoken#"> 19: 什么時候需要用到<CFLOCK> <CFLOCK>是用來控制對一段代碼或變量的并發(fā)存取的。在早期的ColdFusion版本中,如果不對并發(fā)的存取進行控制的話,可能會導(dǎo)致服務(wù)器的不穩(wěn)定。在ColdFusion MX中,這一問題已經(jīng)得到解決,但還是有理由要使用<CFLOCK>的。首先,有些情況下必須使用<CFLOCK>,如多用戶情況下對系統(tǒng)文件的存取。其次,就算對一段代碼或變量的并發(fā)存取不會導(dǎo)致系統(tǒng)的不穩(wěn)定,有時也會給你的程序帶來一些影響,導(dǎo)致一些奇怪的程序結(jié)果。如當(dāng)對一個application變量進行修改而不把此變量鎖定話,用戶訪問到的可能是一部分新的數(shù)據(jù),一部分老的數(shù)據(jù)。那樣程序運行結(jié)果可能就不是你預(yù)想的那樣了。所以當(dāng)出現(xiàn)類似問題時,還是要用的<CFLOCK>。 20: EXCLUSIVE 和 READONLY兩種鎖定有什么區(qū)別? <CFLOCK>支持兩種類型的鎖定,EXCLUSIVE 和 READONLY。EXCLUSIVE鎖定完全防止其它代碼的的訪問。READONLY鎖定并不是一種真正的鎖定,只是給一端代碼加上一個標記,表示只有當(dāng)前沒有被EXCLUSIVE鎖定的時候才能執(zhí)行。 21: 如何才能實現(xiàn)動態(tài)變量名呢? 竅門是先用""把變量名圍起來,然后把要作為動態(tài)變量名的部分用##圍起來?梢钥纯聪旅娴睦。 <!--- 設(shè)置變量 i 值為 1 ---> <CFSET i=1> <!--- 創(chuàng)建一個動態(tài)的變量名product1---> <CFSET "product#i#"="apple"> <!--- 顯示product1的值---> <CFOUTPUT>#product1#</CFOUTPUT> 22: 如何得到一個擁有動態(tài)變量名的變量的值? 可以用Evaluate() 函數(shù)動態(tài)的構(gòu)造變量名,請看下面的例子。 <!--- Set i ---> <CFSET i=1> <!--- Display product1 variable ---> <CFOUTPUT>#Evaluate("product#i#")#</CFOUTPUT>
23: 在獲得一個Query查詢結(jié)果之后,如何得到它的字段列表? 每個Query查詢結(jié)果都帶有一個叫columnlist的變量,可以用來獲得Query的字段列表.如 :queryname.columnlist 24: 如何獲得接收到的Form或URL變量的列表? 在ColdFusion中,接收到的Form或URL變量都是以ColdFusion structures 變量的結(jié)構(gòu)存在的,可以用ColdFusion提供的structures的一些函數(shù)來訪問處理它們。當(dāng)然也可以用<CFLOOP>來循環(huán)其中的每一個元素。 25: 如何直接的訪問query數(shù)據(jù)中的某一個數(shù)據(jù)? 在ColdFusion中,query其實就是sturcture,每條記錄就是一個數(shù)組。要直接的訪問query中的某一條記錄中的某一個數(shù)據(jù),可以用這種方式:#query.column[row]#。如:想要得到query “products”中的“price”字段的第五條記錄,可以用這種表達是式:#products.price[5]#。 這種方法在一些情況下非常有用,如用<CFLOOP>循環(huán)處理一個query。 26: 如何才能用ColdFusion生成可打印的PDF文檔? ColdFusion目前還不能直接生成PDF文檔。但有一些第三方的產(chǎn)品可以用來實現(xiàn)這些功能。如ActivePDF(http://www.activepdf.com/ )
出處:cffaq.com
責(zé)任編輯:藍色
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|