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 的开源后台代码,任何小规模的后台管理系 ...
随机推荐
- Android AndroidRuntime类
AndroidRuntime类是安卓底层很重要的一个类,它负责启动虚拟机以及Java线程,AndroidRuntime类在一个进程中只有一个实例对象保存在全局变量,gCurRuntime中.
- iOS之延时执行(睡眠)的几种方法
1. 最直接的方法: [self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 此方式要求必须在主线程中 ...
- Linux基础介绍【第六篇】
定时任务crond介绍 crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动cro ...
- PHP 数组浅析
PHP的数组具有如下特点:1.数组初始化时无需指定长度:2.数组中的元素无需相同类型:3.数组的长度可变4.可使用var_dump(参数)或者print_r( 参数) 函数查看数组变量.5.数组内的 ...
- ABP源码分析四十二:ZERO的身份认证
ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...
- Windows操作系统下tomcat安装版图文教程
下载tomcat安装文件,官方下载地址是:http://tomcat.apache.org/,本文以tomcat-7.0.26版本为例进行安装过程的说明: 1.双击apache-tomcat-7.0. ...
- linux安装mvn后提示权限不够
Maven - 环境配置 Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK. 系统要求 项目 要求 JDK Maven 3.3 要求 JDK 1.7 或以上Maven 3 ...
- PagerSlidingTabStrip介绍及使用,让ViewPager更绚丽
转载请注明出处http://blog.csdn.net/harryweasley/article/details/42290595,谢谢. 以前一直想着,ViewPager中间的那个横线怎么跟着屏幕的 ...
- Redis系列之key操作命令与Redis中的事务详解(六)
序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...
- 6.LibSVM核函数
libsvm的核函数类型(svmtrain.c注释部分): "-t kernel_type : set type of kernel function (default 2)\n" ...