1.创建Page实体类
public class Page {
private int pageSize; //页容量
private int totalPage; //总页数
private int currentPage; //当前页
private boolean isFirstPage;//是否第一页
private boolean isLastPage; //是否最后一页
private boolean hasPreviousPage; //是否有上一页
private boolean hasNextPage; //是否有下一页
private List list; //数据集合
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public boolean isFirstPage() {
return isFirstPage;
}
public void setFirstPage(boolean isFirstPage) {
this.isFirstPage = isFirstPage;
}
public boolean isLastPage() {
return isLastPage;
}
public void setLastPage(boolean isLastPage) {
this.isLastPage = isLastPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
2.创建IPageDao接口
public interface IPageDao {
void init(int start, int pageSize,String tableName); //Page初始化
void setPageSize(int pageSize); //1.设置页容量
void setTotalPage(String tableName); //2.设置总页数
void setCurrentPage(); //3.设置当前页
void setIfFirstAndIfLast(); //4.设置是否首尾页
void setHasPreviousPageAndLastPage(); //5.设置是否有上下页
void setList(String tableName); //6.设置总记录数
Page getPage(); //获取Page对象
}
3.创建PageDaoImpl实现类
public class PageDaoImpl implements IPageDao{
private ProjectDao projectDao ;
private int start;
private Page page;
/**
* Page对象初始化
* @param start 传入的当前页
* @param pageSize 传入的页容量
* @param tableName 传入的表名
*/
public void init(int start,int pageSize,String tableName) {
this.start = start;
page = new Page();
projectDao = new ProjectDao();
setPageSize(pageSize);
setTotalPage(tableName);
setCurrentPage();
setIfFirstAndIfLast();
setHasPreviousPageAndLastPage();
setList(tableName);
}
/**
* 1.设置页容量:用于设置总页数
*/
public void setPageSize(int pageSize) {
if (pageSize <= 0) {
page.setPageSize(10);
}
else {
page.setPageSize(pageSize);
}
}
/**
* 2.设置总页数:在判断当前页是否大于总页数时用到
*/
public void setTotalPage(String tableName) {
int rowCount = 0;
if (tableName.equals("items")) {
rowCount = projectDao.getItemsRowCount();
}
else if (tableName.equals("application")) {
rowCount = projectDao.getAppsRowCount();
}
int pageSize = page.getPageSize();
if (rowCount%pageSize > 0) {
page.setTotalPage(rowCount/pageSize + 1);
}
else {
page.setTotalPage(rowCount/pageSize);
}
}
/**
* 3.设置当前页:在之后的上下页和首尾页都需要用到
*/
public void setCurrentPage() {
if (start < 1) {
page.setCurrentPage(1);
}
else if (start > page.getTotalPage()) {
page.setCurrentPage(page.getTotalPage());
}
else {
page.setCurrentPage(start);
}
}
/**
* 4.设置是否首页或尾页
*/
public void setIfFirstAndIfLast() {
page.setFirstPage(page.getCurrentPage() > 1 ? false:true);
page.setLastPage(page.getCurrentPage() < page.getTotalPage() ? false:true);
}
/**
* 5.设置是否有上一页和下一页
*/
public void setHasPreviousPageAndLastPage() {
page.setHasPreviousPage(page.getCurrentPage() == 1 ? false:true);
page.setHasNextPage(page.getCurrentPage() == page.getTotalPage() ? false:true);
}
/**
* 6.设置数据
*/
public void setList(String tableName) {
int currentPage = page.getCurrentPage();
int pageSize = page.getPageSize();
int startIndex = pageSize * (currentPage - 1);
if (tableName.equals("items")) {
page.setList(projectDao.getItemsByPage(startIndex, pageSize));
}
else if (tableName.equals("application")) {
page.setList(projectDao.getAppsByPage(startIndex, pageSize));
}
}
public Page getPage() {
return page;
}
}
4.创建通过数据库获取数据的方法
/**
* 通过分页获取财政专项
* @param startIndex
* @param pageSize
* @return
*/
public List getItemsByPage(int startIndex, int pageSize) {
Session s = null;
List list = null;
try {
s = HibernateUtil.getSession();
s.beginTransaction();
Query query = s.createSQLQuery("select i.name,p.fileno from items i,policy p where i.isleaf = 1 and i.defaultpolicyid = p.id");
query.setFirstResult(startIndex);
query.setMaxResults(pageSize);
list = query.list();
} catch (Throwable e) {
log.error(e.toString());
HibernateUtil.endSession(s);
} finally {
HibernateUtil.endSession(s);
}
return list;
}
/**
* 获取财政专项总记录树
* @return
*/
public int getItemsRowCount() {
int rowCount = 0;
Session s = null;
try {
s = HibernateUtil.getSession();
s.beginTransaction();
Query query = s.createSQLQuery("select i.name,p.fileno from items i,policy p where i.isleaf = 1 and i.defaultpolicyid = p.id");
List list = query.list();
if (list != null) {
rowCount = list.size();
}
} catch (Throwable e) {
log.error(e.toString());
HibernateUtil.endSession(s);
} finally {
HibernateUtil.endSession(s);
}
return rowCount;
}
/**
* 通过分页获取项目信息
* @param startIndex
* @param pageSize
* @return
*/
public List getAppsByPage(int startIndex, int pageSize) {
Session s = null;
List list = null;
try {
s = HibernateUtil.getSession();
s.beginTransaction();
Query query = s.createSQLQuery("select e.qymc,a.enpname,a.money,a.approvaldate from application a,enterprise e where stepid = 3 and status = 0 and a.swdjzh = e.swdjzh");
query.setFirstResult(startIndex);
query.setMaxResults(pageSize);
list = query.list();
} catch (Throwable e) {
log.error(e.toString());
HibernateUtil.endSession(s);
} finally {
HibernateUtil.endSession(s);
}
return list;
}
/**
* 获取公示企业项目总记录数
* @return
*/
public int getAppsRowCount() {
Session s = null;
int rowCount = 0;
try {
s = HibernateUtil.getSession();
s.beginTransaction();
Query query = s.createSQLQuery("select e.qymc,a.enpname,a.money,a.approvaldate from application a,enterprise e where stepid = 3 and status = 0 and a.swdjzh = e.swdjzh");
List list = query.list();
if (list != null) {
rowCount = list.size();
}
} catch (Throwable e) {
log.error(e.toString());
HibernateUtil.endSession(s);
} finally {
HibernateUtil.endSession(s);
}
return rowCount;
}
5.创建PageServlet
public class PageServlet extends HttpServlet {
private static final long serialVersionUID = 719461503837296828L;
private IPageDao pageDao;
protected void doGet(HttpServletRequest request, HttpServletResponse respond)
throws ServletException, IOException {
doPost(request,respond);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("doType");
if (action.equals("page")) {
String tableName = request.getParameter("table");
int start = Integer.valueOf(request.getParameter("page"));
pageDao = new PageDaoImpl();
pageDao.init(start, 0, tableName);//Page对象初始化
Page page = pageDao.getPage();//获取Page对象
request.setAttribute("currentPage", page.getCurrentPage());
request.setAttribute("totalPages", page.getTotalPage());
request.setAttribute("hasPrevious", page.isHasPreviousPage());
request.setAttribute("hasNext", page.isHasNextPage());
request.setAttribute("isFirst", page.isFirstPage());
request.setAttribute("isLast", page.isLastPage());
request.setAttribute("list", page.getList());
if (tableName.equals("items")) {
request.getRequestDispatcher("frontShow/itemShow.jsp").forward(request, response);
}
else if (tableName.equals("application")) {
request.getRequestDispatcher("frontShow/enpriseShow.jsp").forward(request, response);
}
}
}
}
6.页面显示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/frontShow.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/jquery-1.11.1.min.js"></script>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/bootstrap-theme.min.css" />
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/bootstrap.min.css" />
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/bootstrap.min.js"></script>
<script type="text/javascript">
</script>
<title>企业公示项目</title>
</head>
<body background="<%=request.getContextPath()%>/images/b1.jpg" class="background">
<div style="text-align:center">
<img alt="财政专项" src="<%=request.getContextPath()%>/images/front.jpg" />
</div>
<div class="center">
<div class="divBoder div1">
<img alt="企业项目申报公示" src="<%=request.getContextPath()%>/images/qiyegongshi.png">
<hr/>
<center><a href="<%=request.getContextPath()%>/index.jsp"><img alt="返回首页" src="<%=request.getContextPath()%>/images/FrontPage.png"></a></center>
</div>
<div class="divBoder div2">
<div>
<br/>
<table>
<tr class="trTitle">
<td width="50px;"></td>
<td width="120px;">企业名称<hr class="hr"/></td>
<td width="450px;">申报项目名称<hr class="hr"/></td>
<td width="120px;">申报金额<hr class="hr"/></td>
<td>申报日期<hr class="hr"/></td>
</tr>
<c:forEach items="${list}" var="item">
<tr>
<td width="50px;"></td>
<td width="120px;"><strong>${item[0]}</strong><hr/></td>
<td width="450px;">${item[1]}<hr/></td>
<td width="120px;">${item[2]}元<hr/></td>
<td>${item[3]}<hr/></td>
</tr>
</c:forEach>
</table>
</div>
<center>
<div>
<span>
<c:choose>
<c:when test="${isFirst}">
首页
</c:when>
<c:otherwise>
<a href="itemShow.page?doType=page&&page=1&&table=application">首页</a>
</c:otherwise>
</c:choose>
</span>
<span>
<c:choose>
<c:when test="${!hasPrevious}">
上一页
</c:when>
<c:otherwise>
<a href="itemShow.page?doType=page&&page=${currentPage-1}&&table=application">上一页</a>
</c:otherwise>
</c:choose>
</span>
<c:forEach var="index" begin="1" end="${totalPages}" step="1">
<c:choose>
<c:when test="${index==currentPage}">
<span class="currentPage">${index}</span>
</c:when>
<c:otherwise>
<a href="itemShow.page?doType=page&&page=${index}&&table=application">${index}</a>
</c:otherwise>
</c:choose>
</c:forEach>
<span>
<c:if test="${!hasNext}">
下一页
</c:if>
<c:if test="${hasNext}">
<a href="itemShow.page?doType=page&&page=${currentPage+1}&&table=application">下一页</a>
</c:if>
</span>
<span>
<c:if test="${isLast}">
尾页
</c:if>
<c:if test="${!isLast}">
<a href="itemShow.page?doType=page&&page=${totalPages}&&table=application">尾页</a>
</c:if>
</span>
</div>
</center>
</div>
</div>
</body>
</html>
7.页面