jsp新聞發布系統設計參考文檔_第1頁
jsp新聞發布系統設計參考文檔_第2頁
jsp新聞發布系統設計參考文檔_第3頁
jsp新聞發布系統設計參考文檔_第4頁
jsp新聞發布系統設計參考文檔_第5頁
已閱讀5頁,還剩56頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第19章新聞發布系統教學要求 學會分析設計一個較復雜的新聞發布系統 學會制作較復雜的動態新聞頁 學會設計動態新聞的管理模塊 領會Go To Related Page的用法 能夠綜合應用Ultradev 4設計一個較復雜的網站19.1 分析新聞發布系統分兩大功能模塊:供所有用戶查看的動態新聞顯示模塊和只供管理員進行管理新聞及相關內容的新聞管理模塊,也就是用戶界面和管理界面。19.1.1用戶界面分析用戶界面所包含的文件 news.jsp 該頁是查看新聞的主頁面。包括新聞類別、新聞標題等內容。如圖所示的是制作好的news.jsp頁在瀏覽器中的樣子。動態新聞頁 more.jsp 該頁用來顯示所有新聞內

2、容。在news.jsp有一個【更多新聞】鏈接,該鏈接就是指向該頁的。 ShowNews.jsp該頁用來顯示新聞具體內容。news.jsp中的新聞標題就是鏈接到該頁的。 Buttom.htm和head.htm這兩個頁是供news.jsp和more.jsp嵌入用的,這樣可以達到定制用戶界面的頁首和頁尾的功能。相關數據表 表tNewsSubjectID表tNewsSubject用來存儲新聞類別。表中的每條記錄有兩個字段:fSubjectName字段,用來保存新聞類別;fSubjectID字段,用來保存標記新聞類別的標號,這個標號在表中是惟一的。如右圖所示。 表tNews 用來存儲新聞的具體內容。表中

3、字段fNewsID保存的是每條記錄的編號,這個編號惟一標識一條新聞。字段fTopic保存著新聞標題,字段fContent保存著新聞的具體內容,字段fDate保存著錄入新聞時的日期,字段fAuthor保存著新聞的作者,字段fKeyWords保存著查找新聞的所需要的關鍵字,字段fSubjectID保存著標記新聞類別的標號,這個標號在這個表中不是惟一的。如圖所示。表tNews19.1.2管理界面分析新聞管理系統結構新聞管理系統可分為密碼管理、類別管理和新聞類別管理3部分。這3個功能模塊通過一個menu.jsp頁聯系起來。與類別管理相關的文件這個功能模塊包括以下4個網頁文件。 subMan.jsp 通

4、過該頁可以完成對管理類別的編輯、添加和刪除的操作。 SubDel.jsp 刪除新聞類別。 SubEdit.jsp 編輯現有的新聞類別。 SubAdd.jsp 添加新聞類別。與新聞內容管理相關的文件這個功能模塊包括以下3個網頁文件。 NewsMan.jsp通過該頁可以完成對新聞內容的編輯、添加和刪除的操作。編輯新聞內容的操作在NewsMan.jsp頁中完成。 NewsDel.jsp刪除新聞內容。 NewsAdd.jsp 添加新聞內容。其他相關文件 Menu.jsp 通過該文件來統一管理新聞系統的各項操作,即從該頁可進入對管理系統的密碼、新聞的類別和新聞的內容的操作。在瀏覽器中如圖所示。menu.

5、jsp頁 Adm.htm 這是“管理”部分的主頁面,是一個網頁框架文件,它由左右兩個框架組成,左邊的框架用來顯示menu.jsp頁,右邊的框架用來顯示與新聞類別管理相關的頁和顯示與新聞內容管理相關的頁。利用網頁框架,使管理員管理新聞系統的各個內容更方便,操作簡單。 Login.jsp 登錄頁,這是設置安全機制所用到的。進入新聞管理系統前必須登錄。 Sorry.htm登錄失敗時轉向該頁。 Welcome.htm 首次進入新聞管理系統時在Adm.htm頁右邊的框中調用該頁。說明新聞管理系統的功能。 PassMan.jsp 對本系統的密碼管理。完成這個新聞管理系統主要是對這組文件的制做,以及合理的安

6、排這些文件。相關數據表新聞管理模塊用到了3個數據表。表tNewsSubject和表tNews,這兩個表已介紹過。還有一個用于存儲用戶名和密碼的表tNewsAdmin。如圖所示。表tNewsAdmin表tNewsAdmin中字段fAdminName存儲登錄管理系統時用的用戶名,字段fAdminPass存儲登錄管理系統時的密碼。對新聞管理的各個操作,也就是對服務器端這3個表的操作。19.2 制作動態新聞頁動態新聞頁news.jsp的制作,使之能夠動態地顯示當日以及最近幾天的新聞。由于新聞的標題和內容都存儲在服務器端相應的數據表中了,更新或者添加新聞的操作是對服務器端相應數據表中的記錄進行更新,或者

7、向數據表中插入記錄。所以,該頁的制作主要是定義記錄集,向頁面添加動態內容,添加服務器行為。這個頁動態內容分為3部分。 第1部分是能夠動態地顯示所有新聞的類別標題,也就是news.jsp中的鏈接【國際新聞】、【國內新聞】、【體育新聞】等類別標題。這一部分動態內容就是對新聞進行分類。 第2部分是當前列出新聞的類別標題。也就是news.jsp中黑色加粗的【國際新聞】。這一部分隨著所選新聞類別變化而變化。它的作用只是標記當前列出的新聞標題的類別。 第3部分也就是news.jsp下半部分所示的新聞標題了。這一部分列出的新聞標題屬于當前所選的新聞類別,從這一部分可以閱讀相關新聞的詳細內容。這3項需要分別建

