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 的开源后台代码,任何小规模的后台管理系 ...
随机推荐
- 使用nginx反向代理,一个80端口下,配置多个微信项目
我们要接入微信公众号平台开发,需要填写服务器配置,然后依据接口文档才能实现业务逻辑.但是微信公众号接口只支持80接口(80端口).我们因业务需求需要在一个公众号域名下面,发布两个需要微信授权的项目,怎 ...
- Yeoman 学习笔记
yoeman 简介:http://www.infoq.com/cn/news/2012/09/yeoman yeoman 官网: http://yeoman.io/ yeoman 是快速创建骨架应用程 ...
- 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录
一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...
- [DeviceOne开发]-手势动画示例分享
一.简介 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手 ...
- C++ std::list
std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...
- Centos6.5中安装和配置vsftp详细总结
一.vsftp安装篇 #查看是否安装:rpm -qa|grep vsftpd#卸载vsftpdrpm -e vsftpd-2.2.2-11.el6_3.1x86_64 --nodeps# 安装vsft ...
- salesforce 零基础学习(五十七)Test 类中创建TestUser帮助类
我们写Test Class的时候往往都需要指定一个uesr去run test method. TestUserHelper类如下: public class TestUserHelper { publ ...
- 安卓与IOS移动段浏览器视频与音频的问题与总结
1. 安卓.苹果移动浏览器上都不支持html5的视频与音频自动播放 2. 安卓.苹果移动浏览器要支持播放,前提是必须是用户触发的事件 3. 针对这个特殊的问题,代码需要在用户进来第一次屏幕触发中,去创 ...
- angular2系列教程(四)Attribute directives
今天我们要讲的是ng2的Attribute directives.顾名思义,就是操作dom属性的指令.这算是指令的第二课了,因为上节课的components实质也是指令. 例子
- PhoneGap/cordvoa如何添加Media插件
phonegap由2.7升级到3.7之前,只要引入一个cordova.js,就可以了.现在由于所用的插件,都需要用模块的形式进行按需加载,自然就没有以前那么安逸了. 例如,如果要在安卓平台添加一个音频 ...