发现在系统中有好多写得很好的代码,也不知道是哪位前辈留下来的.整理一下...

发现在系统中有好多写得很好的代码,也不知道是哪位前辈留下来的.整理一下...
自定义分页标签库

1:在配置文件中配置



  
< taglib >
    
< taglib-uri > /WEB-INF/self-html.tld taglib-uri>
    
<taglib-location>/WEB-INF/self-html.tld taglib-location>
  
taglib>


2:在self-html.tld中page标签的配置


< tag >
        
< name > page name>
        
<tagclass>com.jbbis.netedu.common.util.taglib.PageTag tagclass>
        
<bodycontent>empty bodycontent>
        
<info>tag here info>
        
<attribute>
        
<name>name name>
        
<required>true required>
        
<rtexprvalue>false rtexprvalue>
        
attribute>    
        
<attribute>
        
<name>pageNum name>
        
<required>false required>
        
<rtexprvalue>false rtexprvalue>
        
attribute>        
        
<attribute>
        
<name>method name>
        
<required>false required>
        
<rtexprvalue>false rtexprvalue>
        
attribute>    
        
<attribute>
        
<name>methodValue name>
        
<required>false required>
        
<rtexprvalue>true rtexprvalue>
        
attribute>    
        
<attribute>
        
<name>form name>
        
<required>true required>
        
<rtexprvalue>false rtexprvalue>
        
attribute>        
        
<attribute>
        
<name>action name>
        
<required>flase required>
        
<rtexprvalue>true rtexprvalue>
        
attribute>
        
<attribute>
        
<name>returnLevel name>
        
<required>flase required>
        
<rtexprvalue>true rtexprvalue>
        
attribute>                                    
    
tag>


其实从这儿也可以看到在PageTag文件中是一些什么值了...

3:PageTag中的具体操作(精华全部在这儿啦)


/*
 * Created on 2004-6-25
 *
 
*/

package  com.jbbis.netedu.common.util.taglib;

import  java.io.IOException;

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

import  com.jbbis.netedu.common.page.NullPage;
import  com.jbbis.netedu.common.page.Page;

/**
 * 
@author leo_deng
 *
 
*/

