目录
4. 向前台页面输入封装,建一个ResponseUtil封装工具类;
前面我们把界面写好了。现在开始取数据;
1. dao层,取具体数据;
这里面主要包括分页显示列表的方法以及计算总记录数的方法;
package com.java.dao;
import com.java.util.PageBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class GradeDao {
//分页显示
public ResultSet gradeList(Connection con, PageBean pageBean)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_grade");
if(pageBean!=null){
sb.append(" limit "+pageBean.getStart()+","+pageBean.getRows());
}
PreparedStatement pstmt=con.prepareStatement(sb.toString());
return pstmt.executeQuery();
}
//获取总记录数
public int gradeCount(Connection con) throws Exception{
String sql="select count(*) as total from t_grade";
PreparedStatement pstmt=con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
return rs.getInt("total");
} else{
return 0;
}
}
}
2. 封装JsonUtil,引入Json包;
这里要将数据封装成Json格式的,因此写一个JsonUtil工具类;
首先要引入一些Json包;
package com.java.util;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class JsonUtil {
/**
* 返回的是一个JsonArray,将ResultSet改成JsonArray形式的,也就是字符串
* @param rs
* @return
* @throws Exception
*/
public static JSONArray formatRsToJsonArray(ResultSet rs)throws Exception{
//获取纵向内容
ResultSetMetaData md=rs.getMetaData();
//得到纵列数
int num=md.getColumnCount();
JSONArray array=new JSONArray();
while(rs.next()){
JSONObject mapOfColValues=new JSONObject();
for(int i=1;i<=num;i++){
//纵向封装,封装键值对
mapOfColValues.put(md.getColumnName(i), rs.getObject(i));
}
array.add(mapOfColValues);
}
return array;
}
}
3. web层,来封装获取数据;
这里主要是对前台的数据进行一个封装,包括PageBean封装,JsonArray以及result封装等;
package com.java.web;
import com.java.dao.GradeDao;
import com.java.util.DbUtil;
import com.java.util.JsonUtil;
import com.java.util.PageBean;
import com.java.util.ResponseUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
public class GradeListServlet extends HttpServlet {
private DbUtil dbUtil=new DbUtil();
private GradeDao gradeDao=new GradeDao();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String page=request.getParameter("page");
String rows=request.getParameter("rows");
PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
Connection con=null;
try {
con=dbUtil.getCon();
JSONObject result=new JSONObject();
JSONArray jsonArray=JsonUtil.formatRsToJsonArray(gradeDao.gradeList(con,pageBean));
//获取总记录数
int total=gradeDao.gradeCount(con);
//返回每页大小以及总记录数
result.put("rows",jsonArray);
result.put("total",total);
//向页面传送数据
ResponseUtil.write(response,result);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
dbUtil.closeCon(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
4. 向前台页面输入封装,建一个ResponseUtil封装工具类;
这里主要是向前台传入数据,我们稍加封装一个格式问题;
package com.java.util;
import net.sf.json.JSONObject;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
public class ResponseUtil {
//向页面输入数据
public static void write(HttpServletResponse response, JSONObject jsonObject)throws Exception{
//消息格式
response.setContentType("text/html;charset=utf-8");
//io流
PrintWriter out=response.getWriter();
//向页面输送
out.println(jsonObject.toString());
out.flush();
out.close();
}
}
效果如下: