生活随笔
收集整理的這篇文章主要介紹了
基于JSP技术进行信息交互的研究与应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首頁 | 最新欄目 | 關于我們 | 讀者園地 | 聯系我們
? 基于JSP技術進行信息交互的研究與應用 ? ??? 摘 ?要 ?從信息交互的方式著手,結合開發項目中遇到的實際問題,本文總體上將JSP動態網頁上信息交互分三種情況說明和探究,即信息在同一頁面中、兩個不同頁面之間或多個不同頁面之間的動態交互,分別給出不同的解決方法和對應實例。 ??? 關鍵詞 ? 交互;內置對象;JSP ? 1 引言 ??? 隨著網絡技術和教育信息化的飛速發展,用戶對Web頁面的需求也不斷提高,且網頁上的信息日趨豐富,網頁間信息交互性越來越頻繁;動態Web頁面的內容是基于用戶的請求或系統的狀態所產生的動態頁面。生成動態頁面需要一定的技巧,其關鍵在于處理好頁面間信息的交互,以達到信息共享的目的。本文結合實際開發的“航空公司機務維修預警專家系統”項目,對JSP應用中的信息交互技術進行了深入探討。 1.1 JSP技術及優點 ??? JSP技術是用JAVA語言作為腳本語言的,JSP網頁為整個服務器端的JAVA庫單元提供了一個接口來服務于HTTP的應用程序, 是基于JAVA 、Servlet以及整個JAVA體系的Web開發技術。與其它傳統動態網頁語言相比,JSP主要有以下一些優點[1,2] : ??? ① 所有的應用都是基于服務器的,所以它們可以時刻保持最新版本; ??? ② 分離了應用程序的邏輯和頁面顯示,用戶界面的更新很快; ??? ③ 可擴展的標簽技術,且組件方式更方便; ??? ④ JSP的效率和安全性更高,簡化了開發基于Web的交互式應用程序的過程。 1.2? JSP動態網頁間的信息交互 ??? 基于JSP的動態信息發布技術是一個開放的、可擴展的建立動態Web頁面的標準。不論采用什么創建工具,開發人員都可以使用JSP頁面來創建可移植的Web應用,在不同的Web應用服務器上運行[3,4] ,這都有利于信息的交互。 ??? 在具體的交互過程中,相關網頁的變化遵循消息驅動模型,即通過信息不斷地在信息載體之間交互,相互通告各自的變化;根據信息傳遞及動態網頁相對關系的不同,將動態網頁上信息交互分為三種情況:① 同一頁面中進行信息的交互;② 兩個不同頁面之間進行的信息交互;③ 多個頁面之間進行的信息交互。 2 動態網頁間信息的交互技術 2.1 同一頁面中進行信息交互 ??? 在同一頁面內,首先會借助腳本全局變量可以實現信息在JSP同頁面程序內信息共享與元素間的交互,但實際應用中經常會遇到從動態頁面鏈接到本頁或者從本頁響應不同事件等操作,以下給出解決方法和對應的實例。 ??? 方法:借助瀏覽器的內部對象系統和JavaScript腳本實現本頁面內不同Web元素之間的信息交互。 ??? 實例:以開發的“航空公司機務維修差錯預警專家系統”中的“維修差錯預控”子模塊進行差錯誘因分析為例,差錯誘因分析頁面analyze.jsp,其實際界面如圖1所示。
圖1 ??? 在本頁進行信息交互時主要涉及兩個方面,一是選擇有或無事件差錯名稱時本頁相應表格中立即顯示出事件類型、差錯第一和第二類型以及差錯的誘因信息;二是出現多個差錯相關的誘因,專家分析并選定下面的誘因后,怎樣識別專家到底選擇哪幾個誘因。 ??? 解決方案:當點擊選擇“有事件差錯名稱”下拉按鈕時,結合JavaScript腳本,將響應chg type()事件,主要代碼是: ??? var events_name= document.frm.events_name.value; ??? location.href ='analyze.jsp?events_name='+events_name; ??? 通過選擇將有事件差錯名稱(events_name)的值傳遞到本頁(analyze.jsp),以便本頁后面腳本讀取,并從數據庫中調出與該事件名稱相應的第一、二差錯類型和需要分析的誘因信息。另外,當分析選擇不同誘因時,要知道有多少個誘因被選中的情況下,同樣是響應choice()事件,主要代碼是 ??? var I= document.frm.I.value;??? I=I+1; ??? var events_name= document.frm.events_name.value; ??? location.href='analyze.jsp?events_name='+events_name+ '&I='+I; ??? 當選擇一個誘因時,相應I值就要加1,這里I用的是在動態頁面的表單中用到隱藏式的頁面控件,讓處理頁面知道本次分析有多少個誘因引起相應的差錯。 ??? 總之,這兩個看似不同的功能的操作,所使用的卻是同樣的方法,給合JavaScript腳本來響應相應的事件,達到本頁信息交互的目的。 2.2 兩個不同頁面之間進行信息交互 ??? 方法一:表單的ACTION屬性將參數及其值提交到目的網頁,發出請求后,借助request的方法獲取參數名稱及其值;提交的信息僅在請求頁和響應頁中有效。 ??? 實例:以“維修差錯預控”子模塊進行不安全事件信息錄入為例,用戶輸入發生事件的原始信息,提交后在處理頁面中將其存儲到知識庫中,這是兩頁面之間進行信息交互最常見的問題。 ??? 解決方案:在events.jsp(不安全事件信息錄入頁面)中提供錄入信息界面,讓一般用戶輸入發生事件的原始信息,提交后傳送到events_deal.jsp(不安全事件處理頁面)頁面,獲取提交的信息后并存儲到數據庫中。 ??? 錄入頁面events.jsp中主要代碼: ??? <form method="post"? action="events_deal.jsp" > ??? 事件名稱:<input type="text" name="events_name" >* ??? 事件發生主要地點:<input type="text" name="events_place" > * ………… ??? </form> ??? 處理頁面events_deal.jsp中主要代碼: ??? String? events_name=check.toChinese(request.getParameter("events_name")); ??? String events_place=check.toChinese(request.getParameter("events_place")); ??? 總之,該方法主要是在提交頁面輸入信息,在處理頁面通過request的方法獲取參數名稱及其值,然后對這個進行加工處理,從而到達在兩個頁面進行信息交互的目的。?? ??? 方法二:在JSP網頁中訪問Bean,使用JSP標簽把結果顯示為動態內容。JavaBeans是一種基于Java的軟件組件,通過封裝業務邏輯建立一整套可重復利用的對象庫。JavaBeans組件用來執行復雜的計算任務、負責與數據庫的交互或數據提取等功能;Bean有作用范圍:單一頁面、一次請求、會話,或整個應用程序;在此將Scope屬性置為Request 域,實現兩個不同頁面間交互信息。 ??? 實例:專家系統在進行知識庫管理時,存在子模塊“差錯規則管理”,其主要功能是進行差錯規則知識庫的管理。在進行新規則錄入時,涉及的錄入信息比較多和相關的安全性因素,用JavaBeans方式比較好。圖2是新規則錄入界面(ruleInput.jsp)。
圖2 ??? 解決方案:以交互“差錯第一類型”值為例進行說明, ruleInput.jsp將提交前臺信息,然后由處理頁面ruleInput_deal.jsp通過JavaBean獲取數據信息后再進行處理。提交過程中獲取數據的ModDB.java的主要代碼為: private String condition1=""; public void setCondition1(String condition1){this.condition1 =condition1; } public String getCondition1(){return condition1; }????????? ??? 在新規則錄入處理頁面ruleInput_deal.jsp中引用: <jsp:useBean class="model.ModDB" id="ModDb" scope= "request"> <jsp:setProperty name="ModDb" property="*"/> </jsp:useBean> <jsp:useBean>動作指令的作用是定義生成和使用Bean的環境,給合<jsp:setProperty>,通??? 過頁面輸入的所有值來匹配Bean的屬性,設置scope范圍屬性為request,直到執行完轉向另一頁面文件為止。在處理頁面中獲取所提交值的主要代碼: ??? String condition1=ModDb.getCondition1(); //ModDb為Bean的標識名; ??? 總之,以上方法是通過前臺頁面提交信息,處理頁面用JavaBeans處理,達到兩不同頁面間信息交互的作用。 2.3 多個頁面之間進行的信息交互 ??? 方法一:當客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間反復連接,反復刷新一個頁面。借助內置對象會話,會話為不同的用戶保存不同的數據信息,在一次連接中始終有效的信息放在會話對象中保存。在網頁中直接使用隱含的會話變量,通過會話的兩種方法分別設置和獲得請求所在的會話。 ??? 實例:在開發“航空公司機務維修預警專家系統”過程中,出現這樣的問題,各種頁面中可能要顯示用戶的用戶名和相應的身份,這是在多個頁面中信息交互和共享的問題。 ??? 解決方案:當用戶在主頁(index.jsp)中經校驗登錄到系統中后,在Index_deal.jsp(主登錄處理頁面)中設置會話信息: ??? session.setAttribute("user_name",user_name); //用戶名 ??? session.setAttribute("work_card",work_card); //以工作卡號代表用戶密碼 ??? 在其它需要顯示登錄用戶名與身份的網頁中: ??? 用戶名:<%=session.getAttribute("user_name")%> //讀取數據,以便顯示不同身份的用戶 ??? 總之,session變量可用于保存當前用戶的當前會話,該變量可設定在整個會話期間使用,從而實現一次會話相關的多頁面間的信息交互,這為后面不同模塊中驗證用戶身份提供了方便。因為太多session很消耗服務器資源,應盡量少用。 ??? 方法二:application內置對象封裝了Web應用中的所有Servlet JSP頁面、html頁面和其它資源的集合屬性,使用該對象進行參數存取和信息交互。它與會話不同的是所有用戶的對象都是一個。 實例:在專家系統中,有三種不同用戶(系統管理員,一般用戶,機務維修專家),不同的用戶完成系統中不同的功能模塊,例如一般用戶進行各種差錯信息錄入、查詢差錯、等,機務維修專家進行知識庫進行管理;在不同的用戶不同時間登錄后,要對訪問網站的各種用戶進行計數統計。 ??? 解決方法:application內置對象是存放代表當前計數值的理想場所,通過該對象的setAttribute()和getAttribute()方法提供了存取對象中變量的功能。主要代碼如下: Long counter =new Long(0); application.setAttribuite(“counter”,counter); counter=(Long) application.getAttribute(“counter”);//在不同頁面內顯示的訪問數 ??? 總之,借助內置對象application保存與服務器連接的所有客戶端共享的數據信息,在servlet程序中調用config的getServletContext()方法可獲取隱含的application對象的一個同步拷貝使用,達到在同一服務器上的多頁面間的信息交互,當然,存取application對象中的屬性必須考慮訪問沖突,與該內置對象相聯系的是ServletContext類,因為它實現的是應用程序級別的數據交互,所以設計應考慮其功耗問題。 3 結束語 ??? 以上所提到的實現方法和技巧是結合開發“航空公司機務維修預警專家系統”項目實踐的總結,具有一定的實用價值和參考價值。從三個方面對信息交互方式進行了分類和探討,同一頁面中可借助瀏覽器的內部對象系統實現本頁面內不同Web元素之間的信息交互;兩個頁面之間可用表單的ACTION屬性將參數及其值提交到目的網頁、或在JSP網頁中直接訪問Bean再使用JSP標簽把結果顯示為動態內容;多頁面之間信息交互可根據不同需求使用相應的內置對象。在開發其它基于B/S結構的各種應用程序時,這些方法不是孤立的使用,根據各種項目的實際需要進行靈活運用和擴展。 參考文獻 [1] 王國輝、李文立、楊亮. JSP數據庫系統開發完全手冊. 北京:人民郵電出版社, 2006 [2] 馬斗、邱哲、王俊標. 專家門診——JSP開發答疑.北京: 人民郵電出版社,2005 [3] 阮家棟、陳美雅. Web 數據庫技術. 北京:科學出版社, 2002 [4] 汪曉平,俞俊,李功.精通Java網絡編程[M]. 北京:清華大學出版社,2005 國家自然基金項目:民航災害預警機理與方法研究,批準號:70371034 ???? ??? 作者簡介: 胡啟實,男,碩士研究生在讀,就讀于武漢理工大學計算機科學與技術學院,研究方向:計算機智能技術;高曙,女,研究生導師,研究方向:計算機網絡與分布式處理,人工智能與AGENT技術,智能信息處理。
?
?
版權所有 ? 2005 《計算機與信息技術》編輯部 地址: 安徽省合肥市屯溪路306號金安大廈安徽省經濟和信息化委員會信息安全協調處 互聯網信息服務(ICP)備案編號: 皖ICP備10000534號 網絡實名: 計算機與信息技術
總結
以上是生活随笔 為你收集整理的基于JSP技术进行信息交互的研究与应用 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。