分~页~,自动生成表格

这是07年11月发在csdn blog里的,隔得时间太长,都记不清是怎么回事了,那时什么也不懂,所以写的很垃圾。。。 :cry:

分页控制器(可能是这个名字),是仿主流论坛的分页做的,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(1, 5, 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">«</a> ");
if(pm.getThispage()>1)...{
for(int i=pm.getThispage()-2;i<pm.getThispage();i++)...{
if(i>=1)
out.print(" <a href="temp.jsp?pageID="+i+"">"+i+"</a> ");
}
}
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(" <a href="temp.jsp?pageID="+i+"">"+i+"</a>");
}
out.print(" …");

out.print(" <input type="text" name="inputpage" size="1" onkeydown="javascript: if(event.keyCode==13){location='temp.jsp?pageID='+this.value;return false;}" >");
if(pm.getThispage()<pm.getTotalpage())...{
out.print(" <a href="temp.jsp?pageID=" + pm.getTotalpage()+ "" style="font-weight:bold">»</a>");
out.print(" Pages: ("+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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值