ajax 对分页进行改造
StudentDaoImpl
package sim.dao.StudentDaoImpl;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import sim.dao.StudentDao;
import sim.entity.Student;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;
public class StudentDaoImpl implements StudentDao {
private DataSource ds = new ComboPooledDataSource();
private QueryRunner qr = new QueryRunner(ds); // 必有的两句
@Override
public List<Student> selectAll(Integer currentPageNo, Integer pageSize) {
List<Student> studentList = null;
try {
String sql ="select * from user limit ?,?";
Object[] objects={(currentPageNo-1)*pageSize,pageSize}; //页面数量,页面大小
studentList = qr.query(sql,new BeanListHandler<Student>(Student.class),objects); //很多地方少写了 r currentPageNo
} catch (SQLException e) {
e.printStackTrace();
}
return studentList;
}
@Override
public Integer selectCount() {
Long count = null;
try {
String sql ="select count(1) from user"; //把 Long 写成 long
count = (Long) qr.query(sql,new ScalarHandler()); //总页数
} catch (SQLException e) {
e.printStackTrace();
}
return Integer.parseInt(count+"");
}
@Override
public int deleteById(int uid) {
int num = 0;
try {
String sql ="delete from user where uid = ? ";
num = qr.update(sql,uid);
} catch (SQLException e) {
e.printStackTrace();
}
return num;
}
}
dao
import sim.Utils.PageUtils;
import sim.entity.Student;
import java.util.List;
public interface StudentDao {
//查询出当前页的集合
List<Student> selectAll(Integer curentPageNo, Integer pageSize); //一个u
//查询总记录数
Integer selectCount();
int deleteById(int uid);
}
StudentServiceImpl
package sim.service.StudentServiceImpl;
import sim.Utils.PageUtils;
import sim.dao.StudentDao;
import sim.dao.StudentDaoImpl.StudentDaoImpl;
import sim.entity.Student;
import sim.service.StudentService;
import java.util.List;
public class StudentServiceImpl implements StudentService {
private StudentDao studentDao = new StudentDaoImpl(); //必有的实例
@Override
public List<Student> selectAll(Integer currentPageNo, Integer pageSize) { //
return studentDao.selectAll(currentPageNo,pageSize);
}
@Override
public Integer selectCount() {
return studentDao.selectCount();
}
@Override
public PageUtils<Student> getPageUtils(String currentPageNoStr, String pageSizeStr) {
//让页面不出现无数据的页面
Integer pageSize = null;
if (pageSizeStr == null || pageSizeStr == "") {
pageSize = 2;
} else {
pageSize = Integer.parseInt(pageSizeStr);
}
Integer totalPageSize=selectCount() % pageSize ==0 ?selectCount() / pageSize :selectCount() / pageSize+1;
//对当前页进行非null判断
//定义一个当前页的变量
Integer currentPageNo = null;
if (currentPageNoStr == null || currentPageNoStr == "") {
currentPageNo = 1; //页数为零,则赋值为1
} else {
currentPageNo = Integer.parseInt(currentPageNoStr);
if (currentPageNo<=0){
currentPageNo=1;
}
if (currentPageNo>=totalPageSize){
currentPageNo=totalPageSize;
}
}
//实例化工具类对象(让jsp页面可以调用对象)
PageUtils<Student> pageUtils = new PageUtils<Student>();
pageUtils.setCurrentPageNo(currentPageNo);
pageUtils.setPageSize(pageSize);
pageUtils.setTotalPageCount(selectCount());
pageUtils.setTotalPageSize(totalPageSize);
pageUtils.setList(selectAll(currentPageNo,pageSize));
return pageUtils;
}
@Override
public int deleteById(int uid) {
return studentDao.deleteById(uid);
}
}
service
package sim.service;
import sim.Utils.PageUtils;
import sim.entity.Student;
import java.util.List;
public interface StudentService {
//查询出当前页的集合
List<Student> selectAll(Integer currentPageNo, Integer pageSize);
//查询总记录数
Integer selectCount();
//获取分页工具类对象
PageUtils<Student> getPageUtils(String currentPageNoStr, String pageSizeStr);
int deleteById(int uid);
}
servlet
package sim.servlet;
import com.alibaba.fastjson.JSON;
import sim.Utils.PageUtils;
import sim.entity.Student;
import sim.service.StudentService;
import sim.service.StudentServiceImpl.StudentServiceImpl;
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 java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
@WebServlet(name = "studentServlet" ,urlPatterns = "/studentServlet")
public class StudentServlet extends HttpServlet {
private StudentService studentService; //一定有的一句
@Override
public void init() throws ServletException {
studentService = new StudentServiceImpl(); //一定有的一句
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求 与响应的编码格式
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
//获取到标记
String flag = req.getParameter("flag");
if ("deleteById".equals(flag)){
//获取前端传递的id
String uidStr = req.getParameter("uid");
//调用service
int num = studentService.deleteById(Integer.parseInt(uidStr));
//定义一个标记来记录是否删除成功
boolean deleteFlag = false;
if(num>0){
deleteFlag = true;
out.print(deleteFlag);
}else{
out.print(deleteFlag);
}
}else {
//获取前端传递参数
String pageSizeStr = req.getParameter("pageSize");
String currentPageNoStr = req.getParameter("currentPageNo");
//调用service 方法
PageUtils<Student> pageUtils = studentService.getPageUtils(currentPageNoStr, pageSizeStr);
//把对象转化为json
String json = JSON.toJSONString(pageUtils);
out.print(json);
out.close();
req.setAttribute("pageUtils", pageUtils); //把工具类存入到作用域中
req.getRequestDispatcher("index.jsp").forward(req, resp); //转发到首页
}
}
}
index1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>ajax 对分页进行改造</title>
<script src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>
</head>
<body>
<table border="1" width="700px" align="center" id="tv_table"> <%--绑定表格--%>
</table>
<div style="margin-left: 320px" id="tv_div"> <%--绑定类型--%>
</div>
<script>
//用于发送ajax请求
function showInfo(currentPageNo) {
$.ajax({
"url":"${pageContext.request.contextPath}/studentServlet",
"type":"post",
"data":{"currentPageNo":currentPageNo},
"dataType":"text",
"success":callBack,
"error":function () {
alert("请求失败")
}
})
}
//调用这个方法
showInfo(1);
function callBack(data) {
$("#tv_table").html("<tr><td>编号</td><td>名字</td><td>年龄</td></tr>")
$("#tv_div").html("");
//转换成前端支持的json格式
var json = JSON.parse(data);
var jsonList =json.list;
//转换成jquery 对象
var $jsonList = $(jsonList);
$jsonList.each(function () {
var temp = "<tr>";
temp+="<td>"+this.uid+"</td>";
temp+="<td>"+this.uname+"</td>";
temp+="<td>"+this.uage+"</td>";
temp+="<td><a href='javaScript:void(0)' onclick='deleteInFo("+this.uid+")'>删除</a></td>";
temp+="</tr>";
//把节点追加表格中
$("#tv_table").append(temp)
});
//#拼接首页 上一页 下一页 末页
//href='javaScript:void(0)' 表示禁用本身的事件 使用 onclick 事件
var testData = "<a href='javaScript:void(0)' onclick='showInfo(1)'>首页</a>";
testData += "<a href='javaScript:void(0)' onclick='showInfo("+( json.currentPageNo-1)+")'>上一页"+"</a>";
testData += "<a href='javaScript:void(0)' onclick='showInfo(" + (json.currentPageNo + 1) + ")'>下一页" + "</a>";
testData += "<a href='javaScript:void(0)' onclick='showInfo(" + (json.totalPageSize) + ")'>末页" + "</a>"; /* 一个" 被写成 ' 导致错误*/
testData += "<span>共" + json.totalPageSize + "页</span>"
testData += "<span>" + json.currentPageNo + "/" + json.totalPageSize + "</span>"
$("#tv_div").append(testData);
}
//删除的方法
function deleteInFo(uid) {
//发送ajax请求
$.ajax({
"url":"${pageContext.request.contextPath}/studentServlet",
"type":"post",
"data":{"flag":"deleteById","uid":uid},
"dataType":"text",
"success":callBack2,
"error":function () {
alert("请求失败")
}
})
}
function callBack2(data) {
if (data=="true"){ //弹框的形式展示结果
alert("请求成功");
showInfo(1)
}else {
alert("请求失败")
}
}
</script>
</body>
</html>
结果展示:
分页成功
删除成功