樊潔馨
(寧強縣氣象局,陜西寧強 724400)
?
基于J2EE自動站數(shù)據(jù)查詢系統(tǒng)設計與實現(xiàn)
樊潔馨
(寧強縣氣象局,陜西寧強724400)
摘要:基于J2EE開發(fā)技術和現(xiàn)有數(shù)據(jù)庫環(huán)境,采用MVC(Model-View-Controller)設計模式,開發(fā)自動站數(shù)據(jù)查詢系統(tǒng),實現(xiàn)了以網(wǎng)頁方式為用戶提供漢中市各縣區(qū)溫度、降水量數(shù)據(jù)查詢及圖形顯示等功能。
關鍵詞:自動站數(shù)據(jù); J2EE;自動站數(shù)據(jù)查詢
自動站數(shù)據(jù)查詢業(yè)務系統(tǒng)在基層氣象工作中占有重要地位,不僅能及時有效地為工作人員提供自動站觀測業(yè)務信息,還可以為開展氣象服務提供高效的數(shù)據(jù)保障。根據(jù)J2EE技術特點,設計開發(fā)了適合市縣使用的自動站數(shù)據(jù)查詢系統(tǒng),該系統(tǒng)操作便捷,數(shù)據(jù)顯示直觀,且易于維護和功能擴展。本文介紹系統(tǒng)的研發(fā)思路及所用到的開發(fā)技術,供相關技術人員參考。
1開發(fā)語言及工具
J2EE(Java 2 Platform,Enterprise Edition)是一個為大企業(yè)主機級的計算類型而設計的Java平臺,它簡化了應用程序的開發(fā),具有可伸縮性、靈活性、易維護等優(yōu)點;Eclipse 是一個開放源代碼的基于Java的可擴展開發(fā)平臺,它為編程開發(fā)提供了一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境;MyEclipse是一個用于開發(fā)J2EE的插件集合,其功能強大,支持廣泛。
2軟件運行環(huán)境
服務器端軟件環(huán)境為JDK8、Tomcat6.0;數(shù)據(jù)庫為SQLServer2008;客戶端軟件環(huán)境為IE8.0以上;支持環(huán)境為windowsXP/Windows 7/Windows 8。
3系統(tǒng)主要功能
實現(xiàn)任意時段內(nèi)自動站小時平均氣溫、最高(最低)氣溫及出現(xiàn)時間、降水量等要素記錄查詢;統(tǒng)計該時段內(nèi)平均溫度、最高(低)氣溫、總降水量;顯示并輸出該時段內(nèi)溫度變化曲線圖和降水量柱狀圖。
4具體實現(xiàn)
4.1主頁功能
在index.jsp頁面,主要進行查詢時段、臺站范圍、查詢要素選擇,運用JSP、JavaScript將所選信息提交至ZDZServlet.java頁面處理。
(1) index.jsp頁面嵌套技術
運用JSP頁面嵌套方式,將查詢信息選擇頁面left.jsp嵌套至主頁index.jsp頁面中。index.jsp頁面不進行業(yè)務邏輯處理,而將處理程序放置于left.jsp頁面,減少了index.jsp頁面的代碼量,并提高了代碼的利用率與可移植性。
實現(xiàn)方式:
(2) left.jsp數(shù)據(jù)提交及時間插件使用技術
查詢信息選擇頁面left.jsp,運用HTML語言編寫,使用“form”表單中“post”方法提交數(shù)據(jù)至ZDZServlet.java,用于下一步數(shù)據(jù)處理。為方便、直觀地選擇所要查詢的時間范圍,“時間”選項使用“My97DatePicker”日歷插件來實現(xiàn)。將“My97DatePicker”文件導入至工程中,然后使用標簽將其引入,并根據(jù)該插件所提供的方法,按需求進行調(diào)用。
實現(xiàn)方式:
4.2數(shù)據(jù)庫查詢
以查詢?nèi)恳貫槔?,運用ConnDB.java、ZDZDataBean.java、ZDZDataBO.java、right.jsp、 ZDZServlet.java來進行數(shù)據(jù)處理。ConnDB.java主要進行數(shù)據(jù)庫鏈接;ZDZDataBean.java主要進行對所需要查詢元素get、set方法的封裝;ZDZDataBO.java主要進行數(shù)據(jù)庫查詢;ZDZServlet.java主要進行數(shù)據(jù)的處理與傳遞;right.jsp主要進行查詢結果的顯示。
(1) ConnDB.java連接數(shù)據(jù)庫技術。ConnDB.java用于數(shù)據(jù)庫的鏈接,在編寫該方法前,應在本工程中導入與SQL數(shù)據(jù)庫相關的sqljdbc4.jar包。
(2)ZDZDataBean.java技術。ZDZDataBean. java封裝所要調(diào)取元素的get、set方法,使其他類可以調(diào)用(設置和獲取)該方法。
(3) ZDZDataBO.java數(shù)據(jù)查詢技術。ZDZDataBO.java用于數(shù)據(jù)庫查詢,實現(xiàn)根據(jù)時間范圍與區(qū)站號進行數(shù)據(jù)記錄數(shù)(即數(shù)據(jù)顯示頁碼數(shù)量)的統(tǒng)計、平均溫度、最高(低)溫度、總降水量的統(tǒng)計和查詢結果的分頁顯示。
實現(xiàn)方式:
①根據(jù)所給出的時間范圍與區(qū)站號查詢得到數(shù)據(jù)記錄總條數(shù),按照系統(tǒng)設置的每頁顯示記錄條數(shù)計算出顯示的頁數(shù)。
select count(*) from tabtimedata where ObservTimes between ’"+timesta+"’and ’"+timeend+"’and StationNum=’"+stationnum+"’
if(rs.next()){
rowCount=rs.getInt(1);
}if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
其中,stationnum為區(qū)站號,timesta為開始時間值,timeend為結束時間值,pageSize為每頁顯示數(shù)據(jù)條數(shù),rowCount為紀錄總條數(shù),pageCount為頁數(shù),tabtimedata 為數(shù)據(jù)庫名,ObservTimes、StationNum分別為數(shù)據(jù)庫中觀測時間字段名以及區(qū)站號字段名。
②根據(jù)所給出的時間范圍與區(qū)站號查詢出當前頁碼下的全部數(shù)據(jù)。
select top "+pageSize+" * from tabtimedata where ObservTimes between ’"+timesta+"’and ’"+timeend+"’and StationNum=’"+stationnum+"’ and ObservTimes not in (select top " +""+pageSize*(pageNow-1)+" ObservTimes from tabtimedata where ObservTimes between ’"+timesta+"’and ’"+timeend+"’and StationNum=’"+stationnum+"’Order By ObservTimes ) Order By ObservTimes
其中,pageNow為當前頁碼值,且pageNow≥1。
③根據(jù)所給出的時間范圍與區(qū)站號分別查詢統(tǒng)計出該時間范圍內(nèi)的平均溫度、最高(低)溫度、總降水量。以平均溫度統(tǒng)計為例,查詢語句如下:
select avg(convert(float,DryBulTemp)) from tabtimedata where ObservTimes between ’"+timesta+"’and ’"+timeend+"’and StationNum=’"+stationnum+"’
其中DryBulTemp為數(shù)據(jù)庫中溫度字段名。
(4)ZDZServlet.java中要素值查詢、處理技術。ZDZServlet.java用于網(wǎng)頁參數(shù)的接收、處理,并將處理過的數(shù)據(jù)返回到所要顯示的頁面。
實現(xiàn)方法:
public class ZDZServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.接收網(wǎng)頁傳遞過來的數(shù)據(jù)
String stationnum=request.getParameter("stationnum");
String date1=request.getParameter("date1");
String date2=request.getParameter("date2");
//2.調(diào)用ZDZDataBO.java中方法查詢數(shù)據(jù)并處理
ZDZDateBO zbo=new ZDZDateBO();
double temp=zbo.getZDZAVGTEMP(stationnum, time1, time2);
String avgtemp=String.valueOf(temp);
//3.將處理后的數(shù)據(jù)再傳遞回網(wǎng)頁
request.setAttribute("avgtemp", avgtemp);
request.getRequestDispatcher("right.jsp").forward(request, response);}
}
(5)right.jsp中顯示統(tǒng)計值技術。right.jsp將ZDZServlet.java 所傳遞過來的值接收并進行格式化處理,然后通過表格的方式顯示出結果。
實現(xiàn)方法:
<%float avgtemp=Float.parseFloat((String)request.getAttribute("avgtemp"));
float temp2=(float)(Math.round(avgtemp))/10;%>
4.3要素分頁顯示
以查詢?nèi)恳貫槔?,運用right.jsp、ZDZServlet.java、ZDZDataBO.java來實現(xiàn)。right.jsp頁面主要用于參數(shù)的傳遞與顯示,ZDZServlet.java主要用于參數(shù)的傳遞與處理,ZDZDataBO.java主要進行頁面總數(shù)的查詢計算以及數(shù)據(jù)的分頁查詢。
(1) right.jsp中分頁技術。right.jsp頁面中運用超鏈接的方式進行參數(shù)的傳遞,若當前頁面不為第一頁時,可顯示上一頁,當前頁面不為最后一頁時,顯示下一頁,頁碼值通過調(diào)用ZDZDataBO.java中的方法計算出頁碼總數(shù),并通過for循環(huán)來輸出顯示。
(2)ZDZServlet.java中分頁技術。ZDZServlet. java通過調(diào)用ZDZDataBO.java中的方法來進行分頁查詢,并將結果傳遞至right.jsp頁面進行顯示。
4.4要素圖形顯示
將查詢到的數(shù)據(jù),通過插件提供的方法轉換為圖形,并顯示輸出。圖形顯示應用了“ChartDirector”插件,需在編寫程序前導入ChartDirector.jar包與該插件提供的getchart.jsp文件,并配置web.xml文件。
以溫度變化曲線圖為例,運用tempmap.jsp、ZDZServlet.java、ZDZDataBO.java來實現(xiàn)。tempmap.jsp主要進行數(shù)據(jù)處理和圖像顯示,ZDZServlet.java、 ZDZDataBO.java主要用于數(shù)據(jù)查詢和結果傳遞。
tempmap.jsp圖形顯示技術的實現(xiàn)方法:
<%//1.將查詢到的數(shù)據(jù)進行處理
ArrayList al = (ArrayList) request.getAttribute("infos");
double temp=0;
double[] data0= new double[al.size()];
String timex;
String[] labels=new String[al.size()];
for(int j=0;j ZDZDataBean zb=(ZDZDataBean)al.get鄭馳,唐萱,劉元珺. 觀測資料實時備份的實現(xiàn)[J].陜西氣象,2016(2):41-42. (j); temp=zb.getDRYBULTEMP(); timex=zb.getOBSERVTIMES().substring(6,10); //2.將處理后的數(shù)據(jù)寫入到插件提供的數(shù)組中 data0[j] = Math.round(temp)/10.0; labels[j]= timex; }%> //3.顯示圖形 usemap="#map1" border="0"> 5結語 該系統(tǒng)經(jīng)在業(yè)務中試用,運行正常、穩(wěn)定,能基本滿足基層臺站業(yè)務人員對溫度、降水等常規(guī)氣象資料的日常訪問要求,提高了自動站數(shù)據(jù)應用能力。隨著業(yè)務的進一步發(fā)展和服務需要的進一步提升,將對系統(tǒng)內(nèi)容和功能做更深入地完善。 參考文獻: [1]武延軍,黃飛躍.精通JSP編程技術[M].北京:人民郵電出版社,2001. [2]陳海山.深入Java Servlet網(wǎng)絡編程[M].北京:清華大學出版社,2002. [3]Phil Hanna.JSP技術大全[M].北京:機械工業(yè)出版社, 2002. [4]Karl Moss.Java Servlet開發(fā)人員指南[M].北京:清華大學出版社,2002. 中圖分類號:TP311.52 文獻標識碼:B 基金項目:陜西省氣象局科技成果應用與推廣項目(多普勒雷達PUPC運行監(jiān)控系統(tǒng)推廣(2014T-8)) 作者簡介:樊潔馨(1990—),女,漢族,陜西漢中人,助工,學士,主要從事縣級綜合業(yè)務。 收稿日期:2015-10-13 文章編號:1006-4354(2016)02-0038-04