在 移動/複製頁( moveorcopypageaction )中,主要用到序列化技術( 即深複製 ),將頁面進行複製或移動。在同乙個調查之間是頁面的移動,不同的調查之間是複製頁面。序列化是對物件而言,而不是類,將不需要序列化的字段用 transient 宣告,需要序列化的類需要實現 serializable 介面。在移動/複製頁面列表介面,列出所有調查以及調查所對的頁面,然後每個頁面都有「之前」和「之後」的鏈結,表示放到這個頁面之前還是之後。在移動頁面時,根據pos的值判斷是「之前」還是「之後」,然後重新設定各頁面的排序順序。在複製頁面時,由於在不同的調查之間,因此要強行初始化頁面上的問題集合,避免懶載入讓複製後的頁面上沒有問題。serializable deeplycopy(serializable src) 方法主要利用物件的輸入和輸出流將物件進行寫操作。複製過後,要注意保持頁面和目標調查的關聯關係。
在圖表輸出( chartoutputaction ) 中,主要通過struts2 整合 jfreechart ,將回答問題的人數、某個選項選擇的人數等統計結果用 餅圖、柱狀圖、折線圖等圖表樣式進行展示。主要運用了 jfreechart 的渲染效果。在struts2中,這個處理圖表輸出的方法必須命名為 getchart(),這個方法必須 return chart,在 struts.xml 檔案中,標籤的 type 屬性必須為 chart,即可將圖表輸出。
在收集調查( collectionsurveyaction ) 中,主要運用 poi 技術的 hssf*** 格式對資料 進行 excel 展示,第一行顯示各問題的標題,下面分別是各問題的答案,最後,先將 hssfworkbook 以 bytearrayoutputstream 流的形式寫出,然後以bytearrayinputstream(baos.tobytearray()) 的形式返回,
處理這個過程的方法名為
inputstream get***(),
在 struts.xml 檔案中,標籤的type屬性設定為「 stream」,如下:
***1024
在許可權管理中( rightaction )中,許可權的計算方法在前面已經詳細講過,這裡不再贅述。為每個鏈結的 url 新增許可權的過程為:在 catchurlinterceptor ***中,得到 actionproxy **物件得到 action的名稱和命名空間,得到每個action的url ( 類似於 surveyaction_newsurvey 這種樣式),為沒有賦權的url追加許可權。這裡只是將許可權賦給了各個action的url。
在角色管理( roleaction )中,主要負責將 許可權賦給角色,這裡面維護了角色所擁有的許可權的id陣列以及角色沒有的許可權的集合。主要運用了sql語句的 in 和 not in 查詢角色擁有和沒有的許可權,然後呼叫角色的setrights 方法,為角色賦權。
在使用者賦權( userauthorizeaction )中,主要負責將角色賦給使用者,這裡主要維護使用者擁有的角色的id陣列和使用者沒有的角色的集合。主要運用了sql語句的 in 和 not in 查詢使用者擁有和沒有的角色,然後呼叫使用者的setroles 方法,為使用者賦予角色。
在日誌管理( logaction )中,利用 aop 的環繞通知機制,新建了乙個logger類,這個類是個切面,負責為需要加日誌的方法執行前後都加上日誌記錄,考慮到日誌的記錄非常多,因此又引入了分表的技術,將每個月的日誌記錄分別對應到不同月的日誌表中。這裡利用了spring的任務排程機制,建立石英任務,定時生成日誌表。我對這一點還不太了解,因此還要去進一步學習裡面的技術,有興趣的同學可以自己去看。
------------------------------
這是我做的第乙個ssh框架整合的案例,雖然勉強敲完了大部分**,但是有很多地方都沒能真正的理解,比如用到的排程機制,還有頁面的處理技巧、各種控制項的命名技巧、頁面和後台action 之間的資料傳遞等,我都還比較模糊,這次只是大致的了解了ssh框架的強大功能,包括struts2的***機制、hibernate的懶載入處理機制、spring的***機制,都還要深入的去了解和掌握,我以前只是系統的學了這些框架的大致用法,真正做乙個整合案例的時候,感到無從下手,這次也進一步加深了對sql語句查詢的認識,接觸到了子查詢、聚合查詢、外鏈、查詢排序、用現有的表去建立其他字段相同的表(like 關鍵字)等sql語句的用法,也總結了不少有用的知識,希望在今後的學習中,能夠熟練的去掌握這些技術。比如知道了在struts2的modeldriven***之前會先執行prepare***,因此可以在prepare***
方法中先加入一些處理的邏輯等。知道了在struts.xml 檔案中可以配置上傳檔案的大小、副檔名、檔案型別等引數,能夠讓modeldriven 重新整理棧頂 model( modeldriven.refreshmodelbeforeresult 這個屬性 ) ,知道了解決懶載入異常可以使用spring 的 opensessioninviewfilter(只要在渲染頁面的時候就開啟 session),知道了struts2 標籤中可以呼叫後台action中的函式,如
PHP學習 案例練習(二)
訂單 定義陣列,儲存訂貨單中商品資訊 goods array array name 主機板 price 379 producing 廣東 num 3 array name 顯示卡 price 799 producing 上海 num 2 array name 硬碟 price 589 produci...
SSH框架整合的學習總結
各個配置檔案 1.配置好資料庫連線需要的bean org.hibernate.dialect.mysqldialect true true update thread 注意一定要導好jar包,同時要對應好所使用的jar包中的類 這個org.springframework.orm.hibernate3...
ExtJS學習 MVC模式案例(二)
veiwport代表整個瀏覽器顯示區域,該物件渲染到頁面的body區域,並會隨著瀏覽器顯示區域的大小自動改變,乙個頁面中只能有乙個viewport 例項。下面我們在view資料夾中建立viewport.js檔案,然後新增如下 1ext.define demo.view.viewport 26 在vi...