《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于網(wǎng)格的電子投票系統(tǒng)
基于網(wǎng)格的電子投票系統(tǒng)
來源:微型機與應用2010年第15期
唐 珺,楊道杰
(山東中醫(yī)藥高等專科學校,,山東 煙臺 265200)
摘要: 利用網(wǎng)格,、JSP技術設計實現(xiàn)了一個禁止重復投票的電子投票系統(tǒng),。在網(wǎng)格環(huán)境中,針對該系統(tǒng)重點討論了JDBC連接MySql數(shù)據(jù)庫技術、Servlet技術和Cookie技術等,解決了基于MVC模式開發(fā)應用系統(tǒng)的一些難題,。同時,利用CA認證技術解決了基于網(wǎng)格的電子投票系統(tǒng)的安全性問題,。
關鍵詞: 網(wǎng)格 MVC CA
Abstract:
Key words :

摘  要: 利用網(wǎng)格,、JSP技術設計實現(xiàn)了一個禁止重復投票的電子投票系統(tǒng)。在網(wǎng)格環(huán)境中,,針對該系統(tǒng)重點討論了JDBC連接MySql數(shù)據(jù)庫技術,、Servlet技術和Cookie技術等,解決了基于MVC模式開發(fā)應用系統(tǒng)的一些難題,。同時,,利用CA認證技術解決了基于網(wǎng)格的電子投票系統(tǒng)的安全性問題。
關鍵詞: 網(wǎng)格,;MVC,;CA

    網(wǎng)格是利用互聯(lián)網(wǎng)把地理上廣泛分布的各種資源(計算資源,、存儲資源、軟件資源,、數(shù)據(jù)資源,、信息資源等)連成一個邏輯整體,,就像一臺超級計算機一樣,,為用戶提供一體化信息和應用服務,虛擬組織最終實現(xiàn)在這個虛擬環(huán)境下的資源共享和協(xié)同工作,,徹底消除資源“孤島”,,最充分地實現(xiàn)信息共享。
    本文借助成熟的JSP,、網(wǎng)格和CA等技術,,實現(xiàn)了網(wǎng)格環(huán)境中的學生電子投票系統(tǒng)。該系統(tǒng)通過學生對教師授課效果的投票來評價教師的教學質量,,以及教師受學生歡迎的程度,。系統(tǒng)在設計中遇到了如何實現(xiàn)禁止重復投票、怎樣處理投票結果,、如何解決安全性等問題,。通過解決這些問題,總結出使用Cookies可以解決禁止重復投票,,在同一個服務器中的JSP文件要共享一個Application對象等經(jīng)驗,,這對網(wǎng)格環(huán)境中JSP開發(fā)有較高的參考價值。該系統(tǒng)將用戶在線填寫的投票數(shù)據(jù)存儲在后臺MySql投票庫中,,通過實時地讀取數(shù)據(jù),,以可視化的結果實時展示給用戶。它與傳統(tǒng)投票方式相比,,具有高效率和低成本的優(yōu)點,,能夠快速準確地統(tǒng)計出投票結果。但是大部分網(wǎng)上投票系統(tǒng)一直都沒有解決投票的有效性和安全性問題,。因此,,本文給出了網(wǎng)格中該系統(tǒng)的安全性解決方案。
1 網(wǎng)格技術
    網(wǎng)格技術[1]利用互聯(lián)網(wǎng),,把分散在不同地理位置的計算機組織成一個虛擬的超級計算機,,其中每一臺參與計算的計算機就是一個節(jié)點,而整個計算是由成千上萬個節(jié)點組成的一張網(wǎng)格,,從而實現(xiàn)即插即用的效果,。簡單地講,它是把整個網(wǎng)絡整合成一臺巨大的超級計算機,,實現(xiàn)各種資源的全面共享,。網(wǎng)格具有如下特點[2]:
    (1)異構性,。網(wǎng)格環(huán)境由分布在廣域網(wǎng)上不同管理域的各種不同類型的計算資源組成,并且每類資源有各自不同的屬性,。
    (2)分布與共享,。分布是網(wǎng)格硬件在物理上的特征,而共享是在網(wǎng)格軟件支持下實現(xiàn)的邏輯特征,。
    (3)自相似性,。網(wǎng)格的局部和整體之間存在著一定的相似性。局部在許多方面具有全局的某些特征,,而全局的特征在局部中也有一定的體現(xiàn),。
    (4)動態(tài)多樣性。不僅網(wǎng)格環(huán)境下的一些資源本身具有動態(tài)性,,而在整個網(wǎng)格環(huán)境下,,隨著計算資源、數(shù)據(jù)資源不斷加入和撤銷,、故障等原因,,網(wǎng)格系統(tǒng)下的局部環(huán)境也在動態(tài)地改變著。在網(wǎng)格的設計與實現(xiàn)時,,必須考慮到新資源能夠很自然地加入到網(wǎng)格中,,與原來的資源融合在一起,共同發(fā)揮作用,。
    (5)自治性與管理的多重性,。網(wǎng)格環(huán)境下的局部資源既屬于個人或機構,由個人對資源作相應的管理和維護,,又要在網(wǎng)格系統(tǒng)作整體部署時,,由網(wǎng)格管理員根據(jù)系統(tǒng)任務情況統(tǒng)一調(diào)度網(wǎng)格環(huán)境下的資源。
2 數(shù)據(jù)庫連接技術JDBC
    Java中連接數(shù)據(jù)庫的技術之一是JDBC,,它是一種用于執(zhí)行SQL語句的Java API,,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成,。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標準的API,,據(jù)此可以構建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純Java API編寫數(shù)據(jù)庫應用程序,。
    通常在使用基于數(shù)據(jù)庫的Web應用時,,JDBC工作步驟為:(1)與數(shù)據(jù)庫建立連接;(2)進行SQL語句操作,,取出數(shù)據(jù),;(3)斷開數(shù)據(jù)庫連接。
    Connection con=DriverManager.getConnection(“url”),;
    Statement stmt=con.createStatement(),;
    ResultSet rs=stmt.executeQuery(“SELECT a,,b,c FROM Table1”),;
    while (rs.next()) {
    int x=rs.getInt(“a”),;
    String s=rs.getString(“b”);
    float f=rs.getFloat(“c”),;}
3 基于MVC模式的在線投票系統(tǒng)
    隨著互聯(lián)網(wǎng)的發(fā)展,,網(wǎng)上投票系統(tǒng)逐漸成為人們生活中的必不可少的一部分,如2008年奧運投票系統(tǒng),、網(wǎng)上流行的娛樂投票系統(tǒng)等,。各種各樣的投票系統(tǒng)日益發(fā)展,,充分調(diào)動了人們參與活動的積極性,。
3.1 MVC(Model-View-Controller)模式
    使用MVC模式(如圖1)設計Web應用程序非常有效。其結合了JSP和Servlet兩種技術,,Servlet可充當Controller的角色,,JSP可以充當View層的角色,即采用JSP顯示頁面內(nèi)容,,但它并不處理任何的業(yè)務邏輯,,而采用Servlet進行數(shù)據(jù)處理以生成動態(tài)內(nèi)容[3]。

    MVC模式具有更清晰的頁面表現(xiàn),、清楚的開發(fā)者角色劃分,,可以充分利用開發(fā)小組中的界面設計人員。同時,,增加了代碼的重用率,,使軟件的可維護性、可擴展性,、靈活性和封裝性大大提高,。
3.2 系統(tǒng)流程圖
    基于網(wǎng)格的電子投票系統(tǒng),設計非常直觀,,用戶很容易看出投票的情況,,并且只有合法用戶才能進行有效投票。該系統(tǒng)分為多個功能模塊,,主要有以下功能:用戶登錄,、校驗、增加新投票項目,、修改投票項目,、刪除投票項目、投票,、查看投票結果,、退出系統(tǒng),。本投票系統(tǒng)還具有防止重復投票的功能。系統(tǒng)流程圖如圖2,。

3.3 系統(tǒng)實現(xiàn)特色
    (1)JDBC連接數(shù)據(jù)庫技術
    在網(wǎng)格中實現(xiàn)該系統(tǒng),,如何操作數(shù)據(jù)庫是不可避免要遇到的問題,目前有多種數(shù)據(jù)庫連接技術,,如CGI技術,、WebAPI技術、RAD技術和JDBC技術等,。通過分析,,JDBC為所有數(shù)據(jù)庫管理系統(tǒng)提供一種標準接口,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,,簡單容易掌握,,速度快。所以,,選擇了通過JDBC連接數(shù)據(jù)庫和訪問數(shù)據(jù)庫,,執(zhí)行查詢和提取數(shù)據(jù)等操作,部分代碼如下:
    public JDBCConnect ( ) {
    try {Class.forName(url),;        //加載數(shù)據(jù)庫驅動程序
    conn=DriverManager.getConnection(url),;}     //建立連接
    catch (Exception e) {
    System.out.println (“JDBCConnect():”+e.getMessage());}}
    (2)禁止重復投票
    系統(tǒng)主要應用JSP的內(nèi)置對象Application,,與Session對象相比,,Application對象的含義更加廣泛。在使用Session對象時,,各個客戶端共享一個Session對象,;而使用Application對象時,在同一個服務器中的JSP文件共享一個Application對象,,除此之外,,可以使用Application對象的getServerInfo()方法來獲取JSP的版本信息和名稱。
    應用Cookie技術實現(xiàn)一個IP地址每周只能投一次票的功能,。通過request.getRemoteHost()方法取得客戶端的IP地址后,,將其存放在Cookie對象中,并且通過cookie.setMaxAge(60*60*24*7)的方法設置存儲時間,。通過Cookie[4]技術,,可以防止在某一段時間內(nèi)某個投票者重復使用同一IP地址重復投票。這種投票技術的特點是對重復投票得到了有效控制,,而且可以記錄投票者的IP地址,,并可間接確定用戶身份,因此該技術在網(wǎng)上被廣泛使用,。   
    注意,,此系統(tǒng)禁止重復投票,,一個IP地址每周只能投一次票,投票時,,系統(tǒng)自動記錄該主機IP地址,,當學生代表在本周第二次投票時,系統(tǒng)給出相關提示信息,。
實現(xiàn)投票的關鍵代碼如下:
    (1)使用JSP的內(nèi)置對象Application
    <% String id=request.getParameter(“id”),;
    if (id==null) {response.sendRedirect(“index.jsp”);}else {
    String sql=“update tb_voteOneTime set number=number+
    1 where id=′”+id+“′”,;
    connection.executeUpdate(sql),;
    connection.closeConnection();
    application.setAttribute(“id”,,id),;
    response.sendRedirect(“show.jsp”);}%>
    (2)應用Cookie實現(xiàn)一個IP地址每周只能投一次票的功能
    <jsp:useBean id=“connection” scope=“request” class=
    “com.dao.JDBConnection”/>
    <%@page import=“java.util.Date”%>
    <%String IP=request.getRemoteHost(),;
       Cookie [] cookies=request.getCookies(),;
       boolean flag=true,;
       for (int i=0,;i<cookies.length;i++) {
      if (IP.equals(cookies[i].getValue())) {flag=false,;}}
      if (flag){String id=request.getParameter(“id”),;
      String sqlVote=“update tb_VoteIP set number=number
      +1 where id=′”+id+“′”;
      connection.executeUpdate(sqlVote),;
      connection.closeConnection(),;
      Cookie cookie=new Cookie(“IP”,IP),;
      cookie.setMaxAge(60*60*24*7),;
      response.addCookie(cookie);
      response.sendRedirect(“show.jsp”),;
      } else{out.print(“<script language=′JavaScript′>
    alert(′一個IP地址每周只能投一次票′),;
    window.location.href=′index.jsp′;</script>”),;}%>
