这是07年11月发在csdn blog里的,隔得时间太长,都记不清是怎么回事了,那时什么也不懂,所以写的很垃圾。。。
分页控制器(可能是这个名字),是仿主流论坛的分页做的,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>