8、立記錄集,因為它們需要的動態數據不同。但建立的這3個記錄集還必須通過一個變量傳遞參數,以便使這3項顯示的內容一致。可通過以下步驟來完成該新聞頁。1. 建立記錄集。2. 向頁面綁定動態數據。3. 添加服務器行為。其實該頁還包含一個新聞搜索器,在第10章章中有詳述,在此不做介紹。下面來制作這個動態新聞頁news.jsp。19.2.1為動態新聞建立記錄集為該頁添加動態內容的首先要建立相應的記錄集。1. 在站點文件窗口中打開news.jsp文件。該頁的靜態部分已經設計好了。如圖所示。新聞頁的初始文件2. 打開數據綁定監視器,打開定義記錄集對話框,建立一個取得新聞類別的記錄集。單擊監視器面板上的“+”按

9、鈕,從彈出的菜單上選擇Recordset(Query)選項,打開定義記錄集對話框,這時如果出現Advanced Recordset對話框,單擊Simple按鈕,轉到Simple Recordset對話框。 在記錄集對話框的Name文本框中輸入rsSubject。 在Connection下拉列表中選擇connBHP。 T 在Column處選擇All單選項。 在Sort處設置成按fSubjectID字段的升序排列。3. 單擊OK按鈕保存設置。這樣第1個記錄集已定義好了。設置好的記錄集對話框如圖所示。4. 為第2部分動態內容定義記錄集。打開定義記錄集對話框,如出現 Simple Recordset對

10、話框,單擊Advanced按鈕,轉到Advanced Recordset對話框。設置如圖所示。在SQL文本框中輸入下面的SQL語句:SELECT fSubjectNameFROM tNewsSubjectWHERE fSubjectID =iNewsID這是一條SELECT語句。描述的仍是從表tNewsSubject中選取記錄中的字段fSubjectName,最后的WHERE子句規定了只選取字段fSubjectID的值等于變量strNewsID中的值的記錄。變量iNewsID中的值是數值型,這個數值標記著當前列出的新聞類別,這樣就把當前新聞類別選取出來了。由于用到了變量iNewsID,所以必須

11、在Variables處定義并賦初值。在Name列輸入變量名strNewsID,在Default Value列處輸入1作為該變量的默認值,即第2部分動態內容在默認情況下列出標記為1的新聞類型和Run-Time Value列處的運行時值request.getParameter(“iSubjectID”)。第2、第3部分的動態內容所對應的記錄集就是通過參數iSubjectID傳遞動態數據作為選取記錄的條件,這樣使得3部分的動態內容一致。5. 為第3部分動態內容定義記錄集。打開高級記錄集對話框。設置如圖所示。在SQL處輸入SQL語句如下:SELECT fTopic, fNewsIDFROM tNews

12、WHERE fSubjectID = iCurrentSubIDORDER BY fDate DESC這個SELECT語句是從數據表tNews中選取記錄。WHERE子句規定了只選取字段fSubjectID值等于iCurrentSubID變量值的記錄,并且只取記錄的fTopic字段和fNewsID字段。子句ORDER BY fDate DESC規定了記錄按字段fDate中的值(也就是日期)從大到小排序,從動態新聞頁的內容上說就是先顯示最近發布的消息。DESC規定按字段值的降序排序,ASC規定按字段值的升序排序。上面語句仍用到了變量,所以必須在Variables處定義初值。在Name列輸入變量名i

13、CurrentSubID,在Default Value列處輸入1作為該變量的默認值,即第3部分動態內容在默認情況下列出標記為1的記錄,和Run-Time Value列處的運行時值request.getParameter(“iSubjectID”) 。向這個變量傳遞參數的值同向第2部分動態內容傳遞參數的值相同。19.2.2使新聞動態顯示及時性是新聞的要素之一,必須使新聞動態顯示在頁面上。所以,建立了記錄集后,開始向頁面綁定動態數據。這一操作很簡單,添加步驟如下。1. 向第1部分動態內容添加動態數據。添加動態數據的位置如圖所示的兩條粗線之間的表格中,也就是圖中光標所在的位置。第1部分添加動態數據的

14、位置2. 打開數據綁定監視器,單擊記錄集rsSubject前的“+”號,展開該記錄集。選中fSubjectName字段,然后把光標放在上圖所示的表格中。3. 單擊數據綁定監視器面板上的insert按鈕,這樣動態數據就添加到相應的位置了。4. 按照上面的步驟向第2部分和第3部分動態內容添加動態數據。把記錄集rsCurrentSubject中的fSubjectName字段和記錄集rsNews中的fTopic字段分別綁定到第2部分動態內容處和第3部分動態內容處。添加了動態數據的位置如圖所示的rsCurrentSubject.fSubjectName和rsNews.fTopic的兩個占位符。向第2、3

