如何将json从java传递到javascript函数
Posted
技术标签:
【中文标题】如何将json从java传递到javascript函数【英文标题】:How to pass json from java to javascript function 【发布时间】:2017-11-10 04:17:32 【问题描述】:我从我的数据库中创建了一个 json 字符串,我想将它传递给我的 javascript 函数,并将其打印到一个 html 表中。我使用角度来轻松打印表格,但我不知道如何将数据从 java 发送到 javascript。 这些是我在 java 中尝试过的。
public void jsonRetr (String numeRepo) throws SQLException
String sql = "SELECT * FROM " + numeRepo;
PreparedStatement prStm = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = prStm.executeQuery(sql);
ArrayList<PersoaneJSON> persoane = new ArrayList<PersoaneJSON>();
while (rs.next())
String id = rs.getString("id");
String login_name = rs.getString("login_name");
String email = rs.getString("email");
String public_gits = rs.getString("public_gits");
String Html_profile = rs.getString("Html_profile");
String Avatar_URL = rs.getString("Avatar_URL");
PersoaneJSON persoana = new PersoaneJSON(id, login_name, email, public_gits, Html_profile, Avatar_URL);
persoane.add(persoana);
Gson gson = new Gson();
String json = gson.toJson(persoane);
这些是我在 javascript 中尝试过的。
var employeeApp = angular.module("EmployeeApp",[]);
employeeApp.controller("empCtrl",function($scope)
$scope.query =
$scope.queryBy = '$'
$scope.employees = [];
$scope.orderProp="name";
);
【问题讨论】:
到目前为止,您实际上并没有发送任何内容,但使用 Gson 进行格式化就足够了。 那么我该如何处理数据,这对我来说是个问题,因为我是初学者,我不知道如何开始@M.Prokhorov 【参考方案1】:我对你的代码做了一些修改(你可以应用你喜欢的任何东西)
public ArrayList<PersoaneJSON> jsonRetr (String numeRepo) throws SQLException
String sql = "SELECT * FROM " + numeRepo;
PreparedStatement prStm = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = prStm.executeQuery(sql);
ArrayList<PersoaneJSON> persoane = new ArrayList<PersoaneJSON>();
while (rs.next())
String id = rs.getString("id");
String login_name = rs.getString("login_name");
String email = rs.getString("email");
String public_gits = rs.getString("public_gits");
String Html_profile = rs.getString("Html_profile");
String Avatar_URL = rs.getString("Avatar_URL");
PersoaneJSON persoana = new PersoaneJSON(id, login_name, email, public_gits, Html_profile, Avatar_URL);
persoane.add(persoana);
return persoane;
这里是 Servlet doGet 方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
PrintWriter out = response.getWriter();
response.setContentType("application/json;charset=utf-8");
Gson gson = new Gson();
String json = gson.toJson(jsonRetr("xyz"));
out.write(json);
out.close();
使用 jquery 并按如下方式读取您的 json 对象
$.getJSON( "Action/Servlet", function( data )
console.log(JSON.parse(data));
);
【讨论】:
您也可以尝试java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm 将您的对象解析为json。【参考方案2】:您必须使用带有 WebMethod 的 Java Servlet,因此调用可以返回包含数据的 JSON 对象的方法。
示例 Java 代码:
ApplicationConfig.java
package example;
import java.util.Set;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application
@Override
public Set<Class<?>> getClasses()
Set<Class<?>> resources = new java.util.HashSet<>();
resources.add(QueryResource.class);
return resources;
QueryResource.java
package example;
@Path("query")
@Produces(MediaType.TEXT_PLAIN)
public class QueryResource
@GET
@Path("/employee")
public String jsonRetr() throws Exception
..
return json;
现在在 js 中,您可以在控制器内部创建一个函数来连接到 Servlet,将 $http 对象传递给控制器,如 $scope。
$http.get("http://localhost:8086/example/webresources/query/employee").success(function (data)
console.log(JSON.parse(data));
).error(function ()
console.error('error');
);
在您的 web.xml 中,您必须设置如下配置:
<servlet-mapping>
<servlet-name>RESTServlet</servlet-name>
<url-pattern>/webresources/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RESTServlet</servlet-name>
<servletclass>org.glassfish.jersey.servlet.ServletContainer</servletclass>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>example.ApplicationConfig</param-value>
</init-param>
</servlet>
你需要这些依赖:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.26-b01</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.26-b01</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency>
希望对你有帮助
【讨论】:
以上是关于如何将json从java传递到javascript函数的主要内容,如果未能解决你的问题,请参考以下文章
如何将 json 数据从 ruby 控制器传递到 javascript (Rails 6.1)?
java 我通过后台传递一个json数组到前台,如何从javascript中 获取到