pagetag.java
来自「采用web2.0技术,采用动态标签,sql语句全部存储在数据库里面.开发速度快.」· Java 代码 · 共 160 行
JAVA
160 行
package com.sztheater.web.taglib;
import java.text.DateFormat;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import java.util.*;
import com.sztheater.framework.util.*;
public class PageTag extends BodyTagSupport {
private String m_item = null ;
private int m_pageSize = 6 ; //每页行数
private int m_pageNum = 5 ; //显示页数
private int m_pageNo = 0 ; //第几页
private int m_recCount = 0 ; //总记录数
public int doStartTag() throws JspException {
String rs_name = "q";
String class_name = "";
if (m_item==null || m_item.trim().equals("")) return EVAL_PAGE;
int iPos = 0;
try {
iPos = m_item.indexOf(".");
if (iPos<0) return EVAL_PAGE;
String dict_name = m_item.substring(0,iPos);
rs_name = m_item.substring(iPos + 1);
Object obj = pageContext.getRequest().getAttribute( dict_name);
if (obj==null) return EVAL_PAGE;
class_name = obj.getClass().getName();
if( class_name.indexOf("ValueObject")<0)return EVAL_PAGE;
ValueObject dataPack = (ValueObject)obj;
this.m_pageSize = dataPack.getPageInfo(rs_name ,"pagesize" );
this.m_pageNo = dataPack.getPageInfo(rs_name ,"pageno" );
this.m_recCount = dataPack.getPageInfo(rs_name ,"recordcount");
}catch(Exception e) {
}
return EVAL_PAGE;
}
public int doEndTag() throws JspException {
JspWriter jspWriter = pageContext.getOut();
try {
String strHTML = getPageInfo(pageContext , m_pageSize,m_pageNum,m_pageNo,m_recCount);
jspWriter.print(strHTML);
}catch(Exception e) {
try{
jspWriter.print("doStartTag <br>" + e.getMessage() );
}catch(Exception e1) {
}
}
return EVAL_PAGE;
}
public void setItem(String item) {
this.m_item = item;
}
public void setPageSize(int pageSize) {
this.m_pageSize = pageSize;
}
public void setPageNum(int pageNum) {
this.m_pageNum = pageNum;
}
public void setRecCount(int recCount) {
this.m_recCount = recCount;
}
public void setPageNo(int pageNo) {
this.m_pageNo = pageNo;
}
public static String getPageInfo(PageContext pc,int iSize,int iNum,int iNo,int iRecNum){
//入参数校验
if (iRecNum<1){
return "共 "+iRecNum+" 行记录";
}
if (iSize <1) iSize = 8;
if (iNum <1) iNum = 5;
if (iNo <1) iNo = 1;
if (iRecNum<0) iRecNum= 0;
//主要变量定义
int iPages = 0; //总页数
int iTop = 0; //当前区域最大页序号
int iBottom = 0; //当前区域最小页序号
int iArea = 0; //当前区域
int iAreas = 0; //当前区域
//求总页数
iPages = (iRecNum + iSize -1 )/iSize;
if (iNo > iPages) iNo = iPages;
//求当前页所在区域号
iArea = (iNo + iNum - 1)/iNum ;
iAreas = (iPages+ iNum - 1)/iNum ;
iTop = (iArea ) * (iNum) ;
iBottom= (iArea - 1) * (iNum) + 1;
if ( iBottom< 1 ) iBottom = 1;
if ( iTop >iPages ) iTop = iPages;
//按照要求输出结果
int iLoop = 0;
StringBuffer sbResult = new StringBuffer("");
//存在多个该标签时,只打印一次javascript包含
if (null == pc.findAttribute("hasPage.js")) {
pc.setAttribute("hasPage.js", "true");
sbResult.append("<script language=javascript src='/res/js/page.js'></script>");
}
sbResult.append("\t共 "+iRecNum+" 行记录  页次 "+iNo+"/"+iPages+"(每页 "+ iSize +" 行)\n");
//显示当前区域最后页号与首页信息
if (iArea<2) {
sbResult.append("<font face=webdings >9</font>\n");
sbResult.append("<font face=webdings >7</font>\n");
}else{
sbResult.append("<a href=javascript:fucHrefPage(1" +")><font face=webdings >9</font></a>\n");
sbResult.append("<a href=javascript:fucHrefPage("+(iBottom-1) +")><font face=webdings >7</font></a>\n");
}
//显示当前区域页码信息
for (iLoop=iBottom;iLoop<=iTop;iLoop++) {
//sbResult.append(" " + iLoop );
if (iNo==iLoop){
sbResult.append("\t<b><font color=\"#FF0000\">" + iLoop + "</font></b>\n");
}else{
sbResult.append("\t<a href=\"javascript:fucHrefPage("+ iLoop +")\"><b>" + iLoop +"</b></a>\n");
}
}
if (iArea==iAreas) {
sbResult.append("<font face=webdings >8</font>\n");
sbResult.append("<font face=webdings >:</font>|\n\n");
}else{
sbResult.append("<a href=\"javascript:fucHrefPage(" + (iTop+1) +")\"><font face=webdings >8</font></a>\n");
sbResult.append("<a href=\"javascript:fucHrefPage(" + iPages +")\"><font face=webdings >:</font></a>\n");
}
sbResult.append("\t<input type=\"text\" name=\"PAGE_NO\" class=\"INPUT_STYLE\" value=\"" + iNo + "\" maxLength=2 size=2 >\n");
sbResult.append("\t<input type=\"button\" class=\"btnSolid\" \n\tonClick=\"javascript:fucHrefPage(null)\" value=\"go\">\n");
String vExcept = ";pagesize;page_size;para_pagesize;para_page_size;PAGE_NO;pageno;page_no;para_pageno;para_page_no;REFRESH_LIST;";
sbResult.append(getHTMLFromRequest(pc,vExcept));
return sbResult.toString();
}
public static String getHTMLFromRequest(PageContext pc, String vExcept){
if (pc==null) return "";
if (vExcept!=null){
vExcept = vExcept.trim().toLowerCase();
if(vExcept.equals("")) vExcept = null;
}
Enumeration paranames =pc.getRequest().getParameterNames();
StringBuffer sbHTML = new StringBuffer("");
while(paranames.hasMoreElements()){
String paraName = (String)paranames.nextElement();
if (paraName==null || paraName.trim().equals("")) continue;
paraName = paraName.trim();
String str = ";"+paraName.toLowerCase()+";";
if ( vExcept.indexOf(str)>-1) continue;
String paraValue = pc.getRequest().getParameter(paraName);
if (paraValue==null) continue;
sbHTML.append("<input type=\"hidden\" name=\"");
sbHTML.append(paraName);
sbHTML.append("\" value=\"");
sbHTML.append(paraValue);
sbHTML.append("\">\n");
}
return sbHTML.toString();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?