当前位置:  编程技术>java/j2ee

JSP自定义分页标签TAG全过程

    来源: 互联网  发布时间:2014-10-20

    本文导语:  首先我们需要在WEB-INF/tld/目录下创建page.tld文件 1.0 1.2 page http://www.kevin.com/taglibs/page htmlPage com.lss.common.tag.PageTag JSP htmlPage Tag pageNo false true pageSize false true totalSum true true url true ...

首先我们需要在WEB-INF/tld/目录下创建page.tld文件

 
 
1.0 
1.2 
page 
http://www.kevin.com/taglibs/page 
 
htmlPage 
com.lss.common.tag.PageTag 
JSP 
htmlPage Tag 
 
pageNo 
false 
true 
 
 
pageSize 
false 
true 
 
 
totalSum 
true 
true 
 
 
url 
true 
true 
 
 
showPage 
false 
true 
 
 
package com.lss.common.tag; 

import java.io.IOException; 

import javax.servlet.jsp.JspException; 
import javax.servlet.jsp.JspWriter; 
import javax.servlet.jsp.tagext.TagSupport; 

import com.lss.common.page.HtmlPage; 
import com.lss.common.page.Page; 
import com.lss.common.page.VariablePage; 

/** 
* 分页处理标签 
* 
* @description 
* @DATE 2012-3-11下午09:08:46 
*/ 
public class PageTag extends TagSupport { 
private int pageNo; 
private int pageSize = 10; 
private int totalSum; 
private int showPage = 10; 
private String url; 

public int getPageNo() { 
return pageNo; 
} 

public void setPageNo(int pageNo) { 
this.pageNo = pageNo; 
} 

public int getPageSize() { 
return pageSize; 
} 

public void setPageSize(int pageSize) { 
this.pageSize = pageSize; 
} 

public int getTotalSum() { 
return totalSum; 
} 

public void setTotalSum(int totalSum) { 
this.totalSum = totalSum; 
} 

public int getShowPage() { 
return showPage; 
} 

public void setShowPage(int showPage) { 
this.showPage = showPage; 
} 

public String getUrl() { 
return url; 
} 

public void setUrl(String url) { 
this.url = url; 
} 

@Override 
public int doEndTag() throws JspException { 
if (pageSize == 0) { 
return TagSupport.SKIP_PAGE;// 不显示分页 
} else if (pageSize > totalSum) { 
return TagSupport.SKIP_BODY;// 不显示分页 
} 
JspWriter out = pageContext.getOut(); 
try { 
if (url.indexOf(";jsessionid=") == -1) { 
if (url.indexOf("?") == -1) { 
url += ";jsessionid=" + pageContext.getSession().getId() + "?pageNo="; 
} else { 
url = url.replaceFirst("\?", ";jsessionid=" + pageContext.getSession().getId() + "?"); 
if (url.indexOf("pageNo=") == -1) { 
url += "&pageNo="; 
} 
} 
} 
url = pageContext.getServletContext().getContextPath() + url; 
VariablePage variablePage = new VariablePage(pageNo, totalSum, pageSize, url); 
variablePage.setShowPageNum(showPage); 
Page page = new HtmlPage(variablePage); 
out.print(page.getFirstNo() + " " + page.getBackpageNum() + " " + page.pagination() + " " + page.getNextpageNum() + " " + page.getLastNo()); 
} catch (IOException ex) { 
ex.printStackTrace(); 
} 
return super.doEndTag(); 
} 

@Override 
public void release() { 
url = null; 
pageNo = 0; 
totalSum = 0; 
pageSize = 10; 
super.release(); 
} 

private static final long serialVersionUID = -2642907859641024483L; 
}

/** 
* HTML 分页类 
* 
* @description 
* @DATE 2012-3-11下午10:33:14 
*/ 
public class HtmlPage extends Page { 
public HtmlPage(VariablePage variablePage) { 
super(variablePage); 
} 

public String pagination() { 
String printNo = ""; 
// 如果已分页;并且页数小于等于要显示的页数 
if (variablePage.totalPage > 1 && variablePage.totalPage  1 && variablePage.totalPage > variablePage.showPageNum) { 
if (variablePage.pageNo == 1) {// 当前页等于第一页 
return fromFirstPagePrint(); 
} else if (variablePage.pageNo == variablePage.totalPage) {// 当前页等于最后一页 
return fromLastPagePrint(); 
} else {// 如果当前页:即不是首页也不是尾页 
if (variablePage.showPageNum % 2 == 0) {// 可以平分页码 
int print$No = variablePage.showPageNum / 2; 
if (variablePage.pageNo >= print$No) { 
int index$No = variablePage.pageNo - print$No; 
if (variablePage.pageNo + print$No >= variablePage.totalPage) { 
return fromLastPagePrint(); 
} else { 
if (index$No == 0) 
index$No = 1; 
for (int i = index$No; i < (variablePage.showPageNum + index$No); i++) { 
if (i == variablePage.pageNo) {// 如果是当前页:不添加连接URL 
printNo += (i + variablePage.split); 
} else { 
printNo += (buildA(variablePage, i) + variablePage.split); 
} 
} 
} 
} else { 
return fromFirstPagePrint(); 
} 
} else {// 打印页数不是偶数时: 
int print$No = variablePage.showPageNum / 2 + 1; 
if (variablePage.pageNo >= print$No && variablePage.pageNo + print$No < variablePage.totalPage) { 
int index$No = variablePage.pageNo - print$No + 1; 
for (int i = index$No; i < variablePage.showPageNum + index$No; i++) { 
if (i == variablePage.pageNo) {// 如果是当前页:不添加连接URL 
printNo += (i + variablePage.split); 
} else { 
printNo += (buildA(variablePage, i) + variablePage.split); 
} 
} 
} else if (variablePage.pageNo 

    
 
 

您可能感兴趣的文章:

  • 谁能告诉我从web html到j2ee做网站的全过程主要有几步。是不html-->jsp-->sevrlet-->javabean-->jdbc-->j2ee吧。不对的请指证,最好是那
  • 有谁说说jsp中的变量与函数定义
  • 关于bean和jsp预定义中的小问题
  • jsp中怎样定义全局变量
  • 在写自定义标签时,如何得到引用当前标签的jsp文件名呢?
  • JSP页面中能定义文件输出流变量吗?
  • JSP教程(三)--JSP中”预定义变量”的使用
  • 请问在jsp中是不是不允许有自定义的函数呀?
  • 请问JSP中如何调用自己定义的类包?谢谢!
  • 高分求助关于jsp自定义函数的问题
  • 在JSP中多维数组如何定义,初始化?救命呀!
  • JSP怎么定义日期变量并赋值
  • 请问如何在jsp中定义函数?
  • 请教:为什么在<%!...%>内部定义的函数不能用jsp页面缺省的对象如:out,request,session,等。
  • 在线给分:在jsp页面内部能不能定义字函数或者类来调用
  • JSP自定义标记符库的*.tld XML文件应放在什么地方
  • 在jsp中调用另一个自定义的java类
  • jsp自定义标签之ifelse与遍历自定义标签示例
  • jsp中定义和使用方法示例介绍
  • 一个关于JSP自定义标签的问题.急!!!
  • JSP 自定义标签之一 简单实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用JSP扩展标签,可否从标签内得到一个输出参数?
  • JSP表格标签库 WebJMX
  • 请高手指点,怎样学习JSP标签库,一定给分,不够在加!
  • JSP标签库 Coldtags
  • JSP 标签库集合 Taglibs
  • Google地图JSP标签库
  • JSP 标准标签库 JSTL
  • JSP标签 Noka Tag
  • JSP标签库 AjaxTags
  • JSP加密标签库 JCE taglib
  • 如何在html标签的属性里引用一个jsp变量
  • jsp 常用标签的使用
  • 简单!如果网页的内容为HTML标签和JAVASCRIPT代码,那应该将该文件保存为.jsp还是
  • JSP分页标签库 Pager Tag Library
  • JSP分页标签库 Pager-taglib
  • 在编译使用扩展标签的java文件时,得到package javax.servlet.jsp does not exist,package javax.servlet.jsp does not exist的错误
  • JSP表格标签库 eXtremeTable
  • jsp页面中如何将时间戳字符串格式化为时间标签
  • (在线)高分求解:Jdk1.3找不到javax.servlet.jsp.*包,编译不了标签库文件。
  • ExtJS的JSP标签库 ExtTag
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3