15、部分添加動態數據的位置以上4個步驟,就把動態數據綁定到了動態新聞頁news.jsp上了。19.2.3完善新聞頁建立了記錄集、添加了動態數據,還需要向頁面添加以下4種服務器行為使該頁完善起來。 添加Repeat Region服務器行為使第1部分的新聞類別全部顯示出來,使第3部分的新聞標題多條顯示或全部顯示出來。 添加Go To Detail Page服務器行為根據第1部分的類別標題在第3部分顯示不同類別的新聞標題。從新聞標題可進入具體新聞內容。 添加Show Region服務器行為使新聞頁news.jsp上的【沒有新聞】只在沒有新聞的情況下顯示,若有新聞就使之隱藏起來。下面步驟就是為該頁添加這些

16、服務器行為。 添加Go To Related Page服器行為以便從【更多新聞】跳轉到具有更多新聞的頁。 添加Repeat Region服務器行為1. 把光標放在第1部分動態數據位置上的表格中,用鼠標單擊文檔窗口下方的標簽。選中表格中的單元格。3. 打開服務器行為監視器。單擊監視器面板上的“+”按鈕,從彈出的菜單上選擇Repeat- Region選項。5. 用鼠標點擊rsNews.fTopic占位符選中這個動態文本。按照步驟2、3添加Repeat Region服務器行為。在設置Repeat Region服務器行為對話框時,在Recordset處選擇rsNews記錄集,在Show處設置成顯示5條

17、記錄。如圖所示。Repeat Region服務器行為添加完畢。 添加Go To Detail Page服務器行為1.選中rsSubject.fSubjectName占位符。2. 打開服務器行為監視器。單擊監視器面板上的“+”按鈕,從彈出的菜單上選擇Go To Detail Page選項。按圖所示的進行設置。Recordset下拉列表中選擇記錄集rsSubject;Column下拉列表中選擇fSubjectID字段。這時rsSubject.fSubjectName處多了一道下劃線,并且用不同顏色的顯示,表示是一個鏈接區域3. 同樣的方法,用鼠標單擊第3部分動態內容處的rsNews.fTopic占

18、位符。為其添加動態鏈接。其Go To Detail Page行為對話框的設置如圖所示。Recordset下拉列表中選擇記錄集rsNews;Column下拉列表中選擇字段fNewsID4. 該鏈接所指向的頁最好在新窗口中打開。所以,還要對其屬性設置一下。選中該動態文本。然后選擇Window菜單下的Properties選項,打開屬性浮動面板。單擊Target右邊的下三角選擇 _blank 選項。如圖所示。這樣設置后,在瀏覽器點擊此鏈接時,所鏈接的頁將在新窗口中出現。在news.jsp頁面上,可看到有一個【沒有新聞】的字樣。這個字樣應該在沒有新聞的情況下出現。所以,需要對【沒有新聞】字樣添加Show

19、 Reigion中的一個服務器行為。5. 選中該字樣。單擊服務器行為面板上的“+”按鈕,從彈出的菜單上選擇Show Region中的子項Show If Recordset Is Empty。6. 這時彈出設置該行為的對話框。設置如圖所示。對話框中的Recordset處一定選擇rsNews,因為該服務器行為是針對記錄集rsNews的news.jsp頁面上還有一個【更多新聞】的鏈接。從這個鏈接可以看到更多新聞。設置鏈接需要為其添加一個Go To Related Page服務器行為,即轉到相關頁。這個行為可以向所跳轉的頁傳遞參數。從這個鏈接進入到相關頁時,必須把該頁的參數傳遞過去。使正瀏覽的動態新聞

20、頁的內容與所要轉到的更多新聞頁的列出的新聞內容保持一致。也就是說,如果正在瀏覽的新聞標題屬于國內新聞,那么跳轉到更多新聞頁時,所列出的新聞標題仍屬于國內新聞。在窗性窗口中設置的鏈接參數是傳不過去的。所以,必須用此服務器行為。7. 打開服務器行為監視器,單擊面板上的“+”按鈕,選擇Go To Related Page選項。8. 這時出現Go To Related Page行為對話框。按下圖所示進行設置。Go To Related Page行為對話框9. 隱藏【更多新聞】字樣。在前面已設置了一次顯示5條新聞標題。如果某一類新聞總數少于5條或僅5條時,【更多新聞】字樣就可隱藏起來。10.首先選中【更

21、多新聞】字樣,轉到代碼窗口中,找到【更多新聞】字樣。對【更多新聞】鏈接加上條件語句修改后的代碼如下。 5 ) % A HREF=more.jsp?更多新聞 . 用rsNews_total 5 作為if語句的條件,即新聞多于5條時顯示【更多新聞】鏈接,rsNews_total是在定義記錄rsNews時自動生成的變量,其值就是記錄的總數。動態新聞頁的服務器行為也就添加完了,該頁也就制作好了。保存所做的工作。19.2.4制作顯示更多新聞頁如果經常上網的話,就會經常見到【更多】字樣的鏈接,以便顯示更多同類相關內容,在本例中也使用了一個【更多新聞】的鏈接,通過這個鏈接可以顯示所有同類新聞。這個鏈接的設置

22、在上一節中已講述,現在用同樣的方法來添加一個此鏈接指向的頁more.jsp。制作顯示更多新聞頁more.jsp只需在新聞頁news.jsp的基礎上添加一組導航鏈接,通過這個鏈接可以查看所有相關新聞。more.jsp頁的制作與news.jsp頁的制作基本相同,只是比news.jsp頁多加了兩組動態導航鏈接。在news.jsp頁的基礎上,記錄集的建立、數據的綁定、服務行為的添加已做好,現在要做的就是為該頁添加兩組動態導航鏈接。 添加兩組動態導航鏈接1. 在站點文件窗口中,打開more.jsp文件。2. 現在為該頁添加兩組動態導鏈接。將光標放至圖所示被選中的單元格中。向頁面添加動態導航鏈接3. 單擊

