import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alensic.nursing.utils.StringUtil;
/**
* 分页
*
* @author zhchen
*
*/
public class PagingService{
/**
* 首页
*
* @param pageMap
* @return
*/
public Map doFirstPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
//当前页
page.setPageNum(1);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 下一页
*
* @param pageMap
* @return
*/
public Map doNextPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
int maxPage = page.getMaxPage();
//当前页
int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString());
if(start+1 > maxPage){
}else{
start = start+1;
}
//当前页
page.setPageNum(start);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 上一页
*
* @param pageMap
* @return
*/
public Map doPrePage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
//当前页
int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString());
if(start-1 < 1){
}else{
start = start-1;
}
//当前页
page.setPageNum(start);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 最后一页
*
* @param pageMap
* @return
*/
public Map doLastPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
int maxPage = page.getMaxPage();
//当前页
page.setPageNum(maxPage);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 根据页面查询页面信息
*
* @param pageMap
* @return
*/
public Map doGoToPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
int maxPage = page.getMaxPage();
//最后页码
String pageNum = pageMap.get("page_num") == null?"0":pageMap.get("page_num").toString();
//验证传入的参数是否为数字
boolean isNum = pageNum.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
if(!isNum){
resultMap.put("errorMsg", "页面输入的值不是数字");
return resultMap;
}
int start = Integer.parseInt(pageNum);
if(start < 1){
start = 1;
}else if(start > maxPage){
start = maxPage;
}
//当前页
page.setPageNum(start);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 初始化分页参数
*
* @param pageMap 页面传入的参数
* @param resultMap 返回结果
* @param page 分页bean
* @return boolean true:成功,false:失败
*/
private boolean initPageBean(Map pageMap,Map resultMap,PageBean page){
//查询总记录数
String pageMax = pageMap.get("page_max") == null ?"":pageMap.get("page_max").toString();
String queryCondition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString();
if(StringUtil.isEmpty(pageMax)){
resultMap.put("errorMsg", "没有设置变量--每页显示多少条");
return false;
}
int maxResult = getMaxPage(queryCondition);
page.setMaxResult(maxResult);
page.setPageMax(Integer.parseInt(pageMax));
page.setMaxPage();
return true;
}
/**
* 返回结果赋值
*
* @param resultMap 返回集合
* @param pageMap 页面传入的条件
* @param page page对象
*
*/
private void setResultMap(Map resultMap,Map pageMap,PageBean page){
//查询当前页的信息
String condition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString();
int pageMax = page.getPageMax();
int pageNum = page.getPageNum();
List list = findPageInfo((pageNum-1)*pageMax, pageMax,condition);
Map pageResultMap = new HashMap();
pageResultMap.put("pageNum", page.getPageNum());
pageResultMap.put("maxResult", page.getMaxResult());
pageResultMap.put("pageMax", page.getPageMax());
pageResultMap.put("maxPage", page.getMaxPage());
resultMap.put("page", pageResultMap);
resultMap.put("query_result", list);
}
/**
* 查询当前页的信息
*
* @param offset 起始行号
* @param size 返回记录数
* @param condition 查询条件
* @return list
*/
public List findPageInfo(int offset,int size,String condition){
return null;
}
/**
* 获取总记录数
*
* @param queryCondition 查询条件
* @return int
*/
public int getMaxPage(String queryCondition) {
int maxPage = 0;
return maxPage;
}
}
/**
* 分页组建
*
* @author zhchen
*/
public class PageBean {
private int pageNum = 1; // 当前页
private int maxResult; // 总记录数
private int pageMax; // 每页显示数
private int maxPage; // 总页数
public int getPageMax() {
return pageMax;
}
public void setPageMax(int pageMax) {
this.pageMax = pageMax;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getMaxPage() {
return maxPage;
}
public void setMaxPage() {
this.maxPage = (maxResult % pageMax == 0 ? maxResult / pageMax
: maxResult / pageMax + 1);
}
public int getMaxResult() {
return maxResult;
}
public void setMaxResult(int maxResult) {
this.maxResult = maxResult;
}
}
分享到:
相关推荐
### JSP分页技术详解:初学者的完美指南 #### 引言 在现代Web开发中,数据展示的效率和用户体验至关重要。对于大型数据库或数据集的处理,一次性加载所有数据不仅消耗大量资源,还可能导致页面加载缓慢,严重影响...
二、JSP分页步骤 1. **计算总页数**:首先,我们需要知道所有数据的数量,然后根据每页显示的数据量来计算总页数。这可以通过执行SQL查询获取数据总数,然后用总数除以每页数量得到。 2. **接收用户请求**:用户...
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
本篇文章将深入探讨“目前最好的JSP分页技术”,并介绍其核心概念、优势以及实现步骤。 首先,我们要明确的是,没有绝对“最好”的技术,只有最合适的解决方案。选择分页技术通常要考虑性能、易用性、可维护性和...
`jsp分页循环显示`就是一种这样的技术,它结合了`JSP(JavaServer Pages)`和`Servlet`,用于从数据库获取数据并以分页的方式在网页上呈现。本篇文章将深入讲解这一技术的实现原理及步骤。 首先,我们需要理解JSP和...
jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页...
本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...
在"分页的实现.rtf"文件中,可能包含了一个具体的JSP分页实现案例,包括SQL查询、Servlet处理逻辑以及JSP页面的代码片段,通过阅读和理解这个案例,可以加深对JSP分页实现的理解。 总结,JSP分页实现是一个涉及到...
**JSP分页技术详解** 在Web开发中,分页是一种常见的用户界面设计技术,它使得大量数据可以按页展示,提高用户体验并减轻服务器压力。本示例是基于JSP(JavaServer Pages)和SQL Server 2005构建的一个简单易懂的...
本资源提供了一个非常好用的JSP分页标签,它简化了在JSP页面上实现分页的过程,无需编写过多的Java代码,只需在JSP页面上插入特定的标签即可。 1. **JSP分页标签**:JSP分页标签是一种预定义的、可重用的组件,可以...
"jsp 分页源码.rar"这个压缩包可能包含了一个完整的JSP分页实现的源代码示例,让我们来详细探讨一下JSP分页的相关知识点。 1. **分页原理**: - 分页的基本思想是将大量数据分成若干小块(每块称为一页),每次只...
【纯jsp分页技术详解】 在Java Web开发中,分页功能是不可或缺的一部分,它能够帮助用户有效地管理和浏览大量数据,提升用户体验。本教程将深入探讨如何在JSP(Java Server Pages)中实现纯jsp分页,不依赖任何封装...
**jsp分页技术算法详解** 在Web开发中,分页技术是必不可少的,尤其是在处理大量数据展示时。JSP(JavaServer Pages)作为Java的一种视图技术,提供了强大的功能来实现用户界面的动态生成。本篇文章将深入探讨JSP中...
**jsp分页插件**是一种在网页应用中实现数据分页显示的重要工具,尤其是在处理大量数据时,分页能够提高用户体验,避免一次性加载过多数据导致页面加载缓慢或资源浪费。这款名为"Codejia.Com"的插件因其简单易用和...
"通过servlet实现jsp分页技术"的主题旨在讲解如何在Java Web环境下,利用Servlet和JSP进行数据的分页显示。下面将详细介绍这个过程,包括基本概念、步骤和关键点。 首先,我们需要理解分页的基本概念。分页是将大量...
"封装好直接使用的jsp分页插件"正是一款针对这一需求设计的工具,它能够简化开发过程,使开发者能够快速实现分页功能,而无需关注底层复杂的逻辑。 该插件适用于jsp与servlet的原生组合,同时对流行的SSH(Struts2 ...
### JSP分页技术详解与实现 #### 一、引言 JSP(JavaServer Pages)是一种基于Java的服务器端动态网页技术标准,用于生成动态HTML页面。在处理大量数据时,分页显示是一个非常实用的功能,它可以提高用户体验,减少...
【纯jsp分页查询】是一种在Web开发中常见的技术,主要应用于数据量较大时,为了提高用户体验和页面加载速度,将大量数据分为多个部分(页)进行显示。在这个项目中,开发者使用了JSP(JavaServer Pages)技术,这是...