pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
java 后台代码实现分页 demo 实力 自己写的 标签分页
package com.cszoc.sockstore.util;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
/**
* 分页JavaBean
*
*
*/
public class PageBean {
/* 当前页 */
private int curPage=1;
/* 总记录数 */
private int totalRecord = 0;
/* 每页记录数 */
private int pageRecord = 10;
/* 是否分页,默认分页 */
private boolean paginate = true;
/* 请求的URL */
private String url;
/* 请求中的参数 */
private Map<String, String[]> parameters = new HashMap<String, String[]>();
public PageBean() {
super();
}
public PageBean(HttpServletRequest request) {
super();
this.setRequest(request);
}
/**
* 使用HttpServletRequest对象对分页Bean进行初始化
*
*/
@SuppressWarnings("unchecked")
public void setRequest(HttpServletRequest request) {
if(request.getAttribute("com.accp.book.util.PageBean")!=null)
{
PageBean p=(PageBean) request.getAttribute("com.accp.book.util.PageBean");
copy(p);
}
else
{
this.setCurPage(request.getParameter("curPage"));// 从请求中获取当前页
this.setPageRecord(request.getParameter("pageRecord"));// 从请求中获取页大小
this.setPaginate(request.getParameter("paginate"));// 获取用来判断是否分页的参数
// System.out.println("001");
// System.out.println(request.getContextPath());
// System.out.println(request.getServletPath());
// System.out.println(this);
// System.out.println(request);
// System.out.println("001");
this.setUrl(request.getContextPath() + request.getServletPath());// 获取表示请求资源的URL
this.setParameters(new HashMap<String, String[]>(request
.getParameterMap()));// 获取请求中的所有参数
}
request.setAttribute("com.accp.book.util.PageBean", this);// 将分页Bean保存request作用域当中
}
/**
* true表示进行分页
*
* @return
*/
public boolean isPaginate() {
return paginate;
}
/**
* 设置是否分页true分页,false不分页
*
* @param paginate
*/
public void setPaginate(boolean paginate) {
this.paginate = paginate;
}
/**
* 设置是否分页true分页,false不分页
*
* @param paginate
*/
public void setPaginate(String paginate) {
if (null != paginate && paginate.trim().equalsIgnoreCase("false")) {
this.setPaginate(false);
} else {
this.setPaginate(true);
}
}
public Map<String, String[]> getParameters() {
return parameters;
}
public void setParameters(Map<String, String[]> parameters) {
this.parameters = parameters;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
if (curPage > 1) {
this.curPage = curPage;
}
}
public void setCurPage(String curPage) {
if (null == curPage || curPage.trim().equals("")) {
return;
}
int acurPage = Integer.parseInt(curPage);
this.setCurPage(acurPage);
}
public int getPageRecord() {
return pageRecord;
}
public void setPageRecord(int pageRecord) {
this.pageRecord = pageRecord;
}
public void setPageRecord(String pageRecord) {
if (null != pageRecord && !pageRecord.trim().equals("")) {
this.pageRecord = Integer.parseInt(pageRecord);
}
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
/**
* 返回下一页页码
*
* @return
*/
public int getNextPageNumber() {
int nextPageNumber = this.curPage + 1;
if (nextPageNumber > this.getMaxPageNumber()) {
nextPageNumber = this.getMaxPageNumber();
}
return nextPageNumber;
}
/**
* 返回上一页页码
*
* @return
*/
public int getPreviousPageNumber() {
int previousPageNumber = this.curPage - 1;
if (previousPageNumber < 1) {
previousPageNumber = 1;
}
return previousPageNumber;
}
/**
* 返回最大页码编号
*
* @return
*/
public int getMaxPageNumber() {
int maxPageNumber = 1;
if (this.totalRecord > this.pageRecord) {
if (0 == this.totalRecord % this.pageRecord) {
maxPageNumber = this.totalRecord / this.pageRecord;
} else {
maxPageNumber = this.totalRecord / this.pageRecord + 1;
}
}
return maxPageNumber;
}
/**
* 获取起始记录下标
*
* @return
*/
public int getStartRecordIndex() {
return this.pageRecord * (this.curPage - 1);
}
public String toString() {
StringBuffer bf = new StringBuffer();
bf.append("curPage=" + curPage);
bf.append(", totalRecord=" + totalRecord);
bf.append(", pageRecord=" + pageRecord);
bf.append(", hashcode=" + hashCode());
return bf.toString();
}
private void copy(PageBean p)
{
this.curPage=p.curPage;
this.pageRecord=p.pageRecord;
this.paginate=p.paginate;
this.parameters=p.parameters;
this.totalRecord=p.totalRecord;
this.url=p.url;
}
}
html 标签前台分页
--------------------------------------------------------------------------
package com.cszoc.sockstore.util;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
/**
* 通用分页标签
*
*/
public class PageBeanTag extends BodyTagSupport {
private static final long serialVersionUID = 8450962461296575662L;
public PageBeanTag() {
super();
}
@Override
public int doStartTag() throws JspException {
PageBean pageBean = (PageBean) pageContext.getRequest().getAttribute(
"com.accp.book.util.PageBean");
if (null != pageBean && pageBean.isPaginate()) {
if(null!=pageContext.getRequest().getAttribute("reseturl"))
{
pageBean=(PageBean) pageContext.getRequest().getAttribute("reseturl");
}
try {
// System.out.println("002");
// System.out.println(pageBean.getUrl());
// System.out.println(pageBean);
// System.out.println("002");
pageContext.getOut().write(toHTML(pageBean));
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
pageContext.getRequest().removeAttribute("com.accp.book.util.PageBean");
return SKIP_BODY;
}
/* 将分页JavaBean转换成HTML字符串 */
private String toHTML(PageBean pageBean) {
// 保存请求的参数到一个表单对象中,以供下次查询使用
StringBuffer bf = new StringBuffer();
bf.append("<form name='pageBeanForm' action='" + pageBean.getUrl()
+ "' method='post'>");
bf.append("<input type='hidden' name='curPage' value=''/>");// 当前页是目前是空,但在点击分页按钮时会进行设置
Map<String, String[]> parameters = pageBean.getParameters();// 请求中的所有参数
String paramName = null;
String[] paramValues = null;
Iterator it = parameters.keySet().iterator();
while (it.hasNext()) {
paramName = (String) it.next();// 参数名
if ("curPage".equals(paramName)) {
continue;// 把当前页参数忽略掉
}
paramValues = parameters.get(paramName);// 参数值
for (int i = 0; null != paramValues && i < paramValues.length; i++) {
bf.append("<input type='hidden' name='" + paramName
+ "' value='" + paramValues[i] + "'/>");
}
}
bf.append("</form>");
// 显示分页按钮
//bf.append("每页 " + pageBean.getPageRecord() + " 行");
//bf.append(" 共 " + pageBean.getTotalRecord() + " 行");
//bf.append(" 第 " + pageBean.getCurPage() + " 页");
//bf.append(" 共 " + pageBean.getMaxPageNumber() + " 页");
bf.append("<div class='page_div'><ul class='ulfleft ht_page'>");
bf.append("<li class='ht_li1'>第"+pageBean.getCurPage()+"页/共"+pageBean.getMaxPageNumber()+"页</li><li class='ht_page_bg1'><a href='javascript:gotoPage(" + 1 + ")'>首页</a></li>"+" ");
if(pageBean.getCurPage()!=1){
bf.append(" "+" <li class='ht_page_bg1'><a href='javascript:gotoPage("
+ pageBean.getPreviousPageNumber() + ")'>上一页</a></li>"+" ");
}
if(pageBean.getCurPage()<=3)
{
if(pageBean.getMaxPageNumber()<=3)
{
for(int i=1;i<=pageBean.getMaxPageNumber();i++)
{
if(pageBean.getCurPage()==i)
{
bf.append(" "+" <li class='li_hover'><a href='javascript:gotoPage("+ i + ")'>"+i+"</a></li>"+" ");
i+=1;
}
if(pageBean.getMaxPageNumber()>=i){
bf.append(" "+" <li ><a href='javascript:gotoPage("
+ i + ")'>"+i+"</a></li>"+" ");
}
}
}
else
{
for(int i=1;i<=3;i++){
if(pageBean.getCurPage()==i){
bf.append("<li class='li_hover'>"+i+"</li>");
i+=1;
}
if(pageBean.getMaxPageNumber()>=i){
bf.append(" "+"<li > <a href='javascript:gotoPage("
+ i + ")'>"+i+"</a></li>"+" ");
}
}
}
}
if(pageBean.getCurPage()<pageBean.getMaxPageNumber()-3&&pageBean.getCurPage()>3&&pageBean.getMaxPageNumber()>=3)
{
for(int i=pageBean.getCurPage()-2;i<=pageBean.getCurPage()+2;i++)
{
if(pageBean.getCurPage()==i)
{
bf.append("<li class='li_hover'>"+i+"</li>");
i+=1;
}
bf.append(" "+" <li ><a href='javascript:gotoPage("
+ i + ")'>"+i+"</a></li>"+" ");
}
}
if(pageBean.getCurPage()>=pageBean.getMaxPageNumber()-3&&pageBean.getMaxPageNumber()>=3&&pageBean.getCurPage()>3){
for(int i=pageBean.getMaxPageNumber()-3;i<=pageBean.getMaxPageNumber();i++){
if(pageBean.getCurPage()==i){
bf.append("<li class='li_hover'>"+i+"</li>");
i+=1;
}
if(pageBean.getMaxPageNumber()>=i){
bf.append(" "+"<li > <a href='javascript:gotoPage("
+ i + ")'>"+" "+i+" "+"</a></li>"+" ");
}
}
}
if(pageBean.getCurPage()!=pageBean.getMaxPageNumber()){
bf.append(" "+"<li class='ht_page_bg1'> <a href='javascript:gotoPage("
+ pageBean.getNextPageNumber() + ")'>下一页</a></li>"+" ");
}
bf.append(" "+" <li class='ht_page_bg1'><a href='javascript:gotoPage("
+ pageBean.getMaxPageNumber() + ")'>末页</a></li>");//</ul></div>
bf.append(" "+" <li class='ht_page_bg1'><a href='javascript:jumpPage();'>跳转</a> </li>");
bf.append(" "+" <li class='ht_page_bg2'>到<input type='text' class='fenye_txt' id='pageNumber'>页</li></ul></div>");
//bf.append(" 页数 <input type='text' id='pageNumber' style='width:20px;' /> <a href='javascript:jumpPage()'>GO</a>");
// 动态生成js
bf.append("<script>");
bf
.append("function gotoPage(curPage){document.pageBeanForm.curPage.value=curPage;document.pageBeanForm.submit();}");
bf.append("var maxPageNumber =" + pageBean.getMaxPageNumber() + ";");
bf
.append("function jumpPage(){var curPage=document.getElementById('pageNumber').value;if(curPage==''||isNaN(curPage)||parseInt(curPage)<1||parseInt(curPage)>maxPageNumber){alert('请输入一个正确的页码');return;}gotoPage(curPage);}");
bf.append("</script>");
return bf.toString();
}
}
pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页的更多相关文章
- 学数据库你竟然不用用JAVA写代码,可惜你遇到了我! JAVA连接数据库(JDBC)的安装使用教程
Step 1 你得有Eclipse 没有出门右拐,我教不了你. Step 2 你得有Mysql MySQL的详细安装过程,我在另一篇博客中给出.戳我 Step 3 安装JDBC 可以去官网下,如果用的 ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- [转载] 常用 Java 静态代码分析工具的分析与比较
转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代 ...
- 【转载】常用 Java 静态代码分析工具的分析与比较
摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后 ...
- Java native代码编译步骤简书
Java native代码编译步骤简书 目的:防止java代码反编译获取密码算法 (1)编写实现类com.godlet.PasswordAuth.java (2)编译java代码javac Passw ...
- 常用Java静态代码分析工具的分析与比较
给国产静态代码检测工具Pinpoint打Call! 简介 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了4种现有的主流Java静态代码分析工具 (Checkstyle,FindBugs ...
- C#夯实基础之多线程二:主线程、前台线程与后台线程
我们在<C#夯实基础之多线程一:初识多线程>一文中第二部分中指出,既然windows最终发展出了多线程模型,按理说,我们直接使用一个.NetFramework的线程类就可以直接撸代码了,但 ...
- Java中的break,continue关于标签的用法(转载)
Java的控制循环结构中是没有关键字goto的,这种做法有它的好处,它提高了程序流程控制的可读性,但是也有不好的地方,它降低了程序流程控制的灵活性,所以说,“上帝是公平的”.所以,Java为了弥补这方 ...
- 8人/天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整开源于 Github)
Github: https://github.com/iccb1013/Jade.Net 我们只消耗了8人/天的时间,完成了全部工作,基于我们 Jade.Net 的开源后台代码,任何小规模的后台管理系 ...
随机推荐
- 一点公益商城开发系统模式Ring Buffer+
一个队列如果只生产不消费肯定不行的,那么如何及时消费Ring Buffer的数据呢?简单的方案就是当Ring Buffer"写满"的时候一次性将数据"消费"掉. ...
- 关于asp.net利用mono部署到Linux上的一些说明
linuxdot.net社区群:102732979(如果你认为你已经在.NET跨平台方面有足够的经验,请参加这个群:103810355). 其中有各种大神,嘿嘿,如果你有问题可以来咨询,完全无偿的免费 ...
- MVVM大比拼之avalon.js源码精析
简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...
- Linux简单指令操作
Linux CentOS运维中,常用的操作和命令记录下: 1.DNS设置 在Linux服务器上,当我们ping出现这个错误时:ping: unknown host,很大可能是系统的DNS没有设置或者设 ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- jQuery UI与jQuery easyUI的冲突解决办法
jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...
- setTimeout那些事儿
一.setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序. 但是,不知道大家有疑问没——就是我们 ...
- 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
Oracle 11G RAC集群安装(七) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总. ...
- SSE指令集学习:Compiler Intrinsic
大多数的函数是在库中,Intrinsic Function却内嵌在编译器中(built in to the compiler). 1. Intrinsic Function Intrinsic Fun ...
- SSM项目搭建(提供源码)
1创建web动态项目,项目结构截图 2.配置日志文件 #\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B log4j.rootLogger=INFO,Console,Fi ...