我有一个名为javaservlet的netbeans Web应用程序。这个项目包有一个servlet databaseconnection.java.here我从数据库表 employee 检索了6行,其中有3列 eid,ename,esalary < / strong>并将其显示为json值 在“http://localhost:8084/javaservlet/databaseconnection”url.Now我想在kendo grid中显示所有6行数据。在WEB-INF文件夹中的index.html页面中,我试图从url读取json数据。但它不是working.i在kendo ui网格和三个字符串字段中添加了三个标题 EmployeeSalary,EmployeeName,EmployeeId 。当我运行的文件只显示数据库表只有一行但表有多个时的值行kendo没有显示任何数据..为什么会发生这种情况。请帮助我解决问题。我的代码是 databaseconnection.java
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.*;
@WebServlet(urlPatterns = {"/databaseconnection"})
public class databaseconnection extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
PrintWriter out = response.getWriter();
Connection connection = null;
Statement stmt = null;
JSONArray jArray = new JSONArray();
JSONObject jobj = new JSONObject();
try {
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "postgres", "root");
stmt = connection.createStatement();
// String sql = "INSERT INTO employee (eid,ename,esalary) " + "VALUES (7, 'Nadia', 35000)";
// stmt.executeUpdate(sql);
ResultSet result = stmt.executeQuery("Select eid,ename,esalary from employee");
while (result.next()) {
String eid = result.getString("eid");
String ename = result.getString("ename");
String esalary = result.getString("esalary");
jobj.put("eid", eid);
jobj.put("ename", ename);
jobj.put("esalary", esalary);
out.print(jobj);
out.flush();
// jArray.put(jobj);
// System.out.print(jobj);
}
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
return;
} catch (ClassNotFoundException ex) {
Logger.getLogger(databaseconnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:1)
请将jsonobject添加到while loop.ex中的jsonarray中。
while (result.next()) {
String type_json = result.getString("eid");
String name_json = result.getString("ename");
String id_json = result.getString("esalary");
jobj.put("eid", type_json);
jobj.put("ename", name_json);
jobj.put("esalary", id_json);
**jArray.add(jobj);**
}
答案 1 :(得分:1)
Sara5,我认为你应该声明Json类的数组对象,如下所示
JSONArray allArray = new JSONArray();
然后
while (result.next()) {
String type_json = result.getString("eid");
String name_json = result.getString("ename");
String id_json = result.getString("esalary");
jobj.put("eid", type_json);
jobj.put("ename", name_json);
jobj.put("esalary", id_json);
allArray.add(jobj);
}
然后在此之后,我们创建一个默认的JSON对象来包含所有数组和JSON对象的数量,如下所示
JSONObject myObj = new JSONObject();
myObj.put("success", true);
myObj.put("data", allArray); // all JSON objects
myObj.put("total", total);// total number of JSON objects
response.setContentType("application/json");// don't forget this
PrintWriter writer = response.getWriter();
writer.println(myObj.toString());
答案 2 :(得分:0)
请尝试使用以下库 JSON-LIB-2.2.2-jdk15 commons-lang 2.5 commons-beanutils 1.8.0 公共收藏品3.2.1 公共记录1.1.1 ezmorph 1.0.6
像这样更改你的代码.. response.setContentType(&#34;应用/ JSON&#34);
while (result.next()) {
String type_json = result.getString("eid");
String name_json = result.getString("ename");
String id_json = result.getString("esalary");
jobj.put("eid", type_json);
jobj.put("ename", name_json);
jobj.put("esalary", id_json);
**jArray.add(jobj);**
}
String output = jArray.toString();
PrintWriter writer = response.getWriter();
writer.write(output);`enter code here`
writer.close();
return "success";
上面的代码片段会将json输出写入相应的jsp,其前进是&#34;成功&#34;。