http://shiyangxt.cnblogs.com
下面是分页思想,一个初始化方法和一个分页实现方法:
分页的util类:
package com.sy.util;
import java.util.List;
@SuppressWarnings("unchecked")
public class Page {
private int pageSize;
private int totalPage;
private int rowCount;
private int currentPage;
private int prePage;
private int nextPage;
private boolean hasNextPage;
private boolean hasPreviousPage;
private List list;
public Page() {
this.pageSize=10;
}
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 int getPrePage() {
return prePage;
}
public void setPrePage(int prePage) {
this.prePage = prePage;
}
public int getNextPage() {
return nextPage;
}
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
分页的数据库操作和逻辑判断我把他单独用一个PageDaoImpl来实现:
/*
* 施杨的分页daoimpl类
* */
package com.sy.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.sy.dao.BaseDao;
import com.sy.util.Page;
@SuppressWarnings("unchecked")
public class PageDaoImpl extends HibernateDaoSupport {
private String hql;
public Page page;
public int start;
public BaseDao dao;
public void setDao(BaseDao dao) {
this.dao = dao;
}
public void init(int start,String tableName){ // ͨ��init����ʵ����ij�ʼ��
page = new Page();
this.hql = "from "+tableName;
this.start = start;
setRowCount();
setTotalPage();
setCurrentPage();
setPrePage();
setNextPage();
setPreOrNextBoolean();
}
public int getRowCount(){
List list = dao.find(hql);
if(list.isEmpty()){
return 0;
}
return list.size();
}
public Page getPage(){
List list = (List)getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(getStartIndex());
query.setMaxResults(page.getPageSize());
return query.list();
}
});
page.setList(list);
return page;
}
public void setPreOrNextBoolean() {
if (page.getCurrentPage() <= 1) {
page.setHasPreviousPage(false);
} else {
page.setHasPreviousPage(true);
}
if (page.getCurrentPage() >= page.getTotalPage()) {
page.setHasNextPage(false);
} else {
page.setHasNextPage(true);
}
}
public void setCurrentPage() {
if (start < 1) {
page.setCurrentPage(1);
}
if (start > page.getTotalPage()) {
page.setCurrentPage(page.getTotalPage());
}
page.setCurrentPage(start);
}
public void setPrePage() {
page.setPrePage(page.getCurrentPage() - 1);
}
public void setNextPage() {
page.setNextPage(page.getCurrentPage() + 1);
}
public void setTotalPage() {
int rowCount = getRowCount();
int pageSize = page.getPageSize();
if (rowCount > pageSize) {
if (rowCount % pageSize == 0) {
page.setTotalPage(rowCount / pageSize);
} else {
page.setTotalPage(1 + (rowCount / pageSize));
}
} else {
page.setTotalPage(1);
}
}
public void setRowCount() {
page.setRowCount(getRowCount());
}
public int getStartIndex() {
int startIndex = 0;
if (start < 0) {
startIndex = 0;
} else {
if (start > page.getTotalPage()) {
startIndex = page.getPageSize() * (page.getTotalPage() - 1);
} else {
startIndex = page.getPageSize() * (start - 1);
}
}
return startIndex;
}
}
然后是业务层接口,举例AdminService.java
//管理员service层接口
package com.sy.service;
import java.util.List;
import com.sy.util.Page;
import com.sy.vo.Admin;
public interface AdminService extends BaseService{
//分页初始化
public void init(int pno);
//分页实现
public Page getPage();
}
实现类AdminServiceImpl.java
//管理员service层实现类
package com.sy.service.impl;
import java.util.List;
import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.PageDaoImpl;
import com.sy.service.AdminService;
import com.sy.util.Page;
import com.sy.vo.Admin;
@SuppressWarnings("unchecked")
public class AdminServiceImpl extends BaseServiceImpl implements AdminService {
.
public Page getPage() {
return Pdao.getPage();
}
public void init(int pno) {
String tableName="Admin";
Pdao.init(pno,tableName);
}
}
struts的action层AdminAction.java
//管理员action实现类
package com.sy.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import com.sy.form.AdminForm;
import com.sy.form.LoginForm;
import com.sy.service.AdminService;
import com.sy.util.MD5;
import com.sy.util.Page;
import com.sy.vo.Admin;
@SuppressWarnings("unchecked")
public class AdminAction extends BaseAction {
.
//查看管理员
public ActionForward listAdmins(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AdminService as=(AdminService)super.getBean("AdminService");
int pno = (new Integer(request.getParameter("pno"))).intValue();
as.init(pno);
Page myPage = as.getPage();
List myList = as.getPage().getList();
request.setAttribute("myPage", myPage);
request.setAttribute("AdminList", myList);
return mapping.findForward("show");
}
}
结构清晰,也很实用。
页面lookAdmin.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>施杨SSH新闻发布</title>
</head>
<body>
<center>
<h3>
查看管理员
</h3>
<br>
<a href="./admin/addAdmin.jsp">添加管理员</a>
<br>
<a href="./NewsPage2.do?pno=1">查看新闻</a>
<br>
<table border="2" width="600">
<tr>
<td>
用户名
</td>
<td>
密码
</td>
<td>
操作
</td>
</tr>
<c:forEach items="${requestScope['AdminList']}" var="admin">
<tr align="center">
<td width="20%" height="10"><c:out value="${admin.aname}" /></td>
<td width="20%" height="10"><c:out value="${admin.apassword}" /></td>
<td>
<a href="./editAdmin.do?aid=<c:out value="${admin.aid}"/>">修改</a>
<a href="./deleteAdmin.do?aid=<c:out value="${admin.aid}"/>" onclick="javascript:return confirm('您确定删除吗?')">删除</a>
</td>
</tr>
</c:forEach>
</table>
<table align="center" width="500">
<tr>
<td align="center" colspan="10">
<logic:present name="myPage">
<html:link page="/AdminPage.do?pno=1">首页</html:link>
<logic:equal name="myPage" property="hasPreviousPage" value="false">上一页</logic:equal>
<logic:equal name="myPage" property="hasPreviousPage" value="true">
<a href="./AdminPage.do?pno=<bean:write name="myPage" property="prePage"/>">上一页</a>
</logic:equal>
每页<bean:write name="myPage" property="pageSize"/>条记录
共<bean:write name="myPage" property="rowCount"/>条记录
当前第(<bean:write name="myPage" property="currentPage"/>/<bean:write name="myPage" property="totalPage"/>)页
<logic:equal name="myPage" property="hasNextPage" value="false">下一页</logic:equal>
<logic:equal name="myPage" property="hasNextPage" value="true">
<a href="./AdminPage.do?pno=<bean:write name="myPage" property="nextPage"/>">下一页</a>
</logic:equal>
<a href="./AdminPage.do?pno=<bean:write name='myPage' property='totalPage'/>">末页</a>
</logic:present>
</td>
</tr>
</table>
</center>
</body>
</html>
分享到:
相关推荐
如果你的项目中同时包含了MyBatis,那么分页实现方式可能会有所不同。MyBatis允许我们在Mapper XML文件中编写SQL语句,通过设置参数来实现分页。例如,可以使用limit和offset关键字或者rownum伪列(根据数据库类型)...
本篇将详细讲解如何使用SSH(Spring、Struts2、Hibernate)框架结合JSON、jQuery和MySQL数据库来实现Ajax分页。 首先,SSH框架是Java Web开发中的一个流行组合,Spring提供了依赖注入和事务管理,Struts2负责MVC...
5. **分页实现**:在SSH框架下,分页通常包括以下步骤: - 用户发送分页请求,包含当前页和每页大小。 - Struts2 Action捕获请求,解析参数。 - Spring管理的Service层调用Hibernate的分页查询方法。 - ...
在SSH基础上实现分页功能,主要是为了处理大数据量的查询结果,提高用户体验,避免一次性加载过多数据导致页面加载缓慢或者内存压力过大。下面将详细讲解SSH框架下分页功能的原理和实现步骤。 首先,理解分页的基本...
SSH分页 分页 通用分页 struts2分页
此外,还可以使用一些现成的分页库,如Spring Data JPA的Pageable接口,来简化分页实现。 通过这种方式,SSH框架可以帮助开发者轻松地实现分页功能,提供良好的结构和可扩展性。对于大型项目,这通常是提高性能和...
SSH(Struts+Spring+Hibernate)是一个经典的Java Web开发框架,...提供的文档"ssh分页实现.doc"很可能会详细讲解这些步骤,包括具体的代码示例和配置细节。学习和理解这个过程,对于提升Java Web开发能力非常有帮助。
四、SSH分页实现步骤 1. 定义分页实体类:创建一个表示分页信息的实体类,包括当前页、每页数量、总记录数等属性。 2. 创建Action:在Struts2 Action中接收用户的请求参数,如当前页码和每页大小,然后调用服务层的...
以下是一个简单的SSH整合分页实现步骤: ### 实验步骤 1. **创建数据库表**:根据提供的SQL脚本,创建了admin、book、category、guestbook和product五个表,用于存储不同类型的业务数据。 2. **配置SSH框架**:在...
在“ssh+oracle分页”这个主题中,我们将深入探讨如何利用这三个框架与Oracle数据库进行集成,并实现数据的分页显示。 1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。...
在这个名为"ssh.zip_SSH 数据分页_ssh分页实现"的压缩包中,我们可以看到一个关键的实践案例——如何在SSH框架下实现数据分页功能。数据分页在Web应用中极为重要,因为它能够帮助用户更有效地浏览大量信息,提高用户...
在这个"SSH+Mysql无刷新分页实例"中,我们将探讨如何利用SSH框架与MySQL数据库实现网页的无刷新分页功能,从而提高用户体验。 首先,SSH框架中的Spring负责控制层,它提供依赖注入(Dependency Injection,DI)和...
SSH(Struts2 + Spring...综上所述,SSH框架下的分页实现涉及Struts2、Spring和Hibernate等多个层面,通过合理设计和优化,可以提供高效且友好的分页功能。开发者需要熟悉这些组件的用法,并结合实际项目需求进行调整。
基于SSH技术实现分页管理信息,代码几乎不用修改,直接能通,方便大家使用
在分页实现中,Struts2的Action类将接收来自前端的请求参数,如当前页数和每页显示的数量,然后调用业务逻辑层的方法进行处理。 Spring框架主要负责依赖注入(DI)和面向切面编程(AOP)。在分页场景下,Spring可以...
5. 示例中的"qimo_JavaWeb"可能是一个包含示例代码的文件或项目,它可能包含了SSH整合的配置文件、Java源代码、JSP视图文件以及相关的分页、校验和Ajax实现。对于初学者来说,研究这个示例可以帮助理解如何在实际...
好强大的ssh分页,封装的很好,适合初学者研究下,可以更快帮助初学者掌握分页机制,学起来不是很容易,但是当你学会了就豁然开朗,其他的分页直接可以藐视了,哈。。。我就是这样学过来的 有相关教程:...
在分页实现中,Spring可以用来配置数据访问对象(DAO),并管理DAO与业务逻辑层(Service)之间的依赖关系。Service层将实现分页逻辑,包括计算总页数、根据给定参数执行SQL查询等。 Hibernate作为ORM(对象关系...
本文将深入探讨如何使用SSH2中的注解来实现登陆/注册功能、模糊查询、分页、批量删除以及组合查询,这些都是Web应用程序中不可或缺的基础功能。 首先,让我们从Spring框架的注解开始。在SSH2中,Spring提供了诸如@...
在SSH中,超级分页是指在终端中通过增强的分页工具来查看大量输出内容,例如日志文件或命令执行结果。这种方法可以帮助IT专家更有效地管理和分析远程服务器上的信息。下面将详细介绍SSH超级分页的原理、使用方法以及...