相当强的分页,表格生成的JSP自定义标签

 分页控制器(可能是这个名字),是仿主流论坛的分页做的,JS输入页码,半年前做着玩的的,有些东西记不太清了,反正里面好东西不少,难度适中,嘿嘿。。。

分页类:


import  java.util.List;

public   class  PaginationMethod  {

    
private int totalpage;
    
private int back;
    
private int next;
    
private boolean backbool;
    
private boolean nextbool;
    
private int thispage;
    
private int scrollrow;
    
public static List list;
    
private boolean error;
    
private int startpage;
    
private int endpage;
    
private int inputpage;

    
public PaginationMethod(int thispage,int scrollrow,List list) {
        
// TODO Auto-generated constructor stub
        
        
if(thispage<1)
            
this.thispage = 1;
        
else 
            
this.thispage = thispage;
        
        
if(scrollrow<1)
            
this.scrollrow = 5;
        
else 
            
this.scrollrow = scrollrow;
        
        
this.list = list;
    }

    
    
//得到总页数
    public int getTotalpage(){
        
this.totalpage = this.getListsize()/this.scrollrow;

        
if(getListsize() % scrollrow !=0)
            totalpage
++;

        
return totalpage;
    }


    
    
public int getThispage() {
        
return thispage;
    }


    
public void setThispage(int thispage) {
        
this.thispage = thispage;
    }

    
    
//得到总行数
    public int getListsize() {
//        if(this.list.size()<1 || this.list==null)
//            this.error = false;
        return PaginationMethod.list.size();
    }

    
//    public void setListsize(int listsize) {
//    this.listsize = listsize;
//}

    
//判断上一页动作是否会造成越界
    public boolean isBackbool() {
        
if(this.thispage==1)backbool = false;
        
else backbool = true;
        
return backbool;
    }


//    public void setUppagebool(boolean uppagebool) {
//        this.uppagebool = uppagebool;
//    }

    
//判断下一页动作是否会造成越界
    public boolean isNextbool() {
        
if(this.thispage==this.getTotalpage())nextbool = false;
        
else nextbool = true;
        
return nextbool;
    }

    
//    public void setDownpagebool(boolean downpagebool) {
//    this.downpagebool = downpagebool;
//}

    
//执行下一页动作
    public int getBack() {
        
if(this.isBackbool())
            
this.back = this.getThispage()-1;
        
else back = this.getThispage();
        
return back;
    }


//    public void setBack(int back) {
//        this.back = back;
//    }

    
//执行上一页动作
    public int getNext() {
        
if(this.isNextbool())
            
this.next = this.getThispage()+1;
        
else next = this.getThispage();
        
return next;
    }


//    public void setNext(int next) {
//        this.next = next;
//    }

//起始页
    public int getStartpage() {
        
if(this.thispage<0)thispage=1;
        startpage 
= (thispage-1* this.scrollrow;
        
return startpage;
    }


    
public void setStartpage(int startpage) {
        
this.startpage = startpage;
    }


//结束页
    public int getEndpage() {
        endpage 
= this.getStartpage() + this.scrollrow;
        
if(endpage>this.getListsize())
            endpage 
= this.getListsize();
            
        
return endpage;
    }


    
public void setEndpage(int endpage) {
        
this.endpage = endpage;
    }


//JS输入的页码
    public int getInputpage() {
        
if(inputpage>this.getListsize())
        
{inputpage = getListsize();}
        
else if(inputpage<1)
        
{inputpage = 1;}
        
else {inputpage = thispage;}
        
        
return inputpage;
    }


    
public void setInputpage(int inputpage) {
        
this.inputpage = inputpage;
    }


    
public int getScrollrow() {
        
return scrollrow;
    }


    
public void setScrollrow(int scrollrow) {
        
this.scrollrow = scrollrow;
    }


}

 

表格自动生成标签:


import  java.awt.Color;
import  java.io.IOException;
import  java.util.List;

import  javax.servlet.ServletRequest;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.jsp.JspWriter;
import  javax.servlet.jsp.PageContext;
import  javax.servlet.jsp.tagext.SimpleTagSupport;

import  com.***.TableTagResult;//JDBC的结果集,返回List

public   class  TableTag  extends  SimpleTagSupport  {

    
private String order;

    
private String update;

    
private String delete;

    
private String[] sqlparams;
    
private String[] css;
    
private String[] javascript;
    
private String style;
    
private String[] title;
    
private String classhtm;  
    
    
private StringBuffer strbuf;

    
private List listrow;
    
private List listcol;

//    private boolean title = false;

    
private boolean edit = false;

    
private PaginationMethod pm;

    
public TableTag() {
        
// TODO Auto-generated constructor stub

    }


    
public void doTag() {

        PageContext pc 
= (PageContext) this.getJspContext();
        TableTagResult ttr 
= new TableTagResult("select * from roysched");
        
this.listrow = ttr.getTableResultRow();
        
this.listcol = ttr.getTableResultCol();
        pm 
= new PaginationMethod(15, listrow);
        
        ServletRequest request 
= pc.getRequest();
        String page 
= request.getParameter("pageID");
        
if (page == null || page == "" || page.length()<1)
            page 
= "1";
        
char[] ch = page.toCharArray();
        
for(char n:ch){
            
if(Character.getNumericValue(n)>9 || Character.getNumericValue(n)<1){
                page 
= String.valueOf(pm.getThispage());
            }

        }

        
if(Integer.parseInt(page) > pm.getTotalpage())
                page 
= String.valueOf(pm.getTotalpage());
            
else if(Integer.parseInt(page) < 1)
                page 
= "1";

        pm.setThispage(Integer.parseInt(page));
        System.out.println(
"pm.getThispage()====" + pm.getThispage());
        pm.list 
= this.listrow;

        
this.update = "修改";
        
this.delete = "删除";
        
try {
            JspWriter out 
= getJspContext().getOut();
            
//            if(this.getJavascript() != null){
//            for(String n:this.getJavascript())
//                out.print("<script type="text/javascript" src=""+n+""></script>");
//            }
            out.print(this.getClasshtm());
            
            
if(this.getCss() != null){
            
for(String n:this.getCss())
                out.print(
"<link rel="stylesheet" type="text/css" href=""+n+"">");
            }

            
            out.print(
"<div>");
            out
                    .print(
"<table border="1" align="center" cellspacing="1" cellpadding="1" style=""+this.style+"" width="80%">");
            out.print(
"标签生成的表格");
            
            
if (this.getTitle() == null || getTitle().length<0){
                
for(int i=0;i<this.listcol.size();i++){
//                    out.print("<th align="center" valign="middle">"
//                            + listcol.get(i));
//                    out.print("</th>");
                    out.print("<th>");
                    out.print(
"<input type="button" name="title" value=""+listcol.get(i)+"" />");
                    out.print(
"</th>");
                }

                    
                }
else {
                    
for (String n:getTitle()) {
//                        out.print("<th align="center" valign="middle">"
//                                + n);
//                        out.print("</th>");
                        out.print("<th>");
                        out.print(
"<input type="button" name="title" value=""+n+"" class="but"/>");
                        out.print(
"</th>");
                    }

                }

            
if (this.isEdit()){
                    out
                    .print(
"<th colspan="2" align="center" valign="bottom">"
                            
+ "编辑");
                    out.print(
"</th>");
                    }

                
            
            
for (int i = pm.getStartpage(); i < pm.getEndpage()-1; i++{
                out.print(
"<tr>");
                List list1 
= (List) pm.list.get(i);
                
for(int j=0;j<list1.size();j++){

                    out
                            .print(
"<td align="center">"
                                    
+ list1.get(j).toString());
                    out.print(
"</td>");
                }

                
if (this.isEdit()) {
                    out.print(
"<td align="center">");
                    out.print(
"<a href="#?updateID=" + i + "">" + update
                            
+ "</a>");
                    out.print(
"</td>");
                    out.print(
"<td align="center">");
                    out.print(
"<a href="#?deleteID=" + i + "">" + delete
                            
+ "</a>");
                    out.print(
"</td>");
//                    out.print("</tr>");
                }

            
        }

//            if (this.getTitlebool()){
//                out.print("<td colspan="" + this.colparams.length + 1
//                        + "" align="right">");
//            out.print("</td>");
//            }
            if (pm.getTotalpage() < 2{
                out.print(
"<tr>");
                out.print(
"<b>共1页</b>");
                out.print(
"</tr>");
            }
 else {
                out.print(
"<tr>");
                out.print(
"<td colspan=""+(this.listcol.size()+2)+"" align="right">");
                
if(pm.getThispage()>1)
                out.print(
"<a href="temp.jsp?pageID=1" style="font-weight:bold">&laquo;</a>&nbsp;");
                
if(pm.getThispage()>1){
                    
for(int i=pm.getThispage()-2;i<pm.getThispage();i++){
                        
if(i>=1)
                        out.print(
"&nbsp;<a href="temp.jsp?pageID="+i+"">"+i+"</a>&nbsp;");
                    }

                }

                out.print(pm.getThispage());
                
if(pm.getThispage()<pm.getTotalpage())
                
for(int i=pm.getThispage()+1;i<pm.getThispage()+3;i++){
                    
if(pm.getThispage()==pm.getTotalpage()-1)
                        
break;
                    out.print(
"&nbsp;<a href="temp.jsp?pageID="+i+"">"+i+"</a>");
                }

                out.print(
"&nbsp;…");

                out.print(
"&nbsp;<input type="text" name="inputpage" size="1" οnkeydοwn="javascript: if(event.keyCode==13){location='temp.jsp?pageID='+this.value;return false;}"&nbsp;>");
                
if(pm.getThispage()<pm.getTotalpage()){
                out.print(
"&nbsp;<a href="temp.jsp?pageID=" + pm.getTotalpage()+ "" style="font-weight:bold">&raquo;</a>");
                out.print(
"&nbsp;Pages:&nbsp;("+pm.getThispage()+"/"+pm.getTotalpage()+")");
                
                }

                
                out.print(
"</td>");
            }


            
            out.print(
"</tr>");
            out.print(
"</table>");
            out.print(
"</div>");

        }
 catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }


    }


    
public String[] getSqlparams() {
        
return sqlparams;
    }


    
public void setSqlparams(String sqlparams[]) {
        
this.sqlparams = sqlparams;
    }


    
private String[] getTitle() {
        
        
return title;
    }


    
//
    private String createSql(String sqlparams[]) {
        
this.strbuf = new StringBuffer("select ");
        
for (int i = 0; i < sqlparams.length - 1; i++{
            strbuf.append(sqlparams[i]);
            
for (int j = i; j < i + 1; j++{
                
if (j == sqlparams.length - 2)
                    
break;
                strbuf.append(
",");
            }

        }

        strbuf.append(
" from ");
        strbuf.append(sqlparams[sqlparams.length 
- 1]);
        String sql 
= this.strbuf.toString();

        
return sql;
    }


    
private String getSQL() {
        String sql 
= null;
        
            sql 
= this.createSql(this.getSqlparams());
        System.out.println(
"getSQL()====" + sql);
        
return sql;
    }


//     public static void main(String[] args) {
//     
     String str = new TableTag();
//         String str;
//         int in;
//        char ch;
//        
//         str = "1234567890";
         in =  Character.digit('g', 1);
         in = Integer.parseInt(str,10);
//         in = Character.getNumericValue('c');
//         char[] cha = str.toCharArray();
//         for(int i=0;i<cha.length;i++)
//         System.out.println(Character.getNumericValue(cha[i]));
//         }
    public boolean isEdit() {
        
return edit;
    }


    
public void setEdit(boolean edit) {
        
this.edit = edit;
    }


    
public String[] getCss() {
        
return css;
    }


    
public void setCss(String[] css) {
        
this.css = css;
    }


    
public String[] getJavascript() {
        
return javascript;
    }


    
public void setJavascript(String[] javascript) {
        
this.javascript = javascript;
    }


    
public void setTitle(String[] title) {
        
this.title = title;
    }


    
public String getClasshtm() {
        
return classhtm;
    }


    
public void setClasshtm(String classhtm) {
        
this.classhtm = classhtm;
    }

}

 

自定义标签的配置文件.tld

 

<? xml version = " 1.0 "  encoding = " UTF-8 " ?>
<! DOCTYPE taglib PUBLIC  " -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN "
    
" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd " >
    
    
< taglib >
    
< tlib - version > 1.0 </ tlib - version >
    
< jsp - version > 2.0 </ jsp - version >
    
< short - name > tabletag </ short - name >
    
< uri >/ tabletag </ uri >
    
    
< tag >
    
< name > tablebasic </ name >
    
< tag - class > com. **** .TableTag </ tag - class >
    
< body - content > empty </ body - content >
    
    
< attribute >
    
< name > sqlparams </ name >< -- 这是个数组,放入数据库表的字段名和表名,没处理where,就为了意思意思 -->
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
    
        
< attribute >
    
< name > title </ name >
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
    
        
< attribute >
    
< name > edit </ name >
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
        
        
< attribute >
    
< name > javascript </ name >
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
        
        
< attribute >
    
< name > css </ name >
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
        
        
< attribute >
    
< name > style </ name >
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
    
            
< attribute >
    
< name > classhtm </ name >
    
< required > false </ required >
    
< rtexprvalue > true </ rtexprvalue >
    
</ attribute >
        
        
</ tag >
    
</ taglib >

 

最后到web.xml注册一下就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值