`
danwind
  • 浏览: 232744 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

自己写的分页组件

    博客分类:
  • Java
阅读更多
1.封装类代码如下:

import java.sql.SQLException;
import java.util.List;

import javax.swing.text.TableView.TableRow;

@SuppressWarnings("unchecked")
public class PaginationModule {
	
	private int NumPerPage = 15;													//每页显示的记录条数
	private int currentPage = 0;												   //当前显示页面
	private int totalNums = 0;													  //共有多少条数据
	private int totalPages = 0;													 //可以分成多少个页面
	private int cfPage = 0;													    //要显示页面的第一条数据
	private int clPage = 0;												       //要显示页面的最后一条数据
	private int firstOfPage = 0;									          //显示第一页面
	private int prevOfPage = 0;							        		     //显示最后一页面
	private int lastOfPage = 0;									            //显示前一页面
	private int nextOfPage = 0;									           //显示下一页面
	private String keyword = null;									      //关键字查询
	private String tabelName = "";								         //访问数据库中的一个表或子查询
	private String condition = "";								        //条件查询	
	private String orderby = "";								       //按某字段排序返回结果
	private boolean desc = false;							          //是否按逆序进行排序
	private String url = "";								         //页面的请求路径
	private boolean flag = false;								    //是否在数据前面显示4个按钮
	
	private List list = null;								            //数据存储于list中
	private TableRowIterator tr = null;						            //返回一个TableRowIterator
	private Context context = null;
	
	
	
	public PaginationModule(Context context) {
		this.context = context;
	}
	
	public void setNumPerPage(int numPerPage) {
		NumPerPage = numPerPage;
	}
	
	public void setTabelName(String tabelName) throws SQLException {
		this.tabelName = tabelName;
		if(!"".equals(this.tabelName)){
			this.initTotalNum();
		}
	}	
	
	public void setTabelName(String tabelName, String condition)throws SQLException  {
		this.tabelName = tabelName;
		//condition = condition.trim().replaceAll("'", "");
		String temp = condition;
		String tp = "";
		int ii = temp.indexOf("%");
		if(ii != -1) {
			do {
				int i = temp.indexOf("%");
				String sub1 = temp.substring(0, i+1);
				String sub2 = temp.substring(i+1, temp.length());
				int j = sub2.indexOf("%");
				tp += sub1;
				if(j != 0) {
					String ktemp = sub2.substring(0, j).trim().replaceAll("'", "");
					tp += ktemp;
				}
				tp += "%";
				temp = sub2.substring(j+1, sub2.length());
			} while(temp.indexOf("%") > 0);
		}
		temp = tp + temp;
		this.condition = temp;
		if(!"".equals(this.condition)){
			this.initTotalNum(this.condition);
		} else if(!"".equals(this.tabelName)){
			this.initTotalNum();
		}
	}
	
	public void setCurrentPage(int currentPage) throws SQLException  {
		
		if(currentPage >= this.totalPages) {
			currentPage = this.totalPages - 1;
		}
		if(currentPage < 0) {
			currentPage = 0;
		}
		this.cfPage = currentPage*NumPerPage+1;
		this.clPage = currentPage*NumPerPage+NumPerPage > totalNums ? totalNums:currentPage*NumPerPage+NumPerPage;
		this.firstOfPage = currentPage == 0 ? -1 : 0;
		this.prevOfPage = currentPage == 0 ? -1 : currentPage-1;
		this.lastOfPage = totalPages == 1 ? -1 : totalPages-1;
		this.nextOfPage = totalPages > 1 ? currentPage + 1 : -1;
		this.currentPage = currentPage;
		
		if(!"".equals(this.condition)){
			this.initdata(this.condition);
		} else if(!"".equals(this.tabelName)){
			this.initdata();
		}
	}
	
	public void setUrl(String url) {
		this.url = url;
	}
	
	public PaginationModule() {
		
	}
	
	public PaginationModule(int numPerPage, int currentPage, String table, String url, Context context) {
		this.NumPerPage = numPerPage;
		this.tabelName = table;
	}
	
	//推荐使用此构造方法
	public PaginationModule(int numPerPage, int currentPage, int totalNums, List list, String url, Context context) {
		this.NumPerPage = numPerPage;
		this.currentPage = currentPage;
		this.totalNums = totalNums;
		this.list = list;
		this.totalPages = (totalNums+NumPerPage-1)/NumPerPage;
		this.cfPage = currentPage*NumPerPage+1;
		this.clPage = currentPage*NumPerPage+NumPerPage > totalNums ? totalNums:currentPage*NumPerPage+NumPerPage;
		this.firstOfPage = currentPage == 0 ? -1 : 0;
		this.prevOfPage = currentPage == 0 ? -1 : currentPage-1;
		this.lastOfPage = totalPages == 1 ? -1 : totalPages-1;
		this.nextOfPage = totalPages > 1 ? currentPage + 1 : -1;
		this.url = url;
		this.context = context;
	}
	
	public int getNumPerPage() {
		return NumPerPage;
	}
	
	
	public int getCurrentPage() {
		return currentPage;
	}
	
	public void initdata() throws SQLException{
		Object[] parameters = new Integer[2];
		parameters[0] = this.cfPage;
		parameters[1] = this.clPage;
		String sql = "select rn, ne.* from (select rownum rn,n.* from(select * from ";
		if(this.desc) {
			sql = sql + this.tabelName + " order by " + this.orderby +" desc ) n)  ne where rn between ? and ?";
		} else if(!"".equals(this.orderby)) {
			sql = sql + this.tabelName + " order by " + this.orderby +" ) n)  ne where rn between ? and ?";
		
		} else {
			sql = sql + this.tabelName + " ) n)  ne where rn between ? and ?";
		}
		this.tr = DatabaseManager.query(context, sql, parameters);
	}
	
	public void initdata(String condition) throws SQLException{
		Object[] parameters = new Integer[2];
		parameters[0] = this.cfPage;
		parameters[1] = this.clPage;
		String sql = "select rn, ne.* from (select rownum rn,n.* from(select * from ";
		if(this.desc) {
			sql = sql + this.tabelName + " where " + condition + " order by " + this.orderby + " desc ) n)  ne where rn between ? and ?";
		} else if(!"".equals(this.orderby)) {
			sql = sql + this.tabelName + " where " + condition +
			  " order by " + this.orderby + " ) n)  ne where rn between ? and ?";
		} else {
			 sql = sql + this.tabelName + " where " + condition + ") n)  ne where rn between ? and ?";
		}
		this.tr = DatabaseManager.query(context, sql, parameters);
			}
	
	public void initTotalNum() throws SQLException{
		String sql = "select count(*) num from " + this.tabelName;
		TableRowIterator tr = DatabaseManager.query(context, sql);
		if(tr.hasNext()) {
			this.totalNums = tr.next().getIntColumn("num"); 
		}
		this.totalPages = (totalNums+NumPerPage-1)/NumPerPage;
	}
	
	public void initTotalNum(String condition) throws SQLException{
		String sql = "select count(*) num from " + this.tabelName + " where " + condition;
		TableRowIterator tr = DatabaseManager.query(context, sql);
		if(tr.hasNext()) {
			this.totalNums = tr.next().getIntColumn("num"); 
		}
		this.totalPages = (totalNums+NumPerPage-1)/NumPerPage;
	}
	
	public TableRowIterator executeSql(Context context, String sql ) throws SQLException{
		return DatabaseManager.query(context, sql);
	}
	
	public int getCfPage() {
		return cfPage;
	}
	public void setCfPage(int cfPage) {
		this.cfPage = cfPage;
	}
	
	public int getClPage() {
		return clPage;
	}
	public void setClPage(int clPage) {
		this.clPage = clPage;
	}
	
	public int getTotalNums() {
		return totalNums;
	}

	public void setTotalNums(int totalNums) {
		this.totalNums = totalNums;
		this.totalPages = (totalNums+NumPerPage-1)/NumPerPage;
	}

	public int getTotalPages() {
		return totalPages;
	}

	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
	
	public List getList() {
		return list;
	}
	
	public void setList(List list) {
		this.list = list;
	}
	
	public int getFirstOfPage() {
		return firstOfPage;
	}

	public void setFirstOfPage(int firstOfPage) {
		this.firstOfPage = firstOfPage;
	}

	public int getPrevOfPage() {
		return prevOfPage;
	}

	public void setPrevOfPage(int prevOfPage) {
		this.prevOfPage = prevOfPage;
	}

	public int getLastOfPage() {
		return lastOfPage;
	}

	public void setLastOfPage(int lastOfPage) {
		this.lastOfPage = lastOfPage;
	}

	public int getNextOfPage() {
		return nextOfPage;
	}
	
	public void setNextOfPage(int nextOfPage) {
		this.nextOfPage = nextOfPage;
	}
	public String getUrl() {
		return url;
	}

	public boolean isFlag() {
		return flag;
	}

	public void setFlag(boolean flag) {
		this.flag = flag;
	}
	
	public TableRowIterator getTr() {
		return tr;
	}
	public void setCondition(String condition) {
		this.condition = condition;
	}
	public void setContext(Context context) {
		this.context = context;
	}
	public void setOrderby(String orderby, boolean desc) {
		this.orderby = orderby;
		this.desc = desc;
	}
	public String getKeyword() {
		return keyword;
	}

	public void setKeyword(String keyword) {
		keyword = keyword.trim().replaceAll("'", "");
		this.keyword = keyword;
	}
}

2.主要由一个类进行了封装,servlet进行相关参数的设置。Servlet代码如下:
PaginationModule pagm = new PaginationModule(c);
		int currentPage = 0;
		if (request.getParameter("curp") != null) {
			currentPage = Integer.parseInt(request.getParameter("curp"));
		}
		pagm.setOrderby("created_date", true);
		String keyword = request.getParameter("conditionvalue") == null ? "":request.getParameter("conditionvalue");
				
		pagm.setTabelName("news", "title like '%" + keyword + "%' ");
			
		pagm.setKeyword(keyword);
		try {
			if (request.getParameter("jump_page") != null) {
				currentPage = Integer.parseInt(request.getParameter("jump_page")) - 1;
			}
		} catch (NumberFormatException e) {
			currentPage = 0;
		}
		
		pagm.setCurrentPage(currentPage);
		TableRowIterator tr = pagm.getTr();
		if(tr != null) {
			List<News> newslist = new ArrayList<News>();
			while(tr.hasNext()) {
				TableRow trw = tr.next();
				if(trw != null) {
					newslist.add( new News(trw));
				}
			}
			pagm.setList(newslist);
		}
		pagm.setUrl("news-edit?conditionvalue=" + java.net.URLEncoder.encode(keyword, Constants.DEFAULT_ENCODING) + "&amp;");	
		request.setAttribute("paginationModule", pagm);
3.jsp页面显示:
<%
   
    PaginationModule pmodule = (PaginationModule)request.getAttribute("paginationModule");
    List<News> newslist = pmodule.getList();
    String keyword = pmodule.getKeyword();
%>
	         
<% 	if (pmodule.getFirstOfPage() > -1) { %>                                    
         &nbsp;<a href="<%=request.getContextPath() %>/<%=pmodule.getUrl() %>curp=0" ><img  border="0" src="<%= request.getContextPath() %>/images/btn_prev2-1.gif" width="12" height="9" alt=""/></a>
<%	} else {  %>                                    
         &nbsp;<img  border="0" src="<%= request.getContextPath() %>/images/btn_prev2.gif" width="12" height="9" alt=""/>
<%	} %>  
			
<%	if (pmodule.getCurrentPage() > 0) {  %>                                    
         &nbsp;<a href="<%=request.getContextPath() %>/<%=pmodule.getUrl() %>curp=<%=pmodule.getPrevOfPage() %>" ><img  border="0" src="<%= request.getContextPath() %>/images/btn_prev-1.gif" width="5" height="9" alt=""/></a>
<%	} else { %>                                    
         &nbsp;<img  border="0" src="<%= request.getContextPath() %>/images/btn_prev.gif" width="5" height="9" alt=""/>
<%	}  %>     
		<fmt:message key="jsp.general.showresults">
			<fmt:param value="<%= Integer.toString(pmodule.getCfPage()) %>"/>
			<fmt:param value="<%= Integer.toString(pmodule.getClPage()) %>"/>
			<fmt:param value="<%= Integer.toString(pmodule.getTotalNums()) %>"/>
			<fmt:param value="<%= Integer.toString(pmodule.getCurrentPage()+1) %>" />
			<fmt:param value="<%= Integer.toString(pmodule.getTotalPages()) %>" />
		</fmt:message>
<% if (pmodule.getNextOfPage()>-1 && pmodule.getCurrentPage() < pmodule.getTotalPages() -1) { %>                                    
         &nbsp;<a href="<%=request.getContextPath() %>/<%=pmodule.getUrl() %>curp=<%=pmodule.getNextOfPage() %>" ><img  border="0" src="<%= request.getContextPath() %>/images/btn_next-1.gif" width="5" height="9" alt=""/></a>
<%	} else { %>                                    
         &nbsp;<img  border="0" src="<%= request.getContextPath() %>/images/btn_next.gif" width="5" height="9" alt=""/>
<%	}  %>  
	<%-- Last Page --%> 
<%	if (pmodule.getLastOfPage()>-1 && pmodule.getCurrentPage() < pmodule.getTotalPages() -1) { %>                                    
         &nbsp;<a href="<%=request.getContextPath() %>/<%=pmodule.getUrl() %>curp=<%=pmodule.getLastOfPage() %>" ><img  border="0" src="<%= request.getContextPath() %>/images/btn_next2-1.gif" width="12" height="9" alt=""/></a>
<%	} else { %>                                    
         &nbsp;<img  border="0" src="<%= request.getContextPath() %>/images/btn_next2.gif" width="12" height="9" alt=""/>
<%	}  %>         
				</td><td align="right">&nbsp;&nbsp;&nbsp;&nbsp;
	<input id="jump_page" name="jump_page" onkeypress="javascript:return disableEnterKey(event);" class="bd" size="3" maxlength="45" value=""/> 
	<input type="submit" class="btn" name="submit_search" value="<fmt:message key="jsp.page.goto"/>"/>
	</td></tr>
			</table></td></tr>
			</tbody>
		</table>
		
		</div> 
		</form>
</div>		<% } 


分享到:
评论

相关推荐

    JSF分页组件2

    **JSF分页组件2详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建Web应用程序的MVC(Model-View-Controller)框架。在处理大量数据时,分页功能是必不可少的,它能够帮助用户更有效地浏览和管理信息。在...

    Bootstrap分页组件的设计

    Bootstrap 分页组件的设计 Bootstrap 分页组件的设计是基于 Bootstrap 前端开发框架,简单设计了前端分页控件。该组件提供了一个基本的分页控件,能够满足大多数情况下的分页需求。 分页组件的结构 分页组件的...

    ibatis_likehbm高效分页组件

    ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件 ibatis_likehbm高效分页组件 ibatis_likehbm...

    小程序自定义分页选择组件

    - 自定义样式:通过组件的自定义样式能力,开发者可以根据品牌风格调整分页组件的颜色、大小等外观属性。 - 动画效果:添加过渡动画,如滑动切换页码时的平滑效果,可以提升用户体验。 - 分页模式:支持多种分页...

    Flex 分页组件,flex自定义组件

    Flex分页组件是一种在Flex...开发者可以研究这些文件来理解组件的工作原理,学习如何在自己的项目中集成和定制该分页组件。同时,为了确保组件能正常工作,还需要进行充分的测试,确保在不同场景下的稳定性和功能性。

    比较好用的分页组件

    标题中的“比较好用的分页组件”通常指的是在软件开发中用于处理大量数据分页显示的工具或库。在Web应用开发中,由于一次性加载所有数据可能会导致性能问题,因此分页组件是必不可少的。这类组件能帮助开发者高效地...

    QT5分页组件,可以实现简单的数据分页

    通过阅读和理解这篇文章,你将能够更好地理解分页组件的实现原理,并将其应用到自己的项目中。 总结起来,QT5分页组件是通过自定义控件、信号与槽机制以及与数据模型的交互来实现的。它简化了大量数据的显示,并...

    分页组件 分页 java 代码

    很好用的 分页组件 分页 java 代码

    jquery实现分页组件

    **jQuery实现分页组件** 在Web开发中,分页是一种常见的功能,用于处理大量数据时,将内容分段展示,提高用户体验。jQuery是一款强大的JavaScript库,它简化了DOM操作、事件处理、动画制作等任务,同时也方便我们...

    基于Bootstrap样式的分页组件(可以自己改样式)

    基于Bootstrap样式的分页组件

    分页组件

    通过查看这些文件,我们可以深入理解分页组件的实现细节,并且可以根据自己的需求进行定制。 总结来说,理解并实现一个分页组件涉及到了前端和后端的知识,包括但不限于HTML、CSS、JavaScript、数据处理、API交互...

    Avuepaginationcomponent一个vue分页组件

    "Avuepaginationcomponent" 提供了一个针对Vue.js的分页组件,这使得在Vue项目中实现分页变得更加简单。 首先,我们来深入了解Vue分页组件的基本概念。在Vue.js中,组件是可复用的代码块,它们可以独立地承担特定的...

    react-一款简单的react组件实现的分页

    在React开发中,分页是常见的功能之一,用于在大量数据中进行导航。"react-一款简单的react组件实现的分页"是一个实例,它展示...通过理解React的基本概念和实践,你可以根据自己的需求定制出满足各种场景的分页组件。

    一个不错的分页组件,很简单

    标题提到的是“一个不错的分页组件”,描述中指出该组件简单易用,能有效节省开发时间,这表明我们即将探讨的是一款高效、便捷的分页解决方案。 分页组件通常包含以下几个核心功能: 1. **显示页码**:分页组件会...

    java分页组件和poolman demo

    Java分页组件是Java开发中常见的一种工具,用于在处理大量数据时,将结果集分割成多页显示,以提高用户界面的响应速度和用户体验。Oracle数据库是企业级常用的数据库系统,它支持复杂的SQL查询和大数据量的处理。在...

    qt自定义分页组件源代码

    QT自定义分页组件是软件开发中常见的设计模式,特别是在GUI应用中,用于展示大量数据时,分页能有效提高用户体验。在这个项目中,我们有`qt自定义分页组件源代码`,它包含了实现这一功能的核心源码和测试代码。下面...

    基于vue+element的分页组件

    在这个"基于vue+element的分页组件"中,开发者利用Vue.js和Element UI的强大力量,创建了一个用于后台项目分页展示的组件。 首先,Vue.js的核心在于其响应式数据绑定和组件化系统。在分页组件中,Vue.js的`data`...

    分享一个自己写的简单的javascript分页组件

    用户可以很轻松地将分页组件嵌入到他们的网页中,从而实现内容的分页显示。 在组件的HTML结构中,定义了一个UL元素,并为其分配了一个id为“pageDIV”的属性。这个id用于在JavaScript中定位这个容器,以便在其中...

    jsp分页组件(原创)

    **标题:“jsp分页组件(原创)”,描述与标签** 在IT行业中,分页是网页应用中的常见功能,尤其在处理大数据集时,它能够帮助用户有效地浏览和管理信息。这个“jsp分页组件”是一个原创的解决方案,专门用于Java ...

Global site tag (gtag.js) - Google Analytics