public   class  PageTag  extends  TagSupport  {
    

    
/* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.Tag#doStartTag()
     
*/

    
private String name;
    
private String pageNum="pageNum";
    
private String method="method";
    
private String methodValue;
    
private String form="mainForm";
    
private String action;
    
private String returnLevel;
    
    
private final int CONST_FIRST=1;
    
private final int CONST_NEXT=2;
    
private final int CONST_PRIOR=3;
    
private final int CONST_LAST=4;
    
    
    
    
    
public int doStartTag() throws JspException {
        
// TODO Auto-generated method stub
        try{
            JspWriter out 
= pageContext.getOut() ;
            Page page
=(Page)pageContext.getRequest().getAttribute(name);
            
if(page==null)
                page
=NullPage.instance();
            out.print(getHtml(page.getPageNumber(),page.getPageCount()));
            out.print(getJs(page.getPageNumber(),page.getPageCount()));
            
//jspwriter是一个隐含对象,用于向jsp网页输出内容。输出的目标由
            
// pagecontext.getout提供
            
            
//向jsp网页上下文输出
          }
catch(IOException ioException){
            
throw new JspException(ioException.getMessage() );
          }
//catch
          return(SKIP_BODY);
    }

    
/*
     * <
     * 
     * 
            
            
            第      页
            
            
            共  1000
 页 
        

     *
     *  */
    
private  String getJs( int  pageNum, int  totalNum) {
        StringBuffer sb
=new StringBuffer();
        sb.append(
"/n<script language=/"JavaScript/">/n /n</script>");

        
return sb.toString();
    }

    
private void getGoJs(StringBuffer sb,int pageNum,int totalNum){
        sb.append(
"function page_go(obj){/n");
        sb.append(
"var page_number=document.getElementById(/"page_number/");/n");
        sb.append(
"if( page_number.value != new Number(page_number.value))return alert(/"请输入正确的页数/");/n");
        sb.append(
"if(page_number.value<1) page_number.value=1;if(page_number.value>");
        sb.append(totalNum);
        sb.append(
")page_number.value=");
        sb.append(totalNum);
        sb.append(
";/n");
        sb.append(
"if(page_number.value!="+pageNum+")");
        sb.append(
"submitForPageNum(obj);/n");
        sb.append(
"}");
    }

    
private StringBuffer printFunction(String function,int pageNumber,int totalNumber,int pageConst){
        StringBuffer sb
=new StringBuffer();
        sb.append(
"/nfunction "+function+"(){");
        sb.append(
"/nevent.returnValue=false;");
        sb.append(printAction());
        sb.append(printMethod());
        
//sb.append("/n"+this.form+".submit();/n}");
        if(totalNumber>1){
            
switch(pageConst){
                
case CONST_FIRST:
                    
if(pageNumber>1){
                        sb.append(printPageNum(String.valueOf(
1)));
                        sb.append(
"/n submitForPageNum("+this.form+");");
                    }

                    
break;
                
case CONST_LAST:
                    
if(pageNumber<totalNumber){
                        sb.append(printPageNum(String.valueOf(totalNumber)));
                        sb.append(
"/n submitForPageNum("+this.form+");");
                    }

                    
break;
                
case CONST_PRIOR:
                    
if(pageNumber>1){
                        sb.append(printPageNum(String.valueOf(pageNumber
-1)));
                        sb.append(
"/n submitForPageNum("+this.form+");");
                    }

                    
break;                        
                
case CONST_NEXT:
                    
if(pageNumber<totalNumber){
                        sb.append(printPageNum(String.valueOf(pageNumber
+1)));
                        sb.append(
"/n submitForPageNum("+this.form+");");
                    }

                    
break;
            }

        }

        
        sb.append(
"/n}");
        
return sb;        
    }

    
/*
    private StringBuffer printFunction(String function,String pageNum,int pageConst){
        StringBuffer sb=new StringBuffer();
        sb.append("/nfunction "+function+"(){");
        sb.append("/nevent.returnValue=false;");
        sb.append(printAction());
        sb.append(printMethod());
        sb.append(printPageNum(pageNum));
        //sb.append("/n"+this.form+".submit();/n}");

                
                sb.append("/n submitForPageNum("+this.form+");/n}");

        
        sb.append("/n}");
        
        return sb;
    }
    
*/

    
private String printAction(){
        
if(this.action!=null)
            
return ("/n"+this.form+".action=/""+action+"/";");
        
else
            
return "";
    }

    
private String printMethod(){
        
if(this.methodValue!=null)
            
return ("/n"+this.form+"."+this.method+".value=/""+this.methodValue+"/";");
        
else
            
return "";
    }
    
    
private String printPageNum(String num){
        
return "/n"+this.form+"."+this.pageNum+".value=/""+num+"/";";
    }

    
private String getHtml(int pageNum,int totalNum){
        StringBuffer sb
=new StringBuffer();
        sb.append(
"/n "page/" href=/"javascript:void(0)/" οnclick=/"page_first()/" > "public/icon/first.gif/" alt=/"首页/" align=/"absmiddle/" border=/"0/" />");
        sb.append(
"/n "page/" href='javascript:void(0)' οnclick='page_prior()' > "public/icon/previous.gif/" alt=/"上页/" align=/"absmiddle/" border=/"0/" />");
        sb.append(
"/n第 "page_number/" class=/"page_number/" name=/"pageNum/" value=/"");
        sb.append(String.valueOf(pageNum));
        sb.append(
"/"><button class='page_go' onclick='page_go(this.form);'> button>页    ");
        //sb.append("" ");
        sb.append("/n "page/" href=/"javascript:void(0)/" οnclick=/"page_next()/"> "public/icon/next_page.gif/" alt=/"下页/" align=/"absmiddle/" border=/"0/"/>");
        sb.append(
"/n "page/" href=/"javascript:void(0)/" οnclick=/"page_last()/"> "public/icon/last.gif/" alt=/"末页/" align=/"absmiddle/" border=/"0/"/>");
        sb.append(
"/n共  "page_sum/">");
        sb.append(String.valueOf(totalNum));
        sb.append(
" 页
");
        
return sb.toString();
    }


    
/**
     * 
@return Returns the pageNum.
     
*/

    
public String getPageNum() {
        
return pageNum;
    }

... ....(other getter and setter method ^_^)    
}



4:在JSP布面中导入:


<% @ taglib uri="/WEB-INF/self-html.tld" prefix="netedu"  %>


5:在JSP页面中引用:


< form  name ="newsForm"  method ="post"  action ="<%=request.getContextPath() %>/portal/newsAction.page " id="newsForm">

   
< div  class ="listbox_page" >
    
< netedu:page  name ="page"  form ="newsForm"   />
   
div>

 
form>


6:page文件




7:其它
7.1
可以注意到在标签的定义文件中用到了名为page_go的css层来美化界面,可能是出于满足不同用户对界面的不同要求所以在此没有对此css定义,你可以在JSP布面中重写此css.这儿有个可以参考一下.下载
7.2
根据标签的定义可以看到,此page应该放到form中.
7.3
根据在标签库中的


Page page = (Page)pageContext.getRequest().getAttribute(name);

语句,可见page应该在request.setAttribute("pageattribute",page);中定义.

7.4
如何通过对DB的操作得到了page ?通过DB操作可以获得一系统的data(应该注意到了在page文件夹中有个data属性,高人就是高人^_^),当然在得到这些data之前,先可能得进行一系统逻辑处理,比如说当前页码(pagenum),页长(pagesize)等等.通过这些数据就可以得到一个page实例了! ~ ~ : )

... ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值