这几天在学习json,在网上找了个例子,通过数据库查询信息,封装成json格式,展示在前台的表格上,我把例子中的代码复制下来,然后稍微改了下,结果是只能展示表格,数据却没法展示出来,不知原因出在什么地方。初学前端的东西,很多都不清楚,希望大家指教下谢谢。
网页上的结果:
代码如下:
//数据库操作代码
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class StudentDao {
private Connection con;
public StudentDao(){
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=pubs"; //连接服务器和数据库test
String userName = "sa"; //默认用户名
String userPwd ="940828"; //密码
try {
Class.forName(driverName);
con = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!");
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet query(String sql, Object... args) throws Exception {
PreparedStatement ps = con.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
return ps.executeQuery();
}
protected void finalize() throws Exception {
if (!con.isClosed() || con != null) {
con.close();
}
}
}
//Servlet代码
package control;
import java.io.IOException;
import java.io.PrintStream;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.StudentDao;
public class StudentServlet extends HttpServlet {
public StudentServlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintStream out = new PrintStream(response.getOutputStream());
response.setContentType("text/html;charSet=utf-8");
out.print("请正常打开此页");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuffer json = new StringBuffer();
json.append("[");
try {
StudentDao db = new StudentDao();
ResultSet rs = db.query("select * from Student");
while (rs.next()) {
json.append('{');
//注意每一个key-value对都要在引号之中,单引号或者双引号都可以
json.append("'id':").append("'").append(rs.getInt("id")).append("'").append(",");
json.append("'name':").append("'")
.append(rs.getString("name").trim()).append("'").append(",");
json.append("'tender':").append("'")
.append(rs.getString("tender").trim()).append("'");
json.append("},");
}
} catch (Exception e) {
e.printStackTrace();
}
//这是为了删除最后一次循环中出现的那个逗号
json.deleteCharAt(json.length() - 1);
json.append("]");
PrintStream out = new PrintStream(response.getOutputStream());
response.setContentType("text/html;charSet=utf-8");
//搞完把json打印在本Servlet上,之后前台页面读这页的内容就可以了
out.println(json.toString());
out.close();
}
}
//js代码
<!DOCTYPE html>
<html>
<head>
<title>StudentDemo.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script>
var req;
function ajaxSubmit() {
if (window.XMLHttpRequest)
{
req=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
req=new ActiveXObject("Microsoft.XMLHTTP") ;
}
if(req){
var url="http://localhost:8080/JavaWebDemo/StudentServlet";
req.open("GET",url, true);
req.setRequestHeader("Content-Type", "plain/text; charset=UTF-8");
req.onreadystatechange = function(data)
{
if( req.readyState == 4 && req.status == 200)
{
data = eval(data);
//构造前先清空源节点
document.getElementById("data").innerHTML = "";
//设置一个文件碎片
var frag = document.createDocumentFragment();
//这是表头
var tr = document.createElement("tr");
tr.innerHTML = "<td>id</td><td>username</td><td>number</td>";
frag.appendChild(tr);
//利用循环构造表格的每一行,把其放在文件碎片上面
for (var i = 0; i < data.length; i++) {
tr = document.createElement("tr");
tr.innerHTML = "<td>" + data[i].id + "</td>" + "<td>"
+ data[i].username + "</td>" + "<td>"
+ data[i].number + "</td>";
frag.appendChild(tr);
}
//此时文件碎片已经是一张表了,直接放网页就可以了
document.getElementById("data").appendChild(frag);
}
};
req.send(null);
}
}
</script>
</head>
<body>
<button onclick="ajaxSubmit()">查询</button>
<table border="1" id="data">
</table>
</body>
</html>
//配置文件
<servlet>
<servlet-name>MyControl</servlet-name>
<servlet-class>control.MyControl</servlet-class>
</servlet>
<servlet>
<servlet-name>StudentServlet</servlet-name>
<servlet-class>control.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyControl</servlet-name>
<url-pattern>/mycontrol</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>StudentServlet</servlet-name>
<url-pattern>/StudentServlet</url-pattern>
</servlet-mapping>