⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splitpage.java

📁 Jsp分页标签,非常方便 Jsp分页标签,非常方便 Jsp分页标签,非常方便
💻 JAVA
字号:
package com.yiwu.bbs.common;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

/**通用分页标签;
 *@author 周盼;
 *@version 1.1;
 *@param	customparam 自定义参数,适应于筛选条件下的分页情况
 */
public class splitPage extends TagSupport
{
    /**
	 * 
	 */
	private static final long serialVersionUID = -4039734773981194291L;
	private int curPage = 1; 																			//当前页
    private int PageCount = 1;																			//总页数
    private String pageSize = "10";																	//分页大小
    public void setPageSize(String pageSize){this.pageSize = pageSize;}
    private int jg = 5; 																				//间隔
    public void setJg(int jg) {this.jg = jg;}
    private String count = ""; 																		//记录总数
    public void setCount(String count){this.count = count;}
    private String txtStyle = null;
    private String tmp_txtStyle;
    private String tmp_aStyle;
    private String url = "";
    private String customparam="";
    public void setCustomparam(String customparam){this.customparam = customparam;}
    private String aStyle = null;
    
    public void setTxtStyle(String txtStyle){
        this.txtStyle = txtStyle;
    }
   
    public void setaStyle(String aStyle){
        this.aStyle = aStyle;
    }   
    
    private String str(int i)
    {			
    	if (curPage == i)																				//当前页判断
    		return "<font color=red " + tmp_txtStyle + "><b>" + i + "</b></font> ";
		else
			return "<a href=?page=" + i + url + tmp_aStyle + ">" + i + "</a> ";					//非当前页	
	}
    
    private String PageCode() 																			//需要循环页码部分
    	{
    		StringBuffer SplitPageContent = new StringBuffer();
    		int i;
			if (curPage <= jg) 																			// 前N页
			{
				int tempNum = PageCount < jg * 2 ? PageCount: jg * 2;
				for (i = 1; i <= (tempNum); i++)
					SplitPageContent.append(str(i));
			}
			else if ((curPage + jg) > PageCount) 														// 后N页
			{
				int tempNum = PageCount - jg * 2 + jg / 2 - 1;
				tempNum = tempNum < 1 ? 1 : tempNum;
				for (i = (tempNum); i <= (PageCount); i++)
					SplitPageContent.append(str(i));
			}
			else																						// 中间页
				for (i = (curPage - jg); i <= (jg + curPage - 1); i++)
					SplitPageContent.append(str(i));				
			return SplitPageContent.toString();
    	}
   
    private String SelectMenu()																		//分页标签输入端信息
	{
    	StringBuffer s = new StringBuffer();
		s.append("<script>function gxw(sform,evnt){if(evnt.keyCode==13)checksearch(sform,evnt); } function checksearch(sform,evnt){"				
				+"sform=sform.pagenum;if(sform.value==\"\" || sform.value==\"0\"){"
				+"alert('请输正确入页数!');sform.value='';sform.focus();return false;}" 
				+"\nif(isNaN(sform.value)){alert('请输入数字!');sform.value='';sform.focus();return false;}"
				+ "pages=(parseInt(sform.value)>"+PageCount+")?"+PageCount+":sform.value;"
				+"pages=(pages<1)?1:pages;location=\"?page=\" + pages + \""+ this.url +"\";return false;}</script>");
		s.append("<form action='#'style='display:inline' onsubmit='return false;'>到第<input name='pagenum' id='pagenum' type='text' size='3' maxlength='3' onkeypress='gxw(this.form,event)'/>&nbsp;页");
		s.append("<input type='image' src='/bbs/img/btn_ok.gif' onclick='checksearch(this.form,event);' " 
				+"alt='翻指定的页码' title='翻指定的页码' class='handcursor'/></form>");
		return s.toString();
	}
    
