2016-09-02 69 views
0

我想從使用Java文件的DataBase中檢索值並將其存儲到HashMap中。請找到下面的代碼(Sample.java):如何將哈希映射值從Java文件傳遞到Javascript

import java.sql.*; 
import java.util.HashMap; 

public class Sample { 

static Connection conn; 
static PreparedStatement stmt; 
static ResultSet rs; 
String sql; 
static String project="Project1"; 
public static HashMap< String, String> map = new HashMap< String, String>(); 
public static void main(String[] args) { 

    try{ 

     Class.forName("com.mysql.jdbc.Driver"); 
     conn=DriverManager.getConnection("jdbc:mysql://localhost:3309/graphvalue","root","root"); 
     stmt=conn.prepareStatement("select * from TestCase where ProjectName= ?"); 
     stmt.setString(1,project); 
     rs=stmt.executeQuery(); 
     while(rs.next()) 
     { 
      System.out.println(rs.getString(1)+" "+rs.getInt(2)+" "+rs.getInt(3)+" "+rs.getInt(4)+" "+rs.getInt(5)); 
     map.put("ProjectName", rs.getString(1)); 
     map.put("Total TestCase", String.valueOf(rs.getInt(2))); 
     map.put("TestCase Executed", String.valueOf(rs.getInt(3))); 
     map.put("Failed TestCase", String.valueOf(rs.getInt(4))); 
     map.put("TestCase Not Executed", String.valueOf(rs.getInt(5))); 
     System.out.println("ProjectName "+map.get("ProjectName")); 

     } 
     conn.close(); 
     } 
    catch(Exception e) 
     { System.out.println(e);} 
} 

} 

請找到下面的數據,我從DATABSE檢索:

ProjectName TotalTestCase TestCaseExecuted TestCaseFailed TestCaseNotExecuted  
Project1  50    30    8    20 

我想通過這個值Javascript和讓我我能夠使用這些值繪製圖表。請從下面(test.html中)我的HTML/Javascript代碼:

<html> 
<head> 
</head> 
<body> 
<select id="ChartType" name="ChartType" onchange="drawChart()"> 
<option value = "PieChart">Select Chart Type 
<option value="PieChart">PieChart 
<option value="Histogram">Histogram 
<option value="LineChart">LineChart 
<option value="BarChart">BarChart 
</select> 
<div id="chart_div" style="border: solid 2px #000000;"></div> 
<p id="demo"></p> 
<p id="demo1"></p> 

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 

<script type="text/javascript"> 
var row = []; 
var temp; 
var stri; 
google.load('visualization', '1.0', {'packages':['corechart']}); 
google.setOnLoadCallback(getValues); 
    function getValues() { 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     stri = xmlhttp.responseText; 
      drawChart(); 
     } 
    }; 
    xmlhttp.open("GET", "sample.java", true); 
    xmlhttp.send(); 
    } 

    function drawChart() { 
    var data = new google.visualization.DataTable(); 
    str = stri.split(","); 

     // How to call the value from java file so that I will be able to draw the below graph by passing the value. 

    data.addRows(row); 
    var a = document.getElementById("ChartType").value; 
    document.getElementById("demo1").innerHTML = "You selected: " + a; 
    var options = {'title':'How Much Pizza I Ate Last Night', 
        'width':400, 
        'height':300 
        }; 
    var chart = new google.visualization[document.getElementById("ChartType").value](document.getElementById('chart_div')); 
    chart.draw(data, options); 
    } 
</script> 
</body> 
</html> 

請讓我知道如何處理,或者如果任何人有任何其他的例子。請與我分享。謝謝

回答

2
  1. 你可以convert your map to JSON。相反,這 的HelloWorld類的,你可以將其轉換成返回此`JSON

    import java.sql.*; 
    import java.util.HashMap; 
    
    public class Sample { 
        static Connection conn; 
        static PreparedStatement stmt; 
        static ResultSet rs; 
        String sql; 
        static String project = "Project1"; 
        public static HashMap < String, String > map = new HashMap < String, String >(); 
    
        //Notice how your main class is now converted into a service 
        public static String getProjects() { 
    
         try { 
    
          Class.forName("com.mysql.jdbc.Driver"); 
          conn = DriverManager.getConnection("jdbc:mysql://localhost:3309/graphvalue", "root", "root"); 
          stmt = conn.prepareStatement("select * from TestCase where ProjectName= ?"); 
          stmt.setString(1, project); 
          rs = stmt.executeQuery(); 
          while (rs.next()) { 
           System.out.println(rs.getString(1) + " " + rs.getInt(2) + " " + rs.getInt(3) + " " + rs.getInt(4) + " " + 
            rs.getInt(5)); 
           map.put("ProjectName", rs.getString(1)); 
           map.put("Total TestCase", String.valueOf(rs.getInt(2))); 
           map.put("TestCase Executed", String.valueOf(rs.getInt(3))); 
           map.put("Failed TestCase", String.valueOf(rs.getInt(4))); 
           map.put("TestCase Not Executed", String.valueOf(rs.getInt(5))); 
           System.out.println("ProjectName " + map.get("ProjectName")); 
    
           /*______________ NEW CODE ______________*/ 
           JSONObject resultMap = new JSONObject(map); 
           return resultMap.toString(); 
          } 
    
         } catch (Exception e) { 
          System.out.println(e); 
         } finally { 
          conn.close(); 
         } 
         return ""; 
        } 
    
    } 
    
  2. 現在轉換您的test.htmltest.jsp並調用我們在前面的步驟和輸出已經創建了服務 服務由此產生的JSON 成爲一個JavaScript變量。

    test.jsp的

    <%@page import="com.path.to.Sample"%> 
    <html> 
        <head> 
         <script> 
          <!-- call that service and output that json into a javascript variable --> 
          var resultantJSON = <%= Sample.getProjects() %> 
    
          <!-- Now all that's left is to parse that json --> 
          var projects = JSON.parse(resultantJSON); 
    
         </script> 
        </head> 
        <body> 
         ... 
         ... 
        </body> 
    </html> 
    

    現在所有的結果,從您的數據庫中提取是在Test.jspprojects變量。您可以在您的jsp文件中使用它們,如傳統的javascript對象。