黃 慶
(武漢交通職業(yè)學(xué)院,湖北 武漢 430065)
在知識大爆炸的網(wǎng)絡(luò)時代,科技正飛速發(fā)展,知識更新和職業(yè)轉(zhuǎn)換的頻率加快,每個人都必須不斷學(xué)習(xí)以適應(yīng)社會新形勢的要求。傳統(tǒng)的課堂講學(xué)模式有其局限性,教育者不可能在課堂上將所有人類知識傳授給學(xué)習(xí)者。與傳統(tǒng)模式不同,自主學(xué)習(xí)不受學(xué)習(xí)時間和空間的限制,更強調(diào)學(xué)習(xí)者主觀能動性的發(fā)揮。在自主學(xué)習(xí)情景模式中,學(xué)生有充分的選擇權(quán)和控制權(quán),他們必須主動思考、探究問題,自主控制學(xué)習(xí)目標(biāo)、學(xué)習(xí)內(nèi)容、學(xué)習(xí)方法和學(xué)習(xí)材料,自由搜索、處理、交流信息[1]。自主學(xué)習(xí)成為我們適應(yīng)社會發(fā)展的常規(guī)化學(xué)習(xí)方式,適合于自主學(xué)習(xí)的Web交流平臺正應(yīng)用在越來越多的領(lǐng)域中。
自主學(xué)習(xí)Web交流平臺不僅僅是用于展示單純的信息,而且還可以進行復(fù)雜的數(shù)據(jù)交互,實現(xiàn)人與人之間的溝通。因此不難理解,適用于自主學(xué)習(xí)的Web交流平臺應(yīng)具有信息源分散、數(shù)據(jù)量大、數(shù)據(jù)開放這幾個特點。具體來說,一個成功的Web交流平臺要有友好、實用的數(shù)據(jù)訪問窗口,資源要能公開;平臺要為交流服務(wù),要便于查找,獲取信息方便、快捷,要穩(wěn)定性好,要考慮平臺的使用頻率,使系統(tǒng)能夠承載數(shù)量龐大的訪問人數(shù);同時,平臺要能吸引用戶,吸引有價值的信息資源,當(dāng)然,所有資源信息和用戶信息都要便于維護和擴展。
平臺的形式雖然多樣,但究其采用的核心技術(shù)卻是基本相同的,其中之一就是廣泛應(yīng)用的Java Web技術(shù)。本文根據(jù)自主學(xué)習(xí)平臺的特點進行分析,詳細(xì)闡述如何運用相關(guān)技術(shù)來實現(xiàn)一個成功的交流平臺。
為了更好服務(wù)于自主學(xué)習(xí),平臺的界面應(yīng)該能吸引用戶,進而引導(dǎo)其在交流平臺中選擇學(xué)習(xí)內(nèi)容、確定學(xué)習(xí)目標(biāo),進行更深的探究。所以,Web平臺界面用戶界面(Ui)的設(shè)計非常重要。友好界面表現(xiàn)在如下幾個方面。
為了方便用戶自主選擇學(xué)習(xí)內(nèi)容,平臺的框架應(yīng)該設(shè)置分欄、導(dǎo)航,應(yīng)該加入組合框等控件提示選擇。開發(fā)者要明確平臺使用的對象是誰,哪些信息是十分重要的、哪些是可以放在下級頁面中的。同時要科學(xué)考慮用戶視覺上的關(guān)注點集中在頁面什么范圍,以此依據(jù)來布局信息模塊。所有頁面最好有整齊劃一的設(shè)計風(fēng)格,相似功能模塊在每個頁面中的位置最好是固定的,以方便查找,也便于學(xué)習(xí)者調(diào)整學(xué)習(xí)目標(biāo)。
實現(xiàn)頁面的設(shè)計可以采用css+div技術(shù)。css+div結(jié)構(gòu)的特點是維護簡單、層次分明,易被搜索引擎抓取,書寫修改起來方便,能對頁面的布局、字體、顏色等效果進行更精確的控制。編寫一個好的css文件,可以在很多頁面中運用,這不僅實現(xiàn)風(fēng)格的統(tǒng)一而且也加快了開發(fā)速度。開發(fā)人員一般要編輯一個樣式文件 Mysty.css,在樣式文件中可以利用div標(biāo)簽對頁頭尺寸、頁頭圖片、菜單格式、導(dǎo)航條樣式、主題body格式以及各個頁面模塊的樣式分別進行定義,然后在網(wǎng)頁文件中用語句:將樣式應(yīng)用到頁面中即可。
自主學(xué)習(xí)平臺強調(diào)互動,用戶在平臺中經(jīng)常要做“輸入信息”的操作。開發(fā)者要能預(yù)見和允許用戶犯操作錯誤,對誤操作要能進行智能判斷、及時糾正,并給出提示。例如,頁面中文本框輸入的文本有格式及字?jǐn)?shù)的要求,運用JavaScript技術(shù)可以解決此類問題。JavaScript是網(wǎng)頁中的腳本語言,它能增強網(wǎng)頁的互動性,可使有規(guī)律重復(fù)的HTML文段簡化,減少下載時間,能及時響應(yīng)用戶的操作,對提交表單做即時的檢查,無需浪費時間交由CGI驗證[2]。如,可通過如下關(guān)鍵語句進行判斷和提示:
判空:if(表單名.文本框名.value= =""){alert("文本框輸入不能為空!");……};
字?jǐn)?shù) 限 制 :if(表 單 名 .文 本 框 名.value.length<最小值||表單名.文本框名.value.length>最大值){alert("提示長度……");……}。
當(dāng)然盡可能及時糾錯也很重要,如注冊的用戶名如果重復(fù),要及時通知更換用戶名,不要等到所有注冊信息都填完后再提示;文本框輸入時,不要等用戶全部輸完“提交”后再提示用戶字?jǐn)?shù)超過規(guī)定范圍。平臺可以利用文本框的事件響應(yīng)方法來解決此類問題。
為了方便用戶在任何時間、任何位置,從任何內(nèi)容開始學(xué)習(xí),可在頁面中設(shè)置面包屑導(dǎo)航功能、鏈接功能、分頁功能等。
導(dǎo)航的作用就是指引和導(dǎo)向。在平臺中不僅要設(shè)置主導(dǎo)航,也就是設(shè)置在頭部最醒目的導(dǎo)航,而且還應(yīng)設(shè)置輔導(dǎo)航、左導(dǎo)航、右導(dǎo)航以及面包屑導(dǎo)航。設(shè)置面包屑導(dǎo)航可以顯示當(dāng)前頁面的前一個頁面或者目錄的鏈接,其意義在于明確告知用戶目前處于網(wǎng)站的何種位置,方便用戶定位到上級頁面,減少用戶返回某個頁面的點擊次數(shù),解決了用戶在網(wǎng)站里迷失的問題。同時還可以在用戶進入到網(wǎng)站某個頁面后,誘使他們點擊面包屑路徑中的其他感興趣的主題頁面,降低跳出率,以實現(xiàn)對學(xué)習(xí)的干預(yù)和指導(dǎo)。面包屑導(dǎo)航一般都在主導(dǎo)航條的下面作為其細(xì)節(jié)延伸,形式一般為“首頁>頻道名稱>子分類名稱>當(dāng)前內(nèi)容”。開發(fā)者應(yīng)盡量要把面包屑導(dǎo)航的層次控制在四層以內(nèi)。
學(xué)習(xí)平臺中信息類別多,如何展示這些信息呢?如果只是羅列在某個網(wǎng)頁中效果不會很好,即便是搜索功能也只是把相同內(nèi)容或包含某個關(guān)鍵字的內(nèi)容展示出來。筆者認(rèn)為頁面中的各個知識點、各個內(nèi)容之間存在有橫向、縱向以及交叉的聯(lián)系,可以利用鏈接有效地將這些內(nèi)容串聯(lián)起來。比如某一個章節(jié)知識中,可以設(shè)置重難點、例題、習(xí)題等鏈接,在例題、習(xí)題等頁面中可以設(shè)置自我測試、操作視頻、動畫等鏈接,還可以鏈接與之相關(guān)的背景材料、交叉學(xué)科等,以實現(xiàn)自主學(xué)習(xí)的逐步深入遞進。
常見的鏈接還有“返回頂部”和分頁鏈接功能,當(dāng)我們?yōu)g覽到頁面底部時,彈出返回頂部的鏈接,點擊便可回到頂部,從而提高平臺的瀏覽性能。具體可參照以下代碼:
信息量龐大時,在顯示時如果沒有分頁就顯得很不專業(yè)。解決的方法是通過在顯示信息的JSP頁面中設(shè)置每頁顯示的最大信息條數(shù),計算頁數(shù)以便動態(tài)生成頁碼數(shù),建立頁碼的連接,不同頁碼的鏈接對應(yīng)顯示不同范圍的查詢記錄??蓞⒖家韵鲁绦蚱?/p>
在交流平臺中傳播信息的方式很多,其中最普遍的就是編輯文本,發(fā)表文本信息。簡單的文本框或文本區(qū)(Textarea)功能有限,用戶若想自己設(shè)置字體、顏色、圖片等特色化的“情感元素”,則可以通過一個帶編輯功能的文本輸入?yún)^(qū)。FCKeditor是一個文字編輯器,它被專門運用在網(wǎng)頁上實現(xiàn)在線網(wǎng)頁編輯器的功能,可以讓W(xué)eb程序擁有如MS Word這樣強大的編輯功能。在服務(wù)器端支持Java語言,并且支持多種瀏覽器。[3]
文字編輯器的關(guān)鍵設(shè)置包括:定義外觀路徑FCKConfig.CustomConfigurationsPath、字體 FCKConfig.FontNames、配置編輯器圖片所在的文件夾FCKConfig.SmileyPath、設(shè)置調(diào)用要顯示的圖片SmileyImages、表情窗口的寬和高SmileyWindow-Width、SmileyWindowHeight。
自主學(xué)習(xí)交流平臺就要像一個“干海綿”,要不斷吸收“養(yǎng)分”,要能吸引用戶,“吸引”有價值的信息資源,當(dāng)然,所有資源信息和用戶信息都要便于維護和擴展,我們可從以下幾個方面進行設(shè)計。
平臺中的功能不應(yīng)該對所有用戶開放,在設(shè)計時一定要充分考慮如何劃分權(quán)限,如何制定管理事項,如用戶審核、信息審核等。否則在平臺運作后,會出現(xiàn)因為管理不善,而致使平臺信息反饋延遲,隱私泄漏。設(shè)置權(quán)限不僅是為了保障用戶私密信息,也是為了下放管理工作,從而更有效管理數(shù)據(jù),形成規(guī)則制約,讓平臺的運行有個好的秩序。
一般會設(shè)置三到五層訪問權(quán)限,最常見的三級權(quán)限分別是:一般用戶、注冊用戶、管理員。根據(jù)需要,管理員可以進一步細(xì)分為不同級別的管理員,如系統(tǒng)管理員、學(xué)習(xí)指導(dǎo)員等。為了區(qū)分不同級別的注冊用戶,可以將其分為初、中、高、頂級用戶。用戶升級的依據(jù)是其累計學(xué)習(xí)的時間和提出問題、參與答疑的次數(shù)、質(zhì)量。同樣,為了提高用戶參與交流的積極性,還可以設(shè)置積分制或“學(xué)習(xí)幣”制,對用戶有價值的信息發(fā)布,給予加分、發(fā)幣的獎勵。
不管是管理員還是普通用戶刪除的信息,盡量保存或設(shè)置一個保留備份的時間限制,以方便找回。很多被刪除的信息可能仍有價值,所以對客戶端的“刪除”操作請不要直接“Delete”。可以在設(shè)計數(shù)據(jù)庫表時,增加一個字段,用來標(biāo)記是否是激活狀態(tài)。如果是,該信息就是可用的,否則就是不可用的。這樣被用戶刪除的信息實際仍然保存在數(shù)據(jù)庫中,仍可以通過語句找回來。
為了方便用戶隨時隨地了解學(xué)習(xí)進度,可以采用Cookie技術(shù)將該用戶最后訪問的若干頁面URL保存下來,當(dāng)該用戶登錄進入后,可以通過用戶ID找到對應(yīng)的Cookie信息,用戶通過這些信息即可找出上次結(jié)束的位置。使用內(nèi)置對象Response和Request搭配進行Cookie值的生成和獲取。其中,Response.AddCookie(ck)用于在其響應(yīng)頭中增加一個相應(yīng)的Set-Cookie頭字段;Request.GetCookies()用于獲取客戶端提交的所有Cookies;Cookie.GetValue()則返回某個Cookie對象的值。默認(rèn)情況下Cookie是會話級別的(即存儲在瀏覽器的內(nèi)存中),用戶退出瀏覽器之后即被刪除。若希望瀏覽器將該Cookie存儲在磁盤上,則需要使用SetMaxAge(參數(shù))方法,其中參數(shù)是一個以秒為單位的Cookie的保存時間。要注意的是大多數(shù)瀏覽器支持最大為4096字節(jié)的Cookie,因此最好用Cookie來存儲用戶ID之類的標(biāo)識符,用戶的詳細(xì)信息則通過用戶ID從數(shù)據(jù)庫或其他數(shù)據(jù)源中讀取。[4]
作為平臺的管理方,要知道如何確定變化中的熱點內(nèi)容以便及時調(diào)整頁面。既可以通過對數(shù)據(jù)庫信息進行統(tǒng)計,也可借助某些網(wǎng)站日志分析器軟件來全面獲得網(wǎng)站訪問報表,從而更精確分析如下信息:網(wǎng)站總體訪問情況,訪問者關(guān)注的頁面(停留時間長、訪問量大),訪問者的位置(國家、地區(qū)),訪問出現(xiàn)的錯誤情況等。
系統(tǒng)性能主要從運算能力、內(nèi)存分配、啟動時間、程序伸縮性這幾個方面來判斷。其中程序伸縮性是系統(tǒng)在用戶負(fù)載過重情況下的表現(xiàn),直接影響系統(tǒng)彈性。JSP是目前主流的Web技術(shù),是建立在Java基礎(chǔ)上的一種網(wǎng)絡(luò)編程語言,它擁有Java語言跨平臺的特性,利用JSP指令、腳本、動作、內(nèi)置對象可以實現(xiàn)Web平臺的動態(tài)頁面。然而其開發(fā)的服務(wù)器端應(yīng)用程序的性能問題依然存在。開發(fā)者應(yīng)充分利用各種資源,如內(nèi)存、CPU、高速緩存,從而設(shè)計出高性能和可伸縮性強的系統(tǒng)[5],在設(shè)計和編碼階段可以通過如下技術(shù)來提高平臺的性能。
JavaBean是特殊的Java類,將實現(xiàn)某種特殊功能或者處理某個業(yè)務(wù)的代碼定義在Bean中,不僅實現(xiàn)了資源的共享和重用。而且增加了代碼的可擴展性。JavaBean的編寫要符合一定規(guī)范。在web平臺中要定義的JavaBean通常分為實體Bean和工具Bean。實體Bean一般會和數(shù)據(jù)庫中的表相對應(yīng),JavaBean中的屬性對應(yīng)數(shù)據(jù)庫表的字段。比如,若平臺涉及到“用戶”數(shù)據(jù),在數(shù)據(jù)庫中需要創(chuàng)建用戶(user)表,表中各字段是和用戶相關(guān)的數(shù)據(jù),那么在定義對應(yīng)Bean文件User類時,其屬性要和數(shù)據(jù)表字段相一致。
工具Bean用來完成某特定功能,如數(shù)據(jù)庫操作、數(shù)據(jù)類型轉(zhuǎn)化、字符編碼設(shè)置等功能。數(shù)據(jù)庫的驅(qū)動加載、連接和數(shù)據(jù)的查詢、修改、插入和刪除等操作都有很多相似之處,語句都可通用。把這些語句定義在JavaBean中方便了平臺對數(shù)據(jù)庫的操作。可將具有通用性的代碼定義在一個工具Bean中,將其作為基類,再針對不同實體的數(shù)據(jù)操作不同,派生不同的工具Bean。對于系統(tǒng)中常見的數(shù)據(jù)類型轉(zhuǎn)化和編碼出現(xiàn)亂碼的問題也可以采用JavaBean統(tǒng)一編寫。
使用
開發(fā)者要注意的是useBean動作中使用合適的范圍。Scope屬性的默認(rèn)值是Page,然后Bean對象有效的范圍從小到大依次是Request、Session、Application。應(yīng)該根據(jù)應(yīng)用的需求選擇正確的范圍,因為在Bean所設(shè)置的范圍內(nèi),它會一直保留在內(nèi)存中,除非你明確地把它從內(nèi)存中刪除。由于內(nèi)存和垃圾收集的開銷將會影響性能,因此,我們應(yīng)為Bean對象設(shè)置合適的范圍并在用完它們之后立即刪除。
JSP使用JDBC技術(shù)操作數(shù)據(jù)庫,所以它的跨平臺和移植性能都是很好的。JSP通常將頁面中的靜態(tài)部分和動態(tài)部分分離,前者用HTML語言或在Dreamweaver中設(shè)計,后者使用JSP標(biāo)簽和Java程序片實現(xiàn)。將業(yè)務(wù)代碼交由JavaBean或其他業(yè)務(wù)控制層處理,這也就是目前較成熟的MVC的設(shè)計模式,B/S(Browser/Server)體系結(jié)構(gòu)。通過JSP的內(nèi)置對象,可以實現(xiàn)不同范圍的頁面數(shù)據(jù)的訪問和保存。Session對象用來保存某一個客戶在訪問平臺頁面期間的信息,可以用來統(tǒng)計學(xué)習(xí)者的在線學(xué)習(xí)時間。Application對象則可以用來統(tǒng)計平臺的訪問次數(shù)、在線人數(shù)等開放運轉(zhuǎn)工程中的相關(guān)數(shù)據(jù)。Request和Response對象則遙相呼應(yīng),實現(xiàn)頁面發(fā)出請求和服務(wù)器給出回應(yīng)過程中的數(shù)據(jù)的傳輸和重定向操作。
Servlet和JSP的自動裝載功能在運行階段是非常昂貴的。不必要的裝載會增加類裝載器的負(fù)擔(dān)而造成很差的性能。是以,可在服務(wù)器端關(guān)閉Servlet/JSP的自動裝載功能,以獲得更好的性能。
在JSP中使用Java程序片時,要注意以下幾條:首先,避免字符串連接。由于String對象是不可變對象,使用“+”操作符將會導(dǎo)致創(chuàng)建大量的臨時對象。使用“+”運算符操作字符串越多,產(chǎn)出的臨時對象就越多,這將占用存儲空間、影響性能。當(dāng)要連接字符串時,可使用StringBuffer替代“+”操作或充分利用Java提供的庫函數(shù)來優(yōu)化程序。例如,以下代碼比使用“+”操作時的代碼所創(chuàng)建的對象要少得多,因此執(zhí)行速度就會大大提高。
此外,盡可能使用靜態(tài)變量,只在對象作用范圍內(nèi)進行定義和初始化都是節(jié)約系統(tǒng)開銷的方法。
一個成熟的自主學(xué)習(xí)平臺的設(shè)計框架可以應(yīng)用在學(xué)校、政府機關(guān)和商業(yè)領(lǐng)域中。不論如何,平臺應(yīng)是服務(wù)于“用戶”這個對象的,針對不同的用戶群體,選擇平臺資源的類型,豐富資源的形式,以達到查詢、交流,共同學(xué)習(xí)的目的。
[1]周炎根,桑青松.國內(nèi)外自主學(xué)習(xí)理論研究綜述[J].安徽教育學(xué)院學(xué)報,2007,(1):100-104.
[2]殷明,趙培君.電子商務(wù)網(wǎng)站開發(fā)中Javascript技術(shù)的應(yīng)用研究[J].計算機光盤軟件與應(yīng)用,2013,(14):308-309.
[3]在jsp環(huán)境中配置使用 FCKEditor[EB/OL].(2006-10-13)[2014-03-20].http://homepage.yesky.com/253/2615753.shtml.
[4]牛國柱.用戶追蹤之基礎(chǔ)技術(shù)——Cookie[EB/OL].(2012-03-24)[2014-03-22].http://www.iamniu.com/2012/03/24/cookies/.
[5]Java性能的優(yōu)化[EB/OL].(2010-04-28)[2014-03-22].http://blog.csdn.net/kome2000/article/details/5537591.