查询的数据经json包装,从后台发往ajax

查询的数据经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); 
	
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值