23、Insert菜單,選擇Live ObjectRecordset Navigation Bar。4. 這時彈出Recordset Navigation Bar對話框,記錄集選擇rsNews,并選擇Images單選按鈕。如圖所示。5. 然后把光標放在該表格的第1個單元格內,選擇Insert菜單下的Live ObjectRecordset Navigation status選項。在彈出的對話框中注意選擇記錄集rsNews,如圖所示。把導航狀態修改成rsNews_first -rsNews_last /rsNews_total的樣子。如圖所示。頁面導航狀態也可以在新聞標題的下再添加一組導航按鈕及狀態條

24、。在news.jsp頁的基礎上添加了兩組動態鏈接后,顯示更多新聞頁的more.jsp就設計好了。19.2.5顯示新聞具體內容現在制作一個顯示新聞具體內容的頁。這個頁的設計非常簡單,只需定義一個記錄集,綁定動態數據到頁面就可以了。 顯示新聞具體內容1. 打開站點文件窗口中的showNews.jsp頁。2. 打開數據綁定監視器,建立一個記錄集。下圖所示的就是建立該頁記錄集的對話框,按照圖中所示設置參數。在SQL文本框中輸入的SQL語句如下。SELECT fContentFROM tNewsWHERE fNewsID = iCurNewsID本語句是個SELECT語句,所描述的是根據WHERE子句的

25、規定從表tNews中選取記錄。WHERE規定了只選取字段fNewsID的值等于變量txtCurNewsID的值的記錄。在定義這個記錄集時用到了變量iCurNewsID,所以,還需要在Variables處的文本框中定義。在Name列處輸入變量名iCurNewsID;在Default Value列處輸入默認值1;在Run-time Value處輸入request.getParameter(“fNewsID”)。這樣該頁就根據news.jsp頁或者more.jsp頁傳過來的參數選取記錄集。定義記錄集對話框3. 建立了記錄集之后,開始向頁面綁定動態數據。展開記錄集rsNewsDetail,選擇fCon

26、tent字段,單擊數據綁定監視器面板下面的Insert按鈕。這樣就把所需要的動態數據綁定到頁面上了。綁定該動態數據,不需定位頁面中的位置。動態新聞頁及相關的頁已經完成了。保存所有的工作。19.3 導航頁面新聞管理模塊中各頁面可通過一個導航頁面來調用。在管理新聞時,首先要調出導航頁面,從導航頁面進入管理新聞的各頁面。這個導航頁面的初始文件如圖所示。 制作menu.jsp頁1. 在站點文件窗口中打開menu.jsp文件。該頁面中的【管理密碼】與【管理類別】這兩個鏈接為靜態的,分別指向密碼管理頁PassMan.jsp和類別管理頁SubMan.jsp。初始文件中已添加好了。2. 在【新聞】下面的表格中

27、添加管理新聞具體內容的鏈接。這一項由多個鏈接組成,一個鏈接對應一個新聞類別,因為管理模塊中有新聞類別的管理,管理類別可以添加類別或者刪除類別,所以這一組鏈接要設置成動態的,在正行修改新聞類別時,也會動態變化。這個導航頁面采用了網頁框架。框架的左邊是網頁文件menu.jsp,右邊是管理模塊的說明文件。在進入新聞管理系統時框架的左邊調用的一直是menu.jsp,右邊的框架首先調用welcome.htm文件進行說明一下新管理系統所管理的內容。需要這義一個記錄集,所定義記錄集的對話框如圖所示。從表tNewsSubject中選取記錄集,因為表tNewsSubject中存放的是新聞類別。最好把取得的記錄設

28、置成按fSubjectID的升序排序定義好記錄集后,首先把字段fSubjectName綁定到【新聞】下面的表格中。3. 添加Go To Detail Pages服務器行為。在服務器行為監視器中打開該服務器行為對話框,在Detail Page處輸入文件名newsMan.jsp。一定把字段fSubjectID的值作為參數傳遞到newsMan.jsp頁。如圖所示。4. 選中表格,添加一個Repeat Region服務器行為。按圖所示進行設置。5. 保存文件。因為adm.html是個框架文件。需要選擇File菜單下的Save All Frames選項進行保存。19.4 密碼管理客戶端的計算機只能訪問到

29、新聞發布系統的新聞內容,而對新聞的管理只能由新聞發布系統的管理員進行管理,不允許瀏覽者隨便修改或添加新聞的內容。所以,新聞發布系統的管理模塊必須設置一定的權限。可以為新聞管理系統設計一個密碼管理頁,為管理員修改密碼用。 制作密碼管理頁PassMan.jsp管理模塊的密碼存儲在服務器端相應的數據表中。由于密碼只能有一個,本頁主要功能也就是修改密碼,添加Update record服務器行為可以實現其功能。再添加一個Validate Form行為檢驗窗體對象中是否輸入了密碼。可按以下步驟添加兩種行為。1. 在站點文件窗口中打開PassMan.jsp文件。2. 在新密碼提交到服務器端前,還要在客戶端驗