    private String ShowSplitPageInfoAndStyleA()														//分页标签A端信息
    	{

    		StringBuffer retStr = new StringBuffer();
    		retStr.append("<font" + tmp_txtStyle + ">共有" + (PageCount) + "页 " + count + "条记录");
//    		retStr.append("<font face=Webdings><a href=?page=1&" + url + "" + tmp_aStyle 
//    						+ ">9</a> <a href=?page=" + (curPage<=1?1:curPage - 1)	+ "&"
//    						+ url + tmp_aStyle + ">7</a></font> ");
    		retStr.append("<a href=?page=1" + this.url + "" + tmp_aStyle 
					+ "><img src='/wholesale/images/icon4.jpg' title='第一页'/></a> <a href=?page=" + (curPage<=1?1:curPage - 1)
					+ this.url + tmp_aStyle + "><img src='/wholesale/images/icon.jpg' title='上一页'/></a>");    
    		return retStr.toString();
    	}
    
    private String ShowSplitPageInfoAndStyleC()														//分页标签C端信息
    {
    	StringBuffer retStr = new StringBuffer();
    	retStr.append("<a href=?page="+ (curPage>=PageCount?PageCount:curPage + 1)+ this.url +tmp_aStyle
    			+ "><img src='/wholesale/images/icon2.jpg' title='下一页'/></a> <a href=?page="
    			+ PageCount + this.url + tmp_aStyle+ "><img src='/wholesale/images/icon3.jpg' title='第后一页'/></a>");
    	return retStr.toString();
    }
    
    @Override
	public int doStartTag()
    {
    	long recordsetCount = Function.CheckNumber(count);
    	int tmp_pageSize = (int) Function.CheckNumber(pageSize);
		if (recordsetCount <= tmp_pageSize)
			return EVAL_BODY_INCLUDE;
		else
		{
			try
			{
				tmp_txtStyle = (txtStyle == null) ? "" : " class=" + txtStyle + " ";				
				tmp_aStyle = (aStyle == null) ? "" : " class=" + aStyle;								// 创建样式字符
				String[] RexString = { "((^page|&page)=\\d*)&{0,1}","\\d*" };
				HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
				String urlAll = request.getQueryString();												// 原始字符
				url = Function.RexReplace(RexString[0], urlAll);									//链接追加字符
				if(url==null||url.equals("")){
					if(customparam!=null&&!customparam.equals("")){
						url="&"+customparam;
					}
				}else{
					if(customparam!=null&&!customparam.equals("")){
						String[] t=customparam.split("=");
						if(t.length>0){
							int start=url.indexOf(t[0]);
							if(start>=0){
								url="&"+Function.RexReplace(url.substring(start),url)+customparam;
							}else{
								url="&"+url+"&"+customparam;
							}
						}						
					}
				}

				String tmp_page = Function.RexRetString(RexString[0],urlAll, "'");						//取出所有符合匹配模式的参数
				String[] tmp_ary = tmp_page.split("\\'");
				if (tmp_ary.length >= 1)
					curPage = (int) Function.CheckNumber(Function.RexRetString(RexString[1], tmp_ary[0],""));
				float sCount = recordsetCount;
				float sPageCount = (sCount / tmp_pageSize);												//带余数的页数
				PageCount = (int) (sCount / tmp_pageSize);												//整数页数
				PageCount = sPageCount > PageCount ? PageCount + 1: PageCount;							//如果有余数则取整+1
				if (curPage <= 0)
					curPage = 1;
				else if (curPage >= PageCount)
					curPage = PageCount;
				/*==========================组装分页标签=============================*/
				JspWriter out = pageContext.getOut();		
				out.append("<div class='pagechange'>");
				out.append(ShowSplitPageInfoAndStyleA());												//写入分页标签A端部分
				out.append("&nbsp;"+PageCode()+"&nbsp;");																	//写入分页标签中间部分
				out.append(ShowSplitPageInfoAndStyleC());												//写入分页标签C端部分
				out.append(SelectMenu());																//写入跳转菜单
				out.append("</div>");
			} catch (Exception e){
				System.out.print(e.getMessage());
			}
		}
		return (EVAL_BODY_INCLUDE);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -