下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据:
eg:请假管理系统
要求如下:
一、打开首页页面, 访问查询请假记录的 servlet , 将查询结果在列表页面进行分页展并按照请假时同升序排序。整个页面的标题需要加粗加大显示,请假记录列表要求使用式实现对表头文字加粗显示, 超链接 (包括 “ 删除” 和 “ 添加请假记录” 两个) 无下划线且 ’添加请假记录“字体为红色, 并实现信息列表隔行变色显示, 程序运行界面下:
点击 “添加请假记录“ 进入添加请假记录页面;如下图所示:
点击”提交“按钮提交表单时.要求使用‘jQuery对页面输入项进行验证.验证内包括姓名,请假shij、 请假原因的非空验证 ; 其中请假时间还必须进行格式验证 ,验证效果如下所示:
表单数据通过验证后. 则提交请求至添加请假记录的 Servlet:, 如添加成功,则给出成功提示,如下图:
点击 ”确定’ 后跳转至请假记录信息的列表页面, 并非显示最新的请假记录信息, 效果如下所示:
如果添加请假记录信息失败,同样给出添加失败提示,并跳转回添加请假记录页面,重新添加请假记录信息;
当用户点击某一条请假记录信息对应的 “删除” 超链接时, 首先弹出信息提示框确认是否删除 , 效果如下图:
当用户点击 “确定" 后, 实现请假讵录的删除操作, 要求使用Ajax 异步请求后台Sevlet 方法进行删除,最后给出删除成功或者失败的信息提示;
二、MySQL数据库设计如下:
三、项目分层设计如下:
项目代码如下:
LeaveRecordsDao.java
packagecn.jbit.leaveReccords.dao;importjava.util.List;importjava.util.Map;importcn.jbit.leaveReccords.entity.LeaveRecords;public interfaceLeaveRecordsDao {/*** 删除请假信息
*
*@paramid
*@return
*/
public intdeleteLeaveRecords(Integer id);/*** 添加请假信息
*
*@paramleaveRecords 请假信息的对象
*@return
*/
public intaddLeaveRecords(LeaveRecords leaveRecords);/*** 分页查询所有消息
*@parampageIndex 页码
*@parampageSize 数据行数
*@return查询到的集合*/
public List selecteLeaveRecords(int pageIndex, intpageSize);/*** 查询总记录数
*@return查询到记录总数*/
public intcount();
}
LeaveRecordsDaoImpl.java
packagecn.jbit.leaveReccords.dao.impl;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importcn.jbit.leaveReccords.dao.BaseDao;importcn.jbit.leaveReccords.dao.LeaveRecordsDao;importcn.jbit.leaveReccords.entity.LeaveRecords;importcn.jbit.leaveReccords.util.DatabaseUtil;public class LeaveRecordsDaoImpl extends BaseDao implementsLeaveRecordsDao {/*** 删除*/@Overridepublic intdeleteLeaveRecords(Integer id) {int result = 0;
String sql= "DELETE FROM leaverecords WHERE id=?";try{
result= this.executeUpdate(sql, id);
}catch(SQLException e) {
e.printStackTrace();
}returnresult;
}
@Overridepublic intaddLeaveRecords(LeaveRecords leaveRecords) {int result = 0;
String sql= "INSERT INTO `leaverecords`(`name`,leaveTime,reason) VALUES (?,?,?)";try{
result= this.executeUpdate(sql, leaveRecords.getName(), leaveRecords.getLeaveTime(),
leaveRecords.getReason());
}catch(SQLException e) {
e.printStackTrace();
}returnresult;
}/*** 分页显示数据*/@Overridepublic List selecteLeaveRecords(int pageIndex, intpageSize) {
String sql= "SELECT id,`name`,leaveTime,reason FROM leaverecords ORDER BY leaveTime ASC limit ?,?";
Connection conn= null;
PreparedStatement pstmt= null;
ResultSet rs= null;
LeaveRecords records= null;
List leaveRecordsList = new ArrayList();try{
conn=DatabaseUtil.getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, (pageIndex - 1) *pageSize);
pstmt.setInt(2, pageSize);
rs&#