日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

自定義分頁標(biāo)簽

 昵稱12050907 2013-04-19
JAVA 代碼

<SPAN style="FONT-SIZE: medium">package com.javacrazyer.web.tag;

import java.io.IOException;
import java.util.Enumeration;

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


/**
 * 分頁標(biāo)簽處理類
 */
public class PagerTag extends TagSupport {
 private static final long serialVersionUID = 5729832874890369508L;
 private String url;         //請(qǐng)求URI
 private int pageSize = 10;  //每頁要顯示的記錄數(shù)
 private int pageNo = 1;     //當(dāng)前頁號(hào)
 private int recordCount;    //總記錄數(shù)

 @SuppressWarnings("unchecked")
 public int doStartTag() throws JspException {
  int pageCount = (recordCount + pageSize - 1) / pageSize;  //計(jì)算總頁數(shù)
  
  //拼寫要輸出到頁面的HTML文本
  StringBuilder sb = new StringBuilder();
  
  
  sb.append("<style type=\"text/css\">");
  sb.append(".pagination {padding: 5px;float:right;font-size:12px;}");
  sb.append(".pagination a, .pagination a:link, .pagination a:visited {padding:2px 5px;margin:2px;border:1px solid #aaaadd;text-decoration:none;color:#006699;}");
  sb.append(".pagination a:hover, .pagination a:active {border: 1px solid #ff0000;color: #000;text-decoration: none;}");
  sb.append(".pagination span.current {padding: 2px 5px;margin: 2px;border: 1px solid #ff0000;font-weight: bold;background-color: #ff0000;color: #FFF;}");
  sb.append(".pagination span.disabled {padding: 2px 5px;margin: 2px;border: 1px solid #eee; color: #ddd;}");
  sb.append("</style>\r\n");
  sb.append("<div class=\"pagination\">\r\n");
  if(recordCount == 0){
   sb.append("<strong>沒有可顯示的項(xiàng)目</strong>\r\n");
  }else{
   //頁號(hào)越界處理
   if(pageNo > pageCount){  pageNo = pageCount; }
   if(pageNo < 1){  pageNo = 1; }
   
   sb.append("<form method=\"post\" action=\"").append(this.url)
    .append("\" name=\"qPagerForm\">\r\n");
   
   //獲取請(qǐng)求中的所有參數(shù)
   HttpServletRequest request = (HttpServletRequest) pageContext
     .getRequest();
   Enumeration<String> enumeration = request.getParameterNames();
   String name = null;  //參數(shù)名
   String value = null; //參數(shù)值
   //把請(qǐng)求中的所有參數(shù)當(dāng)作隱藏表單域
   while (enumeration.hasMoreElements()) {
    name =  enumeration.nextElement();
    value = request.getParameter(name);
    // 去除頁號(hào)
    if (name.equals("pageNo")) {
     if (null != value && !"".equals(value)) {
      pageNo = Integer.parseInt(value);
     }
     continue;
    }
    sb.append("<input type=\"hidden\" name=\"")
      .append(name)
      .append("\" value=\"")
      .append(value)
      .append("\"/>\r\n");
   }
 
   // 把當(dāng)前頁號(hào)設(shè)置成請(qǐng)求參數(shù)
   sb.append("<input type=\"hidden\" name=\"").append("pageNo")
    .append("\" value=\"").append(pageNo).append("\"/>\r\n");
   
   // 輸出統(tǒng)計(jì)數(shù)據(jù)
   sb.append(" 共<strong>").append(recordCount)
    .append("</strong>項(xiàng)")
    .append(",<strong>")
    .append(pageCount)
    .append("</strong>頁: \r\n");
   
   //上一頁處理
   if (pageNo == 1) {
    sb.append("<span class=\"disabled\">&laquo; 上一頁")
     .append("</span>\r\n");
   } else {
    sb.append("<a href=\"javascript:turnOverPage(")
      .append((pageNo - 1))
      .append(")\">&laquo; 上一頁</a>\r\n");
   }
   
   //如果前面頁數(shù)過多,顯示"..."
   int start = 1;
   if(this.pageNo > 4){
    start = this.pageNo - 1;
    sb.append("<a href=\"javascript:turnOverPage(1)\">1</a>\r\n");
    sb.append("<a href=\"javascript:turnOverPage(2)\">2</a>\r\n");
    sb.append("&hellip;\r\n");
   }
   //顯示當(dāng)前頁附近的頁
   int end = this.pageNo + 1;
   if(end > pageCount){
    end = pageCount;
   }
   for(int i = start; i <= end; i++){
    if(pageNo == i){   //當(dāng)前頁號(hào)不需要超鏈接
     sb.append("<span class=\"current\">")
      .append(i)
      .append("</span>\r\n");
    }else{
     sb.append("<a href=\"javascript:turnOverPage(")
      .append(i)
      .append(")\">")
      .append(i)
      .append("</a>\r\n");
    }
   }
   //如果后面頁數(shù)過多,顯示"..."
   if(end < pageCount - 2){
    sb.append("&hellip;\r\n");
   }
   if(end < pageCount - 1){
    sb.append("<a href=\"javascript:turnOverPage(")
    .append(pageCount - 1)
    .append(")\">")
    .append(pageCount - 1)
    .append("</a>\r\n");
   }
   if(end < pageCount){
    sb.append("<a href=\"javascript:turnOverPage(")
    .append(pageCount)
    .append(")\">")
    .append(pageCount)
    .append("</a>\r\n");
   }
   
   //下一頁處理
   if (pageNo == pageCount) {
    sb.append("<span class=\"disabled\">下一頁 &raquo;")
     .append("</span>\r\n");
   } else {
    sb.append("<a href=\"javascript:turnOverPage(")
     .append((pageNo + 1))
     .append(")\">下一頁 &raquo;</a>\r\n");
   }
   sb.append("</form>\r\n");
 
   // 生成提交表單的JS
   sb.append("<script language=\"javascript\">\r\n");
   sb.append("  function turnOverPage(no){\r\n");
   sb.append("    if(no>").append(pageCount).append("){");
   sb.append("      no=").append(pageCount).append(";}\r\n");
   sb.append("    if(no<1){no=1;}\r\n");
   sb.append("    document.qPagerForm.pageNo.value=no;\r\n");
   sb.append("    document.qPagerForm.submit();\r\n");
   sb.append("  }\r\n");
   sb.append("</script>\r\n");
  }
  sb.append("</div>\r\n");
  
  //把生成的HTML輸出到響應(yīng)中
  try {
   pageContext.getOut().println(sb.toString());
  } catch (IOException e) {
   throw new JspException(e);
  }
  return SKIP_BODY;  //本標(biāo)簽主體為空,所以直接跳過主體
 }

