繁体   English   中英

如何将哈希图值从Java文件传递到Javascript

[英]How to Pass the hashmap value from a java file to Javascript

我正在尝试使用Java File从数据库中检索值并将其存储到HashMap。 请找到以下代码(Sample.java):

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);}
}

}

请找到我从数据库检索到的以下数据:

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>

请让我知道如何进行操作,或者是否有人有其他示例。 请和我分享。 谢谢

  1. 您可以将地图转换为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.html转换为test.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.jsp projects变量中。 您可以像在jsp文件中的常规javascript对象一样使用它们。

您必须使Java代码可通过http访问。 有几种方法可以做到这一点。 您可以实现一个servlet,该servlet检索http请求并可以将数据作为httpresponse发送回去。 搜索有关Java Servlet的教程,例如http://www.tutorialspoint.com/servlets/servlets-first-example.htm

您还可以使用Java Rest服务来提供信息。 搜索java rest教程,例如http://www.vogella.com/tutorials/REST/article.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM