javaweb中对json的打包,发送与解析

1.开发包的准备

需要的开发包有:

 

链接:https://pan.baidu.com/s/13btzNadm0Cm3aeA-suhWzA 
提取码:q21t 

2.数据的模拟以及准备

在这里举一个简单的例子,前端需要得到数据库中的数据。

数据库:

实体类:

public class Food {
	private int id;
	private String name;
	private String phone;
	private String food;
	private String place;
	private java.util.Date date;
	private String state;
	
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getFood() {
		return food;
	}
	public void setFood(String food) {
		this.food = food;
	}
	public String getPlace() {
		return place;
	}
	public void setPlace(String place) {
		this.place = place;
	}
	public java.util.Date getDate() {
		return date;
	}
	public void setDate(java.util.Date date) {
		this.date = date;
	}
	
}

hibernate对数据源连接以及处理实体类与表的对应关系,这里的源代码省略。

3.json的应用

用hibernate的hql查询出数据装在list中,再转换成json发送。

import java.io.IOException;
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 org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.domain.Customer;
import com.domain.Food;
import com.service.CacheService;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * Servlet implementation class CustomerWaiting
 */
@WebServlet(name="/CustomerWaiting",urlPatterns= {"/WEB-UI/pages/CustomerWaiting"})
public class CustomerWaiting extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CustomerWaiting() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/xml;character=utf-8");
		
		CacheService cache=new CacheService();
		String name=cache.Getname();
	
		Configuration cf=new Configuration().configure("hibernate.cfg.xml");
		//2.创建SessionFactory,会话工厂
		SessionFactory sf=cf.buildSessionFactory();
		//创建会话session(与数据库交互)
		Session session=sf.openSession();
		//要求用事物提交
		Transaction transaction =session.beginTransaction();
		String hql="FROM Food food WHERE food.state like '%waiting%' AND name=?";
		
		List<Food>list = session.createQuery(hql).setString(0,name).list();
		
		try {

			//创建JsonArray对象,JSONArray则是[]包裹起来的一个数组(Array),此处调用方法将对象集合装入
			JSONArray json = JSONArray.fromObject(list);
			//JSONObject是一个{}包裹起来的一个对象(Object),此处希望以对象为单位进行操作,所以创建JSONObject对象
			JSONObject jb = new JSONObject();
			//将jsonArray对象装入
			jb.put("food", json);
			//输出Json数据,它就是一种特殊格式的字符串
			response.getWriter().write(jb.toString());
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
		transaction.commit();
		session.close();
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

前台对数据的处理,简单的陈列:

<script type="text/javascript">
	var xhttp = new XMLHttpRequest();
	xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        // Typical action to be performed when the document is ready:	
        //alert(xhttp.responseText);
        var note = xhttp.responseText;
        var div=document.getElementById("div");
        div.innerHTML=note;
    }
};
xhttp.open("GET", "CustomerWaiting", true);
xhttp.send();

</script>

前台通过解析json将数据插入列表

<script type="text/javascript">
	var xhttp = new XMLHttpRequest();
	xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        // Typical action to be performed when the document is ready:	
        //alert(xhttp.responseText);
        var note = JSON.parse(xhttp.responseText);
        for (var key in note) {
           for(var item in note[key]){
        	   var table = document.getElementById("FoodWait");
               var tr = table.insertRow(1);
               
        	   tr.insertCell(1).innerText = note[key][item].name;
        	   tr.insertCell(2).innerText = note[key][item].phone;
        	   tr.insertCell(3).innerText = note[key][item].place;
        	   tr.insertCell(4).innerText = note[key][item].food;
           } 
           
        }
       
    }
};
xhttp.open("GET", "CustomerWaiting", true);
xhttp.send();
</script>

4.效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值