 public void setUrl(String url) {
  this.url = url;
 }
 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
 }
 public void setPageNo(int pageNo) {
  this.pageNo = pageNo;
 }
 public void setRecordCount(int recordCount) {
  this.recordCount = recordCount;
 }
}</SPAN>

 
WEB-INF/pager.tld的寫法
Xml代碼
 
<SPAN style="FONT-SIZE: medium"><?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="
http://java./xml/ns/j2ee"
 xmlns:xsi="
http://www./2001/XMLSchema-instance"
 xsi:schemaLocation="
http://java./xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
 <tlib-version>0.9</tlib-version>
   <!--標(biāo)簽頭-->
 <short-name>w</short-name>
    <!--將來在頁面用taglib引用時(shí)的uri屬性,這部分的名字可以隨便寫,只要是符合HTTP網(wǎng)址形式的 -->
 <uri>http://javacrazyer./tags/pager</uri>
 
 <!-- 自定義標(biāo)簽的描述信息 -->
 <tag>
  <!-- 標(biāo)簽名 -->
  <name>pager</name>
  <!-- 對(duì)應(yīng)的標(biāo)簽處理類全限定名 -->
  <tag-class>com.javacrazyer.web.tag.PagerTag</tag-class>
  <!-- 標(biāo)簽主體的類型 -->
  <body-content>empty</body-content>
  <!-- 當(dāng)前頁號(hào)屬性的描述信息 -->
  <attribute>
   <!-- 屬性名 -->
   <name>pageNo</name>
   <!-- 該屬性是否為必要的 -->
   <required>true</required>
   <!-- 屬性值是否可以在JSP運(yùn)行時(shí)期動(dòng)態(tài)產(chǎn)生 -->
   <rtexprvalue>true</rtexprvalue>
   <!-- 屬性的數(shù)據(jù)類型 -->
   <type>int</type>
  </attribute>
  <!-- 總記錄數(shù)屬性的描述信息 -->
  <attribute>
   <name>recordCount</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>int</type>
  </attribute>
  <!-- 總頁數(shù)屬性的描述信息 -->
  <attribute>
   <name>pageSize</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>int</type>
  </attribute>
  <!-- 分頁標(biāo)簽要跳轉(zhuǎn)的URI屬性的描述信息 -->
  <attribute>
   <name>url</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>java.lang.String</type>
  </attribute>
 </tag>
</taglib></SPAN>
jsp 使用 方式:
 
 <w:pager pageSize="${pageSize}" pageNo="${pageNo}" url="do.jsp" recordCount="${pm.recordCount}"/>

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多