30、證一下Form中各窗體對象中是否輸入了新密碼,以及兩次輸入密碼是否相同。所以首先要添加一個Validate Form服務器行為。選中Form,選擇Window菜單下的Behaviors選項。打開Behaviors行為監視器。PassMan.jsp3. 單擊面板上的“+”按鈕,從彈出的菜單上選擇Validate Form選項,打Validate Form行為對話框。按圖所示進行設置。4. 在添加了該行為后,還要對該行為所對應的程序代碼進行修改。讓其具有判斷兩次輸入的密碼是否相同的功能。5. 在HTML代碼中找到與Validate Form行為對應的程序。添加下面的代碼。 else if (tes

31、t.charAt(0) = R) errors += - +nm+ is required.n; /手寫代碼,判斷兩次輸入的密碼是否相同/*手寫代碼開始 If (form1.txtNewPass.value! =form1.txtPassAgain.value)errors+=兩次密碼輸入不同!;Form1.txtNewPass.value=;Form1.txtPassAgain.value=;Form1.txtNewPass.focus (); /*手寫代碼結束if (errors) alert(The following error(s) occurred:n+errors); Docum

32、ent. MM_returnValue = (errors = );/-6. 修改數據表中的記錄,所修改的是數據表中當前的記錄。所以,首先要定義一個記錄集。定義記錄集時可按圖所示的進行設置。要從數據表tNewsAdmin中取得記錄。數據表中的記錄只有兩個字段,保存用戶名的fAdminName字段和保存密碼的fAdminPass字段,要定義成選取所有的字段(All)7. 定義了記錄集后,開始添加一個Update record服務器行為。打開Update record服務器行為對話框,按圖所示進行設置。更新記錄也就是更新記錄中fAdminName字段的值與所定義的記錄集中當前記錄fAdminNam

33、e字段的值相同的記錄,fAdminName字段中的值在表中必須是惟一的。定義記錄集的作用就是為更新記錄提供條件。8. 更新表中的記錄后,轉到subMan.jsp頁。在Form Elements處設置成fAdminPass字段的值修改為窗體txtNewsPass中的值。所修改記錄的fAdminPass字段的值應該是當前記錄的fAdminPass字段的值19.5 新聞類別管理新聞類別管理包括對新聞類別的編輯、刪除和新建類別,管理員也就是通過這3個操作來管理新聞類別的。19.5.1主頁面類別管理的主頁面如圖所示。管理員通過該頁選擇某一個操作,編輯、刪除或新建類別,與這3個操作相關的頁分別是SubEd

34、it.jsp頁、SubDel.jsp頁和SubAdd.jsp頁,而SubEdit頁和SubDel頁所進行的具體操作是根據由類別管理的主頁面傳遞過來的參數來判斷編輯或刪除表中的哪一條記錄。主頁面應把所有新聞類別列出來。編輯管理類別的主頁面所進行的操作就是在給出的靜態頁面的基礎上定義記錄集和添加幾種服務器行為。1. 首先在站點文件窗口中打開SubMan.jsp文件。2. 定義記錄集,向頁面綁定動態數據。定義記錄集就是從表tNewsSubject中取出記錄,動態地顯示所有新聞類別。定義記錄集時,選取字段的項設置成選取所有的字段,顯示記錄的順序設置成按fSubjectID字段的升序排序。記錄集的名最好

35、取成rsSubject。設置好的記錄集對話框如圖所示。綁定動態數據。只需把記錄集rsSubject中的fSubjectName字段和fSubjectID字段分別綁定到SubMan.jsp頁面上表中【類別】列處和ID列處。3. 添加Go To Detail Page服務器行為。把頁面中的編輯操作和刪除操作分別設置成動態鏈接,并向該鏈接所指向的頁傳遞參數。設置該動態鏈接需要添加Go To Detail Page服務器行為。為【編輯】操作設置動態鏈接時的Go To Detail Page服務器行為對話框如下圖所示。4. 為【刪除】操作設置動態鏈接時添加Go To Detail Page服務器行為,與

36、【編輯】操作所不同的是Detail Page處的文本框中輸入subdel.jsp文件名。5. 添加Repeat Region服務器行為。添加Repeat Region服務器行為,使新聞類別全部顯示出來。選中表格中的第1行。如圖所示。選中表格中的第1行6. 添加Repeat Region服務器行為時設置成顯示所有新聞類別。如圖所示。Repeat Region服務器行為對話框7. 為【新建類別】添加鏈接。該鏈接不需向所指向的頁傳遞參數,在屬性浮動面板中就可以完成。設置該鏈接的屬性浮動面板如圖所示。8. 執行了編輯、刪除或新建類別之后,應該刷新menu.jsp頁,即框架的左邊導航部分。單擊頁面下面的

37、body標簽,選中頁面的所有內容。單擊行為監視器中的“+”按鈕,從彈出的菜單上選擇Call JavaScript選項。設置鏈接的屬性浮動面板9. 在彈出的對話框中輸入window.parent.left.location=menu.jsp。如圖所示。Call JavaScript對話框類別管理的主頁面也就設置完了。19.5.2編輯新聞類別編輯新聞類別頁SubEdit.jsp的主要功能就是修改相應表中的某一個記錄。該頁添加了所需要的行為后的樣式如圖所示。SubEdit.jsp文件 制作“編輯新聞類別”頁面1. 添加Validate Form行為。添加Validate Form行為的目的是把修改后

38、的類別在提交給服務器之前驗證窗體對象中是否有內容。只有窗體對象中不為空,才能把修改后的結果提交到服務器端對相應的數據表中的記錄進行修改。如圖所示進行添加該行為。2. 定義記錄集。編輯新聞類別就是對存儲新聞類別的數據表中的記錄進行修改,需要用Update Record服務器行為,添加該服務器行為的前提要定義一個記錄集。按下圖所示進行定義記錄集。定義該記錄集需要設置取得記錄的過濾器,就是根據從管理類別的主頁面SubMan.jsp傳過來的參數進行選取記錄集。3. 定義完記錄后,分別把fSubjectID字段和fSubjectName字段綁定到Form中的類別ID和類別處。綁定后如圖所示。4. 添加U

39、pdate Record服務器行為。設置Update Record服務器行為對話框如圖所示。Unique Key Column下拉列表中選擇fSubjectID字段作為修改表tNewsSubject 中某一個記錄的依據,fSubjectID字段的值在表tNewsSubject中是惟一的19.5.3新建新聞類別新建新聞類別在服務器端所進行的操作就是向表tNewsSubject中插入一條記錄。所以完成該頁需要添加2個行為:一個是用來在客戶端驗證窗體對象中是否有內容的Validate Form行為;一個就是用來向表tNewsSubject中插入記錄的Insert Record服務器行為。樣式如圖所示

40、。設計好的SubAdd.jsp文件1. 按下圖所示進行添加Validate Form行為。注意把用來輸入新聞類型編號的窗體對象設置為數值型(Number)2. 按下圖所示進行添加Insert Record 服務器行為。在設置該對話框時注意Form Elements處的數據類型要匹配,以及所插入記錄的數據表。Insert Record服務器行為對話框19.5.4刪除新聞類別刪除新聞內容在服務器端所進行的操作就是刪除相應數據表中的某些記錄。該文件在執行時是不可見的。所完成該頁需要定義一個Prepared完成對數據庫的刪除操作。1. 新建一個文檔窗口,以Subdel.jsp保存該文件。2. 定義Pr

41、epared。打開服務器行為監視器,單擊面板上的“+”按鈕,從彈出的菜單中選擇Prepared(Insert,Update,Delete)選項,打開定義Prepared對話框。按圖所示進行定義。在SQL處輸入的語句如下。DELETE FROM tNewsSubject WHERE fSubjectID = iSubID這個語句描述的是根據WHERE子句的規定來刪除表tNewsSubject中的記錄,而變量iSubID的值是從類別管理的主頁面中傳過來的。當然,還需要在Variables處定義iSubID變量。在Name處輸入iSubID,在Run-time Value處輸入request.get

42、Parameter(“fSubjectID”)。3. 最后轉到代碼窗口中,在頁面的最后加上一條語句:response.sendRedirect(subMan.jsp);使之執行操作后轉到類別管理頁。如下。19.6 在線更新新聞發布系統的內容每天都要更新,在線更新主要是新聞的內容進行更新。更新的具體操作就是編輯新聞、刪除新聞和添加新聞。在線更新所對應的網頁文件包括新聞管理頁newsMan.jsp、添加新聞頁newsAdd.jsp和刪除新聞頁newsDel.jsp。newsMan.jsp頁在瀏覽器中瀏覽的樣式如圖所示。從圖中可看出,newsMan.jsp頁的頂部顯示當前新聞內容的類別,新聞類別的下

43、面就是當前新聞類別的標題,從新聞標題右面的操作項可以對新聞具體內容的刪除或添加,下方的文本框就是對某一新聞標題所對應的具體內容進行編輯。為了對本頁更清晰地講解,把新聞內容管理頁NewsMan.jsp分成3部分講述,顯示當前新聞標題、顯示當前新聞內容和編輯新聞內容。新聞內容管理頁面19.6.1顯示當前新聞類別1. 首先在站點文件窗口中打開沒有添加動態數據和行為的newsMan.jsp文件。2. NewsMan.jsp頁對應的新聞類別標題要能根據所選的新聞類型動態地顯示。需要為這一部分定義一個記錄集,記錄集根據從menu.jsp頁傳過來的參數進行選取記錄。設置定義記錄集的對話框如圖所示。在SQL處

44、輸入的語句如下:SELECT fSubjectName, fSubjectIDFROM tNewsSubjectWHERE fSubjectID = iSubjectID該語句的功能是選取表tNewsSubject中的fSubjectName字段和 fSubjectID字段,并且只選取字段fSubjectID的值等于變量iSubjectID的值的記錄。另外還需要在Variables處定義變量iSubjectID并賦初值,在Name處輸入變量名iSubjectID,在Default Value處輸入1作為該變量的初值,在Run-time Value處輸入request.getParameter(

45、fSubjectID)取得從上一頁傳過來的標記新聞類別的參數,作為該語句運行時的值。3. 定義好記錄集后,把記錄集rsCurSubject中的fSubjectName字段綁定到頁面【類別】項中。如圖所示。向【類別】處綁定動態數據19.6.2顯示當前新聞標題顯示當前新聞標題就是根據在menu.jsp頁所選的新聞類別,向NewsMan.jsp頁傳遞參數,顯示當前用戶所選擇的新聞類別的標題。而這部分動態內容所對應的記錄集就是根據這個參數取得的。根據新聞標題可以編輯相應的具體內容。所以,需要為這一部分添加一個Go To Detail Page服務器行為。要同時顯示多條新聞標題,需要添加Repeat R

46、egion服務器行為。如果沒有某一類型的新聞,則新聞標題不顯示,可以添加一種Show Region服務器行為實現此功能。如果不顯示新聞標題,則顯示【沒有新聞!添加新聞】,并且【添加新聞】設置為動態鏈接。還要把【添加】和【刪除】字樣分別設置為動態鏈接。在新聞標題這一部分,有兩組動態導航鏈接,從這兩組導航鏈接可以查看當前類型的所有新聞。可以用擴展的服務器行為現實這組動態鏈接。 制作“顯示當前新聞標題”頁面1. 首先為這部分動態內容建立記錄集。建立記錄集的對話框如圖所示。定義該記錄集時注意從表tNews中選取數據。只需要選取 fNewsID、fTopic和fDate三個字段。fNewsID字段保存的

47、是表中新聞的編號,它惟一標識一條新聞;fTopic保存的是新聞的標題,fDate保存是新建新聞的日期。Variables中定義變量iSubjectID并賦初值:Name:iSubjectID;Default Value:1;Run-time Value:request.getParameter(fSubjectID)取得從上一頁傳過來的標記新聞類別參數,作為運行時的值在SQL輸入的語句如下:SELECT fNewsID, fTopic, fDateFROM tNewsWHERE fSubjectID = iSubjectIDORDER BY fDate DESC這個語句的功能與建立記錄集rsC

48、urSubject時輸入的語句功能相似,只是語句的最后多加了一個ORDER BY fDate DESC子句,這個子句的功能就是按日期的倒序排列從表中取得的記錄,從頁面的內容上說就是先列出最新的新聞標題。2. 向頁面綁定動態數據。把fTopic字段和fDate字段分別綁定到顯示新聞類別的下面表格標題處和日期處。3. 為新聞標題添加Go To Detail Page服務器行為。選中rsNewsResult.fTopic 在服務器行為監視器中打開Go To Detail Page服務器行為對話框。如圖所示。鏈接到newsMan.jsp頁的同時,把rsNewsResult記錄集當前記錄的fNewsID

49、字段的值作為參數fNewsID的值傳遞過去。另外,newsMan.jsp頁在運行時需要一個fSubjectID參數來標明當前新聞類別,所以把URL parameters復選框打勾,以傳遞當前頁面的fSubjectID參數到下一個頁面。實際上,當前頁面是newsMan.jsp,下一個頁面也是newsMan.jsp,它是一個結果頁和細節頁在一個頁上的頁面。如果不把URL parameters復選框打勾,下一個newsMan.jsp頁面就會“忘掉”fSubjectID這個URL參數,造成當前新聞類別顯示不正確4. 添加Go To Detail Page服務器行為時生成的代碼出現了一個bug。下面我們

50、來修正Ultradev 4的這個bug。為新聞標題添加Go To Detail Page服務器行為,可以通過該鏈接把相應新聞標題所指向的新聞具體內容顯示在本頁下面的編輯區進行編輯,但只能通過新聞標題編輯一條新聞,若通過該鏈接再次編輯新聞的時候,就會出錯。因為每次點擊新聞標題鏈接,需要向編輯區傳遞一個URL參數,并且這個參數會被記住,所以當再次點擊新聞標題處鏈接的時侯,URL參數就會多出一個fNewsID參數。形如:newsMan.jsp?fNewsID=27&offset=0&fNewsID=33,造成語法錯誤。5. 轉到代碼窗口中,查找找到變量MM_removeList,把變量MM_remo

51、veList處的語句:String MM_removeList = index, MM_paramName ;修改成語句:String MM_removeList = index,fNewsID ,MM_paramName ;即在原語句處多加了fNewsID字符串,這樣就可以去掉以前URL參數。6. 為【添加】字樣設置動態鏈接。從【添加】鏈接進入到添加頁時,所顯示的新聞類別應與當前新聞管理頁中的新聞類別相同。所以需要把從新聞管理頁上一頁即menu.jsp頁傳過來的參數(這個參數也就是標記新聞類別的字段fSubjectID的值)傳遞到添加新聞頁。那么設置這個鏈接需要用Go To Related

52、Page服務器行為。7. 先選中【添加】字樣,在服務器行為監視器中打開Go To Related Page服務器行為對話框。在Related Page處輸入newsAdd.jsp文件名,注意選中URL Parameters處的復選框8. 為【刪除】字樣設置動態鏈接。【刪除】鏈接所指向的刪除頁newsDel.jsp所進行的操作是刪除具體的新聞內容。這個動態鏈接需要把標記所要刪除的新聞的參數(這個參數的值就是表tNews中fNewsID字段的值)傳遞到newsDel.jsp頁,只有這樣刪除頁newsDel.jsp才會知道應該刪除哪一條記錄。設置這個鏈接需用Go To Detail Page服務器行

53、為。9. 選中【刪除】字樣,在服務器行為監視器中打開Go To Detail Page服務器行為對話框。設置好的Go To Detail Page服務器行為對話框如圖所示。注意選中復選框URL Parameters,使newsDel.jsp頁執行完畢轉向newsMan.jsp 時顯示的是刪除前的新聞類別中的內容10.為顯示多條新聞標題添加重復域。選中動態數據所在的行,在服務器行為監視器中打開Repeat Region服務器行為對話框。設置成一次顯示5條記錄。如圖所示。11.Repeat Region服務器行為設置的是一次顯示5條記錄,現在添加一組動態導航條。這樣在當前新聞內容多于5條的情況下,

54、也能瀏覽到未顯示的新聞。首先把光標放到新聞標題上面的表格中。添加的結果如圖所示。添加一組導航按鈕12.同樣,在【沒有新聞!添加新聞】下面的表格中添加一個動態導航條。如圖所示。在標題下方添加一組導航條13.為【沒有新聞!添加新聞】信息添加Show Region If Recordset Is Empty服務器行為,在相應新聞內容為空的情況下顯示此信息。該行為對話框如圖所示。14.把【沒有新聞!添加新聞】信息中的【添加新聞】設置成能夠傳遞本頁參數的鏈接,可利用Go To Related Page服務器行為。此鏈接指向newsAdd.jsp頁。注意向newsAdd.jsp頁傳遞參數fSubjectI

55、D。經過以上步驟的制作,完成了新聞標題處的制作。新聞標題處的動態內容19.6.3編輯新聞內容新聞內容管理頁NewsMan.jsp下面的表單是用來編輯新聞內容的。要完成這部分內容,需要用到Update Recordset服務器行為,相應地需要定義一個記錄集。又因為新聞類別是由新聞類別管理模塊來管理,不是隨便輸入的,編輯區域內【類別】的修改最好通過選擇菜單進行選擇,菜單的選項是新聞類別名,如果在新聞管理模塊中對新聞類別做了改動,菜單的選項也應隨之而改變,所以還需要為這個選擇菜單定義記錄集,綁定動態數據。如果某類新聞為空,則編輯就變得沒有意義,所以需要為這一部分添加一個Show Region服務器行

56、為。最后再添加一個Validate Form行為,即不允許編輯為空就提交。 完成“編輯新聞內容”動態內容1. 為修改的內容建立記錄集。因為所做的修改包括與具體新聞相關的內容,如作者、新建日期等,所以應取得所有字段。修改哪一條新聞具體內容,是通過新聞標題來選擇的,那么建立的這個記錄集一定把從新聞標題傳過來的惟一的標識一條新聞的參數作為取得記錄的條件,這樣也就保證了新聞標題與下面的編輯區的一致。在SQL處輸入下面的語句就可以實現此功能。SELECT *FROM tNewsWHERE fNewsID = ifNewsID設置完畢的記錄集對話框如圖所示。單擊OK保存設置。還需要考慮一個問題,rsNew

57、sDetail中的記錄默認情況下應該是rsNewsResult記錄集中的當前記錄的fNewsID字段值所對應的那條記錄。這樣可以保證用戶點擊導航鏈接后能把rsNewsResult記錄集中當前記錄顯示在頁面上的第1條記錄的詳細信息。解決的辦法只需把參數fNewsID的初值設置為rsNewsResult記錄集中的當前記錄的fNewsID字段的值就可以了。2. 轉到代碼窗口中,找到與rsNewsDetail記錄集對應的一段程序:3. 在上面的語句中,注意到String rsNewsDetail _ ifNewsID = 1 這條語句,就是為參數賦初值的,可以看出,它的默認值為1。現在我們需要做這樣的

58、更改,把rsNewsResult記錄集中的當前記錄的fNewsID字段值作為rsNewsDetail _ ifNewsID變量的初值。所以上面程序段中紅色部分修改成:首先利用if條件語句判斷記錄集rsNewsResult是否為空,也就是是否有當前新聞類別的新聞。如果沒有當前新聞類別的新聞,記錄集rsNewsDetail就為空,那么再執行rsNewsResult.getObject(fNewsID);就會出錯,因為這樣給變量rsNewsDetail_TempiNewsID賦值為-1,即不會執行rsNewsResult.getObject(fNewsID);語句,也使得記錄集rsNewsDetai

59、l為空。這樣初記錄集的初始化在邏輯上也就正確了。4. 要使修改后的語句有意義,必須保證rsNewsResult記錄集已經創建并且記錄指針已經移到了合適位置。所以需要改變修改后的rsNewsDetail記錄集代碼的位置。為了避免出現其他方面的錯誤,盡量把上面的這段記錄集代碼往后移,移到為新聞標題添加的Repeat Region服務器行為所對應的代碼前面,這個位置是放置這段記錄集代碼的最后位置,不能再往后移了。下面紅色代碼部分是移動后的記錄集rsNewsDetail代碼。 標題 日期 操作A HREF=newsAdd.jsp?添加 A HREF=newsMan.jsp? A HREF=NewsDe

60、l.jsp?刪除 5. 定義完記錄集,就可以向編輯區綁定動態數據。綁定動態數據時,注意fTopic字段綁定到【標題】處,fDate字段綁定到【日期】處,fAuthor字段綁定到【作者】處,fKeyWords字段綁定到【關鍵詞】處,fContent字段綁定到【正文】處。綁定后如圖所示。向編輯區綁定動態數據6. 為選擇菜單綁定動態數據。首先定義相應的記錄集,按下圖所示的進行設置。注意是從表tNewsSubject中選取記錄7. 為選擇菜單定義好記錄集后,開始向【類別】項的選擇菜單綁定動態數據。打開服務器行為監視器,單擊服務器行為面板上的“+”按鈕,從彈出菜單上選擇Dynamic List/Menu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論