分页查询是一个非常重要的实现,
实现pageBean
public class PageBean<T> {
/**
* 设置一个list集合,由于java中的泛型都是伪泛型,所以泛型传入一个<T>
* 不是一个具体的泛型类型,这样更具有扩展性
*/
private List<T> list;
/**
* 定义一个页码数的成员变量
*/
private int pageNum;
/**
* 定义记录总页数的成员变量
*/
private int totalPage;
/**
* 生成一个get/set方法
*/
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
/**
* 生成toSting方法用于测试
*/
@Override
public String toString() {
return "PageBean [list=" + list + ", pageNum=" + pageNum + ", totalPage=" + totalPage + "]";
}
}
实现servlet
public class BaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
if(method == null){
method = "defout";
}
Class c = getClass();
try {
Method m = c.getMethod(method, HttpServletRequest.class,HttpServletResponse.class);
String path = (String)m.invoke(this, request,response);
if(path != null){
request.getRequestDispatcher(path).forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String defout(HttpServletRequest request, HttpServletResponse response){
System.out.println("默认程序");
return null;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
上面的servlet只是显现通过反射获取方法,
-----------------------------------------------------------------------------------------------------------------------------------------
public class FenYe extends BaseServlet {
private static final long serialVersionUID = 1L;
public String findByPage(HttpServletRequest request, HttpServletResponse response) {
//获取页面传入的当前页码数,获取的是String类型的需要使用包装类进行转换
String p = request.getParameter("pageNum");
//定义一个变量用于接收当前页面数
int pageNum;
//进行判断当前获取的页码数
if(p == null){
//当p==null时,获取的当前页码数是1
pageNum = 1;
}else{
//如果不等null时pageNum就等于当前获取的页码数
pageNum = Integer.parseInt(p);
}
//设置一页显示记录数(自己随便设置)
int rows = 5;
//调用service
ServicePor sp= new ServicePor();
//调用ServicePro的findByPage方法
PageBean pb = sp.findByPage(pageNum,rows);
//将pageBean设置进session中
request.setAttribute("pb",pb);
return super.defout(request, response);
}
}
这个servlet用于实现方法
--------------------------------------------------------------------------------------------------------------------------------------
public class ServicePor {
public PageBean findByPage(int pageNum, int rows) {
//调用数据库层
ProductDao pd = new ProductDao();
//调用pageBean,可以不要泛型,java中的泛型都是伪泛型
PageBean pb = new PageBean();
//将获取的pageNum设置进PageBen的方法中
pb.setPageNum(pageNum);
//获取产品的总记录数
int count = pd.sumCount();
//获取产品的总页数
pb.setTotalPage(((count % rows == 0) ? (count / rows) : (count / rows +1)));
//根据分页查询产品
List<Product> list = pd.finByPage(pageNum,rows);
//将获取的产品的list集合设置进PageBean中
pb.setList(list);
//返回pb
return pb;
}
}
这个service用于实现一些逻辑
--------------------------------------------------------------------------------------------------------
由于每个人的数据库的字段结构都是不同的所以数据库层只需要根据数据库表结构里面的字段响应设置就可以了