Intraweb+使用手册中文版.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Intraweb 使用手册 中文版
- 资源描述:
-
什麼是IntraWeb IntraWeb是一個創建基於Web應用程式的具有革命性意義的新方法,在早期版本的IntraWeb的用最簡單的方法創建Web解決方案的基礎上,IntraWeb擴展了它的技術,提供了一個傑出的工具,用來高速、簡易地創建Internet,Intranet 以及Extranet應用程式。 許多基於Web的開發工具都要求開發者有CGI腳本的知識,同時也要求開發者要有狀態跟蹤以及複雜的用戶端配置。IntraWeb避免了這些。通過使用Delphi中的元件,簡單的創建一個應用程式專案,之後,註冊到伺服器上,客戶就可以利用相容HTML 4的任何一種流覽器來訪問這個應用程式。這些流覽器包括最新版的Netscape 以及Internet Exploer等等。利用IntraWeb開發的Web應用程式在這些流覽器上都通過了測試。利用IntraWeb開發,不需要寫任何的HTML、CGI或是JavaScript代碼,所有的代碼都在Delphi中完成了。為了讓應用程式有更好的靈活性,利用IntraWeb開發的應用程式也可以以獨立的可執行程式的方式像其它的桌面應用程式一樣來運行,也提供了相應的調試能力。 IntraWeb是怎樣工作的? IntraWeb很像是普通的應用程式,唯一不同的是它的使用者介面是用流覽器代替了通常的Windows介面,當把應用程式安裝到Web伺服器上之後,用戶馬上就可以通過它的網路位址來開啟它,應用程式會馬上建立使用者的使用者資訊,這樣就可以避免丟失使用者資訊或者與其它的使用者發生使用混亂。每一個使用者的使用資訊都會由程式自動創建和跟蹤,並且對於開發者來說,是透明的。其它的開發語言,像ISAPI,CGI,ASP處理這些問題的能力都不是很好。IntraWeb設計成一套能創建基於Web的各種類型應用程式的開發工具,不論是一個簡單的資料登錄介面,投票或是一個更複雜的讓已訪問過的客戶能順利登錄的應用程式,IntraWeb都能勝任。 IntraWeb用戶手冊 系統要求 客戶要運行用IntraWeb開發的應用程式,唯一的要求就是要有一個能相容HTML4.0流覽器,用IntraWeb及HTML4和JavaScript開發的程式都通過了廣泛的測試,它支持Mozilla,Netscape 6 或更高版本,Internet Exploer 4.0 或更高版本。 備註:如果你想你的應用程式支援Netscape 4,你就要使用我們繼續給予支援的IntraWeb4的版本來開發。 HTML4 IntraWeb使用HTML 4和樣式單來完成頁面元素及其它元素的佈置,要使用範本或Page Mode都需要使用到樣式單。 JavaScript JavaScript的使用可以提供更多的用戶端特性,JavaScript 也允許IntraWeb來控制流覽過程以及一個已經生成的頁面,只有在Application mode,JavaScript才是必需的。 Browser Specific Feathers 盡宇航局HTML 和JavaScript的標準已經制定了,但是在許多地方,不同的流覽器之間仍然存在許多差異,IntraWeb能自動調整這些差異,IntraWeb充當了一個HTML和JavaScript代碼的生成器。IntraWeb甚至動態地知道每一個流覽器在運行時所存在的每一個Bug.另一方面,IntraWeb輸出給每一個流覽器的代碼都是經過優化的,請查閱Browser Implementations這一章節,獲取更多的資訊。 安裝IntraWeb 安裝 在Delphi的安裝過程中,IntraWeb將會自動整合到Delphi中,三個新的包含IntraWeb元件Tab會在Delphi視覺化元件工具中自動創建,其中一個包含了非資料庫類型的元件,另外的兩個包含一個資料庫訪問類型的元件和控制元件。一個新的名為IntraWeb的Tab也會在Delphi的儲存器中創建,所有的IntraWeb應用程式都將通過包含在這些Tab中的元件和模組來完成。 IntraWeb的安裝會把一些檔拷貝到Windows\System目錄以及所有Delphi環境變數中所需要的子目錄下,同時,也創建了一個在程式組中通過開始功能表來訪問的快捷方式,文檔也會被放在這個程式組中。 卸載 要卸載IntraWeb,和其它的Windows應用程式一樣,選擇控制台裡的“添加/刪除應用程式”來卸載IntraWeb。 安裝License Keys 對於註冊用戶,能過與試用版用戶一樣的方法來下載License Keys,如果你安裝的是試用版本,那麼License Keys的安裝完全是為了能使用註冊程式,這個程式可以通過IntraWeb程式組中的圖示來運行。 重新考慮使用者介面 許多我都嘗試把他們的用戶程式設計成像普通的Windows應用程式一樣,如果你也是這樣的話,你會發現你所設計的介面工作得並不是很好,想像一下,創建一個就像是一個DOS應用程式一樣的使用者介面,那將會是多麻煩的一件事,不要僅僅考慮在Web上的使用者介面是怎麼樣的,你還要再想想在設計Web介面時所發現的局限性。 DBGrids就是一個例子,在一個普通的Delphi應用程式中,它被用於在一個Grid中顯示成千上萬的資料記錄,在Web中,那將會是一個非常大的HTML文檔,而且在用戶載入的時候,是非常慢的。當一個開發者意識到這個事實情況的時候,他們經常會使用 “Next”和 “Previous”按鈕以便於讓DBGrid能局部地顯示,但是,這樣做會讓佔用更多的伺服器記憶體,消耗更多的伺服器資源,同時,作為提供資料來源的資料庫也會回為記憶體大量的佔用而變得越來越慢,試著想想一些普通的Delphi應用程式的作法,重新考慮一下在Web上的使用者介面。當然,利用創建一個空的Grid同時用一個搜索功能來解決也是通常用來緩解上述問題的辦法之一,通過讓用戶提供他所要篩選的資料參數,就能從成千上萬的資料中篩選出十幾個,或僅僅是幾百個記錄,這不但是降低網路頻寬佔用的好辦法,同時,它也可以說是提供了一個很好的使用者介面,並且,同時也最小化地讀取資料庫。 允許用戶輸入搜索條件仍然有可能產生就像上面提到的得到成千上萬記錄的可能性,為了避免這種情況的產生,TIWDGBrid有一個RowLimit屬性,它預設值是0,也就是說它默認是被禁止的。你可以給它設置一個最大值,這樣,不管查詢出多少記錄,返回給使用者的記錄數也不會超過你在RowLimit中所設置的最大值,你可以查閱其它的技術參考來證實這一點。許多的搜尋引擎也都限制了最大返回結果數,這不僅僅是為了節省網路頻寬,在大多數情況下,資料的精確程度是伴隨著資料量的減少而增加的,如果不是這樣的話,那麼返回給使用者大量的記錄,他們還是會想方設法地去篩選的。 如果你還是決定用Next/previous選項來使用 “paged grid”技術以減少傳遞的資料數,你也可以通過設置TIWDBGrid的 “StartFirst”屬性成 “false” ,把RowLimit屬性設置一個最大值來決定一次傳給使用者的資料記錄數,這樣,在資料顯示之前,你也可以通過Next/Previous來移動資料記錄。 創建一個新的應用程式 寫你的第一個應用程式 所有的IntraWeb應用程式都應該通過新建專案中的IntraWeb Tab來創建,點擊 File -> New,選擇IntraWeb Tab,選擇 Stand Alone Application,一個對話方塊會提示你輸入你要把由Delphi自動創建的檔應該被放在電腦的什麼地方。 這將為一個新的IntraWeb Stand Alone Application創建一個框架,它把一些開發所需的檔複製到專案所在的資料夾,並且創建了一個範本檔以及一個空白的Form,儘管現在的項目已經可以編譯和運行了,但是它實際上還不能做任何事情。一個標準的調試FORM將顯示一些關於IW和相關功能表項目的資訊,選擇“運行功能表,運行這個程式,將自動打開一個流覽器顯示一個空白的頁面,這是因為主FORM中沒有包括任何組件或功能項。 program IWProject; uses IWInitStandAlone, ServerController in ‘ServerController.pas’ {IWServerController: TDataModule}, IWUnit1 in ‘IWUnit1.pas’ {formMain: TIWFormMain}; {$R *.res} begin IWRun(TFormMain, TIWServerController); end. 上面的代碼顯示了這個專案檔案中的內容,它包含一個用來運行程式的叫做IWRun的過程。 procedure IWRun(AMainFormClass: TIWFormModuleClass;AServerControllerClass: TIWServerControllerBaseClass); IWRun接受兩個必須的參數(指定Main Form Class和Server Controller Class)和一個可選的參數(Server Type)。 IntraWeb 用戶手冊 正如我們以前提到過的,一個新的項目是創建任何一個IntraWeb應用程式的開始,就像其它的Delphi項目一樣,一個Main IntraWeb From會被自動創建,並做為一個新程式的主介面,為了證明IW開發的強大能力及簡易性,下面我們舉一個小例子。 1. 打開剛才創建的那個默認的IWForm(IWUnit1.Pas)。 2. 分別在這個Form中放入 IWButton, IWEdit, IWLabel。 3. 把下面的代碼放入IWButton 的 OnClick事件中: procedure TIWFormModule.IWButton1Click(Sender: TObject); begin IWLabel1.Caption := IWEdit1.Text; end; 完成後,編繹運行程式,為了測試它,按F9鍵。預設的流覽器將自動打開並顯示主介面。輸入一些文字到文字方塊中,然後點擊按鈕,輸出結果將顯示到Label上。 雖然,我們這個例子不像發明火箭那樣激動人心,但是,它確實表明我們全部使用標準的Delphi語句,並沒有寫一句HTML代碼,我們之所以要選擇這個例子,是因為它很簡單,它證明我們用IntraWeb來開發Web應用程式確實就像我們用Delphi開發普通的應用程式一樣,一樣的方法,一樣的屬性,一樣的事件,等等都可以用同樣的方法。然而在開發完善的資料庫應用程式時,IntraWeb卻更強大。 要獲取更多的關於開發IntraWeb應用程式的例子,請訪問 Working With Forms 在程式中,我們要介紹的是都要包含的單元-IntraWeb Form,所有的IntraWeb From都可以通過“File-New-IntraWeb Form”來創建,所有在IntraWeb中使用的Form 必須是一個專門的 IntraWeb Form,標準的Delphi Form是不能在IntraWeb應用程式中使用的,一個新的Unit創建時,可用的Form會顯示在螢幕上,使用IntraWeb Form和與使用普通的Delphi Form有一點不同,簡單的說就是IntraWeb 的 Form要使用 Show 方法來顯示,換句話說,也就是在IntraWeb開發中,ShowModal方法是不被支援的。更多的資訊你可以參考Demos. Images and Graphics IntraWeb通過Templates來支援圖像,包括 TIWimage, TIWDBImage and TIWImageFile。在IntraWeb中,你可以使用許多種方法來支援圖像,同時,它們也有一些基本的方法。 Templates 在templates中使用圖像也就是將圖像插入到HTML中去,但是任何影像檔都必須在Files資料夾中,或者是一個標準的WEB伺服器中。 TIWImage TIWImage被使用在創建動態的圖像上,每當要顯示一個圖片時,圖片都會被轉換成JPG格式,這樣,圖片是做為應用程式中功能的一部分來使用的。你可以參考關於動態互動式圖片的演示程式來獲得更多的資訊。如果你使用的是靜態的圖片,你可以使用TIWImageFile. TIWDBImage TIWDBImage 從資料庫欄位中自動把圖片轉換為JPG格式,它的使用就像普通的TDBImage一樣,它提高了從資料庫中把圖片輸出到流覽器上的開發效率。 TIWImageFile TIWImageFile提供了從磁片上的一個檔中顯示圖片的能力,因為它不會轉換圖片模式,TIWImageFile是一個比TIWImage更有效率的顯示圖片的元件,如果你僅僅是完整地顯示一個靜態的圖片,你應該經常使用TIWImageFile。 TIWImageFile也提供了設計時顯示圖片的能力,你可以在設計Form的同時顯示圖片,然而,這個圖片只是純粹地顯示,圖片資訊不會儲存在Form中,只有當程式在運行時,圖片才會被Load 到Form中。Filename指定了要顯示的圖片的完整路徑。在運行時,路徑將會被省略,只有檔案名會被使用,所以,在選擇時,要顯示的圖片應該在Files目錄下。 GIF Support IntraWeb支援GIF的顯示,然而,安裝程式將沒有預設的安裝GIF的支持,就參考IntraWeb FAQ來獲得臬安裝和使用GIF檔的資訊。 其它的文件 其它的檔,例如圖片、下載的檔等等都可以通過指定主程序所在的相對路徑來訪問,創建一個Files目錄,把所有的HTML物件都放到這個目錄下,在HTML頁面中,你就可以通過使用 img Src=’’../files/image.jpg’’這樣的形式來訪問。請確認,在流覽器中你要使用 / 而不是 \來訪問,在IE中,這種錯誤會自動被改正,但是在其它的流覽器中卻不會被自動改正。通常,這種方法不僅限於對圖片的顯示,也可以用在其它所有的檔案格式中。 訪問的檔都會被流覽器緩存,如果你希望創建一個不會被流覽器緩存的檔連結,那麼,你可以用../filesnc/<filename>來代替../files/<filename>。檔將會從一個同樣的目錄來訪問,但是不會被流覽器緩存。 其它的FormProperties 請仔細地查看那些經常會被開發都忽略的Form的屬性,這些屬性可以控制例如HTML的輸入及其它更多的。 Server Controller 每一個應用程式都包含一個ServerController單元,這個單元包含了會影響應用程式在全域範圍中的動作及行為的屬性,它也包含了能在應用程式中定義的事件。 DataModules 如果你要使用DataModules,請參考一下 FishfactDM演示,有一點要提醒的是,如果你在設計時連結了一個DataSource,就像在FishFactDM裡一樣,你的DataModules必須被一個WebApplication所擁用,這在FishFactDM中是通過設置DataModules’s owner到 Session Data’s owner的WebApplication Variable來實現的,如果做了這一步,那個Form在屬性中是不可讀的,並且,所有的Form都將會被連結到第一個也就是同一個DataModule Extanding IntraWeb 自訂群組件(Custom Components) 所有的IntraWeb元件都是用一個開放的API來寫的,這將允許你更容易的將你自已寫的元件增中到IntraWeb裡,這就像是其它的Delphi所做的一樣。 嵌入純HTML 通過使用TIWText,你可以不編寫一個元件就把你自己的HTML語句嵌入到IntraWeb中,簡單地把一個TIWText元件拖放到你的Form裡,設置RawText屬性為True,並且把WantReturns設置為False,最後,把你需要的HTML語句放到Lines屬性裡,你的HTML將會成為你輸出的Form的一部分。 HTML Templates HTML templates(可以參考一下其它地方的Template)用於增加一些複雜的HTML到你的應用程式中用來定義你的應用程式的外觀。你可以看看Layout Manager部分來獲得更多的資訊。 Form Managerment 介紹 在一個IntraWeb應用程式中管理Form就像在普通的Delphi程式中一樣簡單,但也有一點限制。 限制 1. 只有一個Form是可見的,這是因為在實際情況中,流覽器裡只能顯示一個Form. 2. 模式的Forms是不能使用的,然而,因為在流覽器中一次只能顯示一個Form,所以實際上所有的Form都是模式的。 3. 所有的Form都必須是Owned By WebApplicaton. 使用方法 Form List IntraWeb保留了一個Forms的列表做為用戶Session的一部分,它就像是時裝店裡的新上架商品一樣,最近顯示的Form將會被保留在最頂端,當一個Form被隱藏時或被釋放時,這個列表用來確定應該啟動哪一個Form,如果沒有明確的通過.Show方法來提出應該顯示哪一個Form. 通常,Form List從來不會直接與用戶進行交互,而是通過Call的方法來確定顯示哪一個Form,但是,在有的情況下,Form List必須與用戶進行交互,在這些情況下,TIWApplication包含了一系列的方法來實現與用戶的交互,這在幫助文檔裡都有說明。 Showing Forms 顯示一個Form通常的語句格式如下: 第一次看來,這有點讓人迷惑,但是它是以下格式的略縮: 除了它在這裡是一個WebApplication這外,就像是通常的應用程式一樣,不同的是,普通的應用程式在調用了Call之後,Form是馬上就顯示,在IntraWeb中,當Call調用一個Form之後,只是純粹地指定了哪一個Form是在一個事件退出之後下一個活動的Form,也僅僅當一個事件被執行之後Form才會顯示。 Destorying Forms 一個普通的應用程式中,當一個Form不在需要的時候,它能通過使用.Free或.Destroy方法來Destory掉,在IntraWeb應用程式中,有一點相似,但是,你不能直接調用.Free或.Destroy方法,你必須調用一個.Release方法,.Release方法並沒有真正地Destory這個Form,這個Form直到退出了事件並且把控制權還給IntraWeb的時候才會真正地Destory.這是因為.Release是Form本身在事件中調用的,儘管這並不是經常發生。 當Relase被調用的時候,就像一個普通的應用程式一樣,當前活動的Form變成前一個被Destory的Form,如果你不想用戶回到上一個Form,你就必須調用.Show方法來啟動另一個Form,可以在.Release將程序控制權還給IntraWeb之前或之後調用.Show方法。當一個Form被釋放後,所有對這個Form List的參考都會被刪除,如果在這些Form在Hidden或Release的時候沒有調用.Show方法,將改變Form的序列。 Hiding Froms 在普通的應用程式中可以不調用.Hide方法來Destory一個Form,同樣的功能也可以在IntraWeb中調.Hide方法來實現,.Hide方法可以在調用.Release方法時隱藏一個Form而不必Destroy它。調用.Release時,.Hide刪除了所有的關於對這個Form List的引用,但是並沒有Destory它,正因如此,如果你想在以後還想繼續使用這個Form,你必須保留一個對這個Form的引用,換句話說,也就是這個Form變成孤立的了。 Passing Data Between Forms 像普通的應用程式一樣,資料可以在Form之前傳遞,因為Form的資訊可以做為Form Class的一個變數儲存在記憶體中。作為一個試例,你要定義兩個Form, TFormMain和TFormDialog.TFormMain是主Form並且包含一個Butoon 和一個Edit Box。TFormDialog包含一個memo Field和一個Label。當使用者在主表單中點擊按鈕時,主表單的Edit Box中的文字會被加到Dialog Form的Memo Field中去,同時,Dialog Form也會被顯示,Dialog Form也同時顯示了它已經被顯示了多少次,並且允許使用者返回到主表單中去。 IWLink1 OnClick 這個事件以連結的形式與標識Caption為”Quit”相關,當使用者點擊這個連結時,簡單地終止了這個應用程式。 OnCreate OnCreate事件將會在這個Form被創建時調用,在這個事件中創建了別一個Form,同時,這個Form的引用也做為Form的member Variable儲存起來了,以便於再次調用。 butnOk OnClick OnClick事件中將會檢查Edit Box中是否有資料,如果沒有資料存在,那麼程式將調用WebApplication.ShowMessage向使用者顯示一些資訊,當釋放MessageBox後,Form將會再次顯示,如果使用者已經輸入了資料,那麼,Using FDialogForm(在當前Form的OnCreate事件中創建)將會顯示,EditBox中的資料會被加到Memo Field中,TFormDialog的member variable會更新,調用.Show方法顯示這個Form,就像你看到的,資料在兩個不同的Form中被傳遞了,如同普通的Delphi應用程式一樣。 Complete Demo 你可以看看FormData.dpr這個Demo來獲得完整的示例。 State Management Inherent State 標準的Web開發工具都有一個自動的Session Management,但僅僅意味著它會為你跟蹤Session的資訊,你仍然不得不在頁面之間處理這些狀態資訊,或者在不同的狀態物件中處理這些資訊,狀態物件通常也局限於字串和那些字串中整理出來的資料,這不利於處理更複雜的資料類型。 IntraWeb在這方面有了一定的改善,它是一種固有的狀態管理。你倒底是在說什麼呀?新的詞語?不,問問你自己吧,你是怎樣在普通的Delphi程式中管理這些狀態的呢?什麼?你不需要管理?正是這樣,在IntraWeb中你確實也需要管理這些。 限制 Global Variables 全域變數通常不會使用,如果你需要使用全域變數來指定每一個用戶Session都要用到的變數,我們下面將會提到的。 如果你需要對所有的使用者Session都使用一個變數,那你就用一個全域變數吧,然而,IntraWeb是一個執行緒化的環境,你必須指定一個屬性來保護當前訪問的變數。 ThreadVars ThreadVars在IntraWeb應用程式中永遠不會被使用到,除非某種臨時的儲存的使用。IntraWeb是基於HTTP的表態訪問的,這在本質上就意味著所有的執行緒都沒有指定給某一個特定的用戶,並且用戶是在HTTP請求和執行緒中轉移的。 Safe Storage Form/Datamodule Members 因為IntraWeb Form和DataModules是持續的,就像普通的Delphi程式一樣,你能以member Variables 和屬性的方法來儲存資訊,這些資訊能在Form自身需要時或在接收來自其它Form的時候儲存在記憶體裡。 User Session User Session(在Session Management部分將會更多的介紹)包含一個.Data屬性,它能控制到一個物件的Reference.當你需要儲存一個使用者的特定資訊時,你可以把資訊儲存在.Data屬性裡,它接受即時的TObject,並且能在Session釋放的時候自動Destory。最簡單的方法就是創建一個物件,把你要的Fields加到裡面,創建一個物件時,當Session創建時,把Session儲存在這個Session的Data屬性裡。Phonetics示例演示了一個較為完整的例子。 當創建一個新的IntraWeb項目時,一個Shell的使用者Session物件也會在ServerController裡被自動創建了,一個缺省的ServerController看上去就像這個樣子: TUserSession是一個空的Session物件,你可以把members, Properties and methods加到上面,為每一個Session創建一個TUserSession的同時,它也會被創建到OnNewSession事件中。 以Function Named UserSession也是已經存在的用來簡單訪問物件的方法,所以,如果你把TUserSession的聲明改成以下的樣子: 你可以訪問這些屬性,在你的代碼中就像這樣: 如果你不再需要一個使用者的Session了,你可以在代碼裡終止它,當然,它不是必須的,這在一個缺省的template裡是作為一個部分自動存在的。 TUserSession的Class Type可以是任何類型的,在一個由DataModule生成的項目中,TUserSession是TCompnonet的派生,而不是這裡顯示的TObject。TComponent允許Session own component例如Datamodule 允許簡單地清除。(cleanup). 複雜的State和後退按鈕 許多人很快會發現,當然使用IntraWeb開發裡,流覽器裡的後退按鈕沒有用了,缺省的IntraWeb禁止了後退按鈕,點擊它時,不會有任何事情發生,請注意,這僅僅適用於Application Mode,在Page mode裡,後退按鈕是有用的,這個限制是因為IntraWeb為了使用複雜的狀態才會有的。 Scenario-Normal Appplication 試想一個普通的程式設計成運行在使用者本地電腦上,它有五個不同的Form,並且為了滿足Forms multiple instances of that form may be created different data(例如屬性對話方塊顯示了不同物件的不同屬性)。試想一下現在在任何時候,不需要警告或是提示你,使用者能在程式裡訪問任何一個Form。但不僅僅訪問任何一個Form,他們還能訪問任何一種過去的狀態,甚至是訪問一個已經從記憶體物件中移除的Form。在他們訪問那個Form的時候,他們還能與之交互,怎樣的一個程式會這樣呢?這裡有一些,但不是全部的問題: -Form所依賴的資料在資料庫中的資料已經在資料庫中不存在了,因為用戶已經刪了。 -Form所依賴的資料在資料庫中正被改變,並且用戶可能正定位元到一個非法的資料 -記憶體中的物件已經被改變了,或者不再存在了。 在非IntraWeb 系統中的後退按鈕 不是由IntraWeb開發的系統通常支援後退按鈕,然而,它會處於這樣一些情況: _ Stateless – They are completely stateless and reconstruct state between each page. This is usually very inefficient on the server side for weblications and puts considerably extra load on databases because data is read and written unnecessarily. _ State Streaming – These types stream the state into and out of each web page. This consumes bandwidth and slows down page accesses. They also cannot use complex data, or usage of complex data causes the same problems described prior. Even applications that support the back button, such problems are still encountered. However because they allow old data to be posted they must check the data to see if the requested operations can be performed. This adds significantly to the amount of user code except in the simplest of systems. Such systems are typically not weblications, but individual dynamic pages. IntraWeb is Not Alone 如果你試過許多的線上Bank應用程式或是定購系統,他們中許多都有同樣的限制,但運行得都不是很好,大多數的系統允許你後退,但是會告訴你你所請求的頁面是一個過期的內容,這是一種很不友好的介面,並且會讓那些非技術出身的用戶感覺迷惑。 用後退按鈕來訪問歷史資料 在有限的環境下,後退按鈕在Application mode下是被支援的,它支援訪問歷史資料。這就意味著,後退按鈕將可用,讓使用者返回歷史資料。然而,如果用戶如果嘗試在歷史頁裡與資料進行交互操作時,就會失敗。如果用戶嘗試這樣的操作,那就會出現一個警告: 在這個警告頁顯示之後,頁面將返回到使用者通過後退按鈕訪問的頁面之前的那個頁面。這個功能通過設置Server Controller中的.HistoryEnabled屬性來實現。 這個警告也可以關閉,要這樣做,可以在Server Controller中把.ShowResyncWarning屬性設為False,如果這樣做的話,使用者將不會看到警告頁面,而是直接轉到當前頁面。 Session Management WebApplication Object TIWApplication 指的是一個IntraWeb apllication,TApplication是一個標準的Delphi應用程式。就像近來,TIWApplication不是一個視覺化的元件,它不會出現在屬性對話面板中,因此,沒有公開它的屬性,然而,它也有一些公開的屬性和方法可以通過代碼在IWApplication中訪問,針對每一個使用者的Session,TIWApplication物件都會創建。它會重新提供用戶一個”Application”或是一個”session”。 Session 的生命期 用戶Session是由IntraWeb自動管理的,當一個新的Session開始時,IntraWeb會自動創建一個新的實例給使用者並且跟蹤它,它能被用來獲得使用者的資訊,控制使用者資訊或者儲存一些典型的資訊。對於開發者,不需要實現Session的管理,或者跟蹤用戶。 只有當TIWApplication的Terminate方法被調用或者它超時,才會終止一個Session,否則它將一直存在, 如果在特定的時間內,一個使用者沒有訪問應用程式,這個使用者的Session將會被Destory,缺省的超時期是10分鐘,但是在ServerController裡,通過設定Session Timeout屬性,你可以改變這個時間。 Session Implementation Session是由IntraWeb自動管理的。Session是保存在伺服器的記憶體裡的,同時會防止用戶人為的修改Session的資料,每一個Session ID都是由安全的方法來創建的,所以不可預見,同時不容易被修改,通常情況下,每一個Session都是綁在用戶的流覽器上的,並且如果另一個流覽器被檢測到試圖訪問一個同樣的Session,那麼會得到一個錯誤。要獲得更好的安全性,可以設置ServerController的RestrictIPs 屬性。這會檢查用戶的IP位址,如果IP位址改變了,那麼伺服器將拒絕該Session的訪問。這個選項缺省是設為False的,它只有在控制Intranets或是Extranets的用戶時才會被設為True。這是因為,一些代理伺服器比如Microsoft ISA Proxy Server在實現HTTP請求的時候會改變IP位址,這會造成給IntraWeb多個IP位址。 缺省的,Session ID是嵌入到每一個HTML頁面並且由每一個HTTP請求來跟蹤的,這允許一個單一的使用者在一個應用程式中擁有多個Session,但是這樣不方便的地方是,一旦使用者開始使用程式,那他就不能離開程式和返回它。因為這一點,使用Session ID來跟蹤任何非Applicatoin的頁面時,必須新開一個視窗,除非是等到終止應用程式時再運行。 Session Tracking可以被設置為使用Cookies而不是嵌入到HTML頁面中,你可以設置ServerController裡的Session TrackingMethod屬性為tmCookie來實現。這會讓IntraWeb 使用Cookies來跟蹤用戶的Session,優點是使用者可以隨便地在程式內與程式外移動。缺點是許多使用者都Disabled了Cookies並且在一個應用程式中,使用者只能有一個Session。 Accessing the Session 應用的應用程式可以通過很多種方法來訪問。 WebApplication Property of the Form 你可以簡單地使用引用了Form的WebApplication屬性來定義所有的事件和方法。這將滿足近期來幾乎所有的情況。然而,值得注意的是這個屬性中不容易理解的是Global procedures, Tframes, Datamodules and non IntraWeb classes. WebApplication Property of a Control 在寫一個用戶Controls的時候,基本的IntraWeb Control也包含了一個能使用的WebApplication屬性。 RWebApplication RWebApplication是一個特殊的全域變數,它能被用在當一個Form或是一個Control Reference不再有效時訪問當前用戶Session。這在Datamodules,Tframes’s, global procedures and non IntraWeb classes時會非常有用。RWebApplicatoin是一個ThreadVar,在開發者使用它時,沒有什麼預告的警告,要引用RWebApplication你需要加一個IWInit到你的 usese clause。 Storing Additiong Data Addition data能被儲存在.Data展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




Intraweb+使用手册中文版.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/7215139.html