3.4 安全性解決方案
    一個安全實用的電子投票系統(tǒng)應該滿足如下標準[5]:
    (1)民主性,。只有合法的投票者才能投票,且只能在規(guī)定的時間段內(nèi)投票,。
    (2)準確性,。投票不能被中間機構或他人篡改、復制或刪除時不被發(fā)現(xiàn),;無效的選票可以被及時發(fā)現(xiàn)從而不會被計入最終的統(tǒng)計結果,。
    (3)秘密性,。選票的投出是匿名的,任何機構或個人不能確定投票者的投票內(nèi)容,,也不能確定選票的投票者,。
    (4)可證實性。投票者可以確定其投票被正確計算在最終結果中,。任何參與者或其他觀察監(jiān)督者都可以核實最終結果的正確性,。
    (5)公平性。最終統(tǒng)計結果公布前,,任何參與者都無法得知中間的選票統(tǒng)計信息,,因為中間的選票統(tǒng)計信息可能會影響投票者的投票意向。
    (6)簡單性,。投票者無需特別的設備和技術就可簡單快速地完成投票,;投票者無需到特別的地點進行投票;投票活動的組織進行應該簡單且效率高,。
    本系統(tǒng)采用CA認證技術有效解決了投票過程的安全性問題,。CA(Certificate Authority)[6]認證中心是指用于證明某一主體的身份以及合法性的權威認證機構,由社會公認的具有法律效力的權威機構組成,,或由某單位的權威部門組成,。由CA中心給用戶簽發(fā)認證證書,證書中包含用戶身份名稱和驗證密碼等信息,。投票中心存放投票數(shù)據(jù),,記錄投票結果。
    如果雙方主體都有證書,,而且都信任彼此的認證中心CA,,則雙方可相互明確彼此的身份,其采用的認證協(xié)議是SSL協(xié)議,。在相互認證可以進行之前,,雙方首先要相信彼此的認證中心。實現(xiàn)過程中,,要求雙方都有彼此認證中心自身的證書,,認證中心自身的證書中包含認證中心的公鑰。這樣才能確保雙方由認證中心簽署的證書具有合法性,。
    本文在網(wǎng)格環(huán)境中,,設計開發(fā)出了安全有效的電子投票系統(tǒng),給出了系統(tǒng)流程圖,,實現(xiàn)了實時性的跨Web服務器動態(tài)網(wǎng)頁的創(chuàng)建,。以JSP實現(xiàn)頁面顯示,JavaBean編寫數(shù)據(jù)庫連接,Servlet控制整個系統(tǒng)的流程,,從而實現(xiàn)用戶界面和數(shù)據(jù)庫之間良好的交互,,有效提高了系統(tǒng)的效率和性能?;贑A認證技術較好地解決了安全性問題,,保證了投票者的合法性、公正性,、真實性和有效性,。

參考文獻
[1] 都志輝,陳渝,,劉鵬.網(wǎng)格計算[M].北京:清華大學出版社,,2002.
[2] 桂小林.網(wǎng)格技術導論[M].北京:北京郵電大學出版社,2005.
[3] 謝長勇,,劉知貴,,鄭曉紅,等.基于模式2的JSP管理信息系統(tǒng)的設計與實現(xiàn)[J].計算機應用研究,,2006(7).
[4] 明日科技,,王國輝.JSP程序開發(fā)范例寶典[M].北京:人民郵電出版社,2007.
[5] 阮鷗,,陳卓.一種安全實用的電子投票協(xié)議[J].計算機安全,,2007,31(3).
[6] 戴怡,,楊庚.網(wǎng)格環(huán)境下多域間的認證機制研究[J].計算機工程與應用,,2007,43(5).
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載。