查询的数据经json包装,从后台发往ajax
工具&&实体:
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
final static String DRIVER="oracle.jdbc.driver.OracleDriver";
final static String URL="jdbc:oracle:thin:@localhost:1521:orcl";
final static String UNAME="scott";
final static String UPASS="tiger";
static Connection connection=null;
public static Connection getConnect(){
// 加载驱动
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 链接数据库
try {
connection = DriverManager.getConnection(URL,UNAME,UPASS);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
// public static void main(String[] args) {
// getConnect();
// System.out.println("2222");
// }
}
package entity;
public class A1 {
int sno ;
String name;
String clas;
int age;
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClas() {
return clas;
}
public void setClas(String clas) {
this.clas = clas;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
一、使用json-lib
index_JsonLib.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript">
var xmlhttp;
function getJsonData() {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (!xmlhttp) {
alert("不能创建XMLHttpRequest对象实例");
return false;
}
xmlhttp.open("get", "JsonLib", true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = processReuqest;
}
//★★★★★★★★ 查询结果有多个 ★★★★★★★★
//方式1
function processReuqest() {
clearTable();
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var jsonObj = eval(xmlhttp.responseText);
//等价于
//var jsonObj = eval('('+xmlhttp.responseText+')');
//var jsonObj = eval("("+xmlhttp.responseText+")");
// var jsonObj = JSON.parse(xmlhttp.responseText);
if (jsonObj.length > 0) {
var tNode = document.getElementById("table");
//内部浏览器不支持以下
tNode.innerHTML += "<tr><th>学号</th><th>姓名</th><th>班级</th><th>年龄</th></tr>";
for (var i = 0; i < jsonObj.length; i++) {
tNode.innerHTML += "<tr><td>" + jsonObj[i].sno + "</td><td>" + jsonObj[i].name + "</td><td>"+ jsonObj[i].clas +"</td><td>" + jsonObj[i].age +"</td></tr>";
}
} else {
alert("没有数据");
}
}
}
}
//方式2 、方式3
/* function processReuqest() {
clearTable();
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var jsonObj = eval("("+xmlhttp.responseText+")");
//等价于
//var jsonObj = eval('('+xmlhttp.responseText+')');
//var jsonObj = JSON.parse(xmlhttp.responseText);
if (jsonObj.data.length > 0) {
var tNode = document.getElementById("table");
tNode.innerHTML += "<tr><th>学号</th><th>姓名</th><th>班级</th><th>年龄</th></tr>";
for (var i = 0; i < jsonObj.data.length; i++) {
tNode.innerHTML += "<tr><td>" + jsonObj.data[i].sno + "</td><td>" + jsonObj.data[i].name + "</td><td>"+ jsonObj.data[i].clas +"</td><td>" + jsonObj.data[i].age +"</td></tr>";
}
} else {
alert("没有数据");
}
}
}
} */
//★★★★★★★★ 查询结果仅一个 ★★★★★★★★
//方式1
/* function processReuqest() {
clearTable();
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var jsonObj = eval(xmlhttp.responseText);
if (jsonObj.length > 0) {
var tNode = document.getElementById("table");
//内部浏览器不支持以下
tNode.innerHTML += "<tr><th>学号</th><th>姓名</th><th>班级</th><th>年龄</th></tr>";
for (var i = 0; i < jsonObj.length; i++) {
tNode.innerHTML += "<tr><td>" + jsonObj[i].sno + "</td><td>" + jsonObj[i].name + "</td><td>"+ jsonObj[i].clas +"</td><td>" + jsonObj[i].age +"</td></tr>";
}
} else {
alert("没有数据");
}
}
}
} */
//方式2
/* function processReuqest() {
clearTable();
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var jsonObj = eval("("+xmlhttp.responseText+")");
if (jsonObj.data != null) {
var tNode = document.getElementById("table");
tNode.innerHTML += "<tr><th>学号</th><th>姓名</th><th>班级</th><th>年龄</th></tr>";
tNode.innerHTML += "<tr><td>" + jsonObj.data.sno + "</td><td>" + jsonObj.data.name + "</td><td>"+ jsonObj.data.clas +"</td><td>" + jsonObj.data.age +"</td></tr>";
}else {
alert("没有数据");
}
}
}
} */
//清空表
function clearTable(){
var tNode = document.getElementById("table");
var childNodes =tNode.childNodes;
for(var i=childNodes.length-1;i>=0;i--){
tNode.removeChild(childNodes[i]);
}
}
</script>
</head>
<body>
<p>json-lib: 查询结果用jsonAPI处理为jsonString来响应。ajax接收并转为jsonObject,供js使用。</p><hr>
<table id="table" width="300" border="1"></table>
<input type="button" value="getjsonData" οnblur="getJsonData()">
</body>
</html>
JsonLibServlet:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
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 net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import db.DBConnection;
import entity.A1;
@WebServlet("/JsonLib")
public class JsonLibServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
Connection conn = DBConnection.getConnect();
Statement statement = null;
ResultSet result = null;
System.out.println("json-lib............");
//★★★★★★★★ 查询结果有多个 ★★★★★★★★
try {
statement = conn.createStatement();
result = statement.executeQuery("select * from a1");
} catch (SQLException e) {
e.printStackTrace();
}
List<A1> list = new ArrayList<A1>();
try {
while (result.next()){
A1 a1 = new A1();
a1.setSno(result.getInt(1));
a1.setName(result.getString(2));
a1.setClas(result.getString(3));
a1.setAge(result.getInt(4));
list.add(a1);
}
} catch (SQLException e) {
e.printStackTrace();
}
/* 方式1: JSONArray.fromObject(Object object) 返回 JSONArray, 即json数组类型 */
JSONArray jsonArray = JSONArray.fromObject(list);
out.print(jsonArray);
System.out.println(jsonArray);
// [{"age":20,"clas":"二年级","name":"gg","sno":2},
// {"age":30,"clas":"三年级","name":"a","sno":3},
// {"age":40,"clas":"四年级","name":"简介iii","sno":4}]
//-----------------------------------------------------------------
/* 方式2: JSONObject.put(Object key, Object value) 返回Object对象类型*/
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("data", list);
// out.print(jsonObject);
// System.out.println(jsonObject);
// {"data":[{"age":20,"clas":"二年级","name":"gg","sno":2},
// {"age":30,"clas":"三年级","name":"a","sno":3},
// {"age":40,"clas":"四年级","name":"简介iii","sno":4}]
// }
//-----------------------------------------------------------------
/* 方式3: 使用 JSONArray 和 JSONObject */
// JSONArray jsonArray = JSONArray.fromObject(list);
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("data", jsonArray);
// out.print(jsonObject);
// System.out.println(jsonObject); //结果同上
//★★★★★★★★ 查询结果仅一个 ★★★★★★★★
// try {
// statement = conn.createStatement();
// result = statement.executeQuery("select * from a1 where 学号 =2");
// } catch (SQLException e) {
// e.printStackTrace();
// }
//
// A1 a1 = new A1();
// try {
// while (result.next()){
// a1.setSno(result.getInt(1));
// a1.setName(result.getString(2));
// a1.setClas(result.getString(3));
// a1.setAge(result.getInt(4));
// }
// } catch (SQLException e) {
// e.printStackTrace();
// }
// 方式1
// JSONArray jsonArray = JSONArray.fromObject(a1);
// out.print(jsonArray);
// System.out.println(jsonArray); // [{"age":20,"clas":"二年级","name":"gg","sno":2}]
//-----------------------------------------------------------------
// 方式2
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("data", a1);
// out.print(jsonObject);
// System.out.println(jsonObject); // {"data":{"age":20,"clas":"二年级","name":"gg","sno":2}}
}
}
二、使用fastjson
index_FastJson.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript">
var xmlhttp;
function getJsonData() {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (!xmlhttp) {
alert("不能创建XMLHttpRequest对象实例");
return false;
}
xmlhttp.open("get", "FastJson", true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = processReuqest;
}
//★★★★★★★★ 查询结果有多个 ★★★★★★★★
/* function processReuqest() {
clearTable();
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var jsonObj = eval(xmlhttp.responseText);
//等价于
//var jsonObj = eval('('+xmlhttp.responseText+')');
//var jsonObj = eval("("+xmlhttp.responseText+")");
// var jsonObj = JSON.parse(xmlhttp.responseText);
if (jsonObj.length > 0) {
var tNode = document.getElementById("table");
//内部浏览器不支持以下
tNode.innerHTML += "<tr><th>学号</th><th>姓名</th><th>班级</th><th>年龄</th></tr>";
for (var i = 0; i < jsonObj.length; i++) {
tNode.innerHTML += "<tr><td>" + jsonObj[i].sno + "</td><td>" + jsonObj[i].name + "</td><td>"+ jsonObj[i].clas +"</td><td>" + jsonObj[i].age +"</td></tr>";
}
} else {
alert("没有数据");
}
}
}
} */
//★★★★★★★★ 查询结果仅一个 ★★★★★★★★
function processReuqest() {
clearTable();
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var jsonObj = eval("("+xmlhttp.responseText+")");
if (jsonObj.data != null) {
var tNode = document.getElementById("table");
tNode.innerHTML += "<tr><th>学号</th><th>姓名</th><th>班级</th><th>年龄</th></tr>";
tNode.innerHTML += "<tr><td>" + jsonObj.data.sno + "</td><td>" + jsonObj.data.name + "</td><td>"+ jsonObj.data.clas +"</td><td>" + jsonObj.data.age +"</td></tr>";
}else {
alert("没有数据");
}
}
}
}
//清空表
function clearTable(){
var tNode = document.getElementById("table");
var childNodes =tNode.childNodes;
for(var i=childNodes.length-1;i>=0;i--){
tNode.removeChild(childNodes[i]);
}
}
</script>
</head>
<body>
<p>fastjson: 查询结果用jsonAPI处理为jsonString来响应。ajax接收并转为jsonObject,供js使用。</p><hr>
<table id="table" width="300" border="1"></table>
<input type="button" value="getjsonData" οnblur="getJsonData()">
</body>
</html>
FastJsonServlet:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
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 com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import db.DBConnection;
import entity.A1;
@WebServlet("/FastJson")
public class FastJsonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
Connection conn = DBConnection.getConnect();
Statement statement = null;
ResultSet result = null;
System.out.println("fastjson...........");
//★★★★★★★★ 查询结果有多个 ★★★★★★★★
// try {
// statement = conn.createStatement();
// result = statement.executeQuery("select * from a1");
// } catch (SQLException e) {
// e.printStackTrace();
// }
//
// List<A1> list = new ArrayList<A1>();
// try {
// while (result.next()){
// A1 a1 = new A1();
// a1.setSno(result.getInt(1));
// a1.setName(result.getString(2));
// a1.setClas(result.getString(3));
// a1.setAge(result.getInt(4));
// list.add(a1);
// }
// } catch (SQLException e) {
// e.printStackTrace();
// }
/*
* static String toJSONString(Object object)
* static String toJSONString(Object object, boolean prettyFormat)
* ... ...
*/
// String jsonString = JSON.toJSONString(list,true);
// out.print(jsonString);
// System.out.println(jsonString);
//★★★★★★★★ 查询结果仅一个 ★★★★★★★★
try {
statement = conn.createStatement();
result = statement.executeQuery("select * from a1 where 学号 =2");
} catch (SQLException e) {
e.printStackTrace();
}
A1 a1 = new A1();
try {
while (result.next()){
a1.setSno(result.getInt(1));
a1.setName(result.getString(2));
a1.setClas(result.getString(3));
a1.setAge(result.getInt(4));
}
} catch (SQLException e) {
e.printStackTrace();
}
String jsonString = JSON.toJSONString(a1,true);
JSONObject jsonObject = new JSONObject();
// jsonObject.put("data", JSON.parseObject(jsonString));
jsonObject.put("data", JSON.parseObject(jsonString, A1.class));
out.print(jsonObject);
System.out.println(jsonString);
}
}