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>