⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tableformat.java

📁 分页 分页分页分页分页分页分页分页分页分页分页分页分页分页
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package tool;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.jsp.*;

public class TableFormat {
  public int M_CHAR = 0; //字符排序
  public int M_NUMBER = 1; //数字排序
  public JspWriter out; //输出类
  public Vector Cols = new Vector(); //列数组
  public Vector Rows = new Vector(); //行数组
  public Vector SubMenus = new Vector(); //菜单数组
  public String HeadBKColor = "#ECEAE6"; //菜单背景颜色
  public String HeadDarkColor = "#808080"; //菜单深色边界
  public String HeadLightColor = "#ffffff"; //菜单浅色边界
  public String THeadBKColor = "#ECEAE6"; //表头背景颜色
  public String THeadDarkColor = "#808080"; //表头深色边界
  public String THeadLightColor = "#ffffff"; //表头浅色边界
  public String ContentSelColor = "#EFEFEF"; //表内容选中颜色
  public String ContentUnSelColor = "#f7f5f0"; //表内容未选中颜色
  public String url = ""; //系统请求的CGI文件名
  public String paramString = ""; //系统请求的参数字符串
  public String FormString = ""; //系统请求的Form格式
  public String PrintFormString = ""; //系统打印请求的Form格式
  public String OrderBy = ""; //排序列
  public String Direction = "UP"; //排序方向
  public int CurPage = 1; //当前显示的页码
  public int PageSize = 2; //每页显示的记录数
  public int PageNum = 1; //总的页数
  public boolean ifhead = true; //是否输出按钮
  public boolean ifcolsort = true; //是否列排序
  public boolean ifdetail = true; //是否详细
  public boolean ifheadpage = false; //是否数出首页
  public boolean ifinput = false; //是否输出录入按钮
  public boolean ifchange = false; //是否修改
  public boolean ifframe = false; //是否详细信息在父窗口显示
  public boolean ifdel = false; //是否删除
  public boolean ifprint = false; //是否打印
  public boolean ifprinttab = false; //是否打印边框
  public String printurl = ""; //打印url
  public String FormName = "report";
  public String PrintFormName = "printform";
  public boolean IfOrder = true;
  //是否自己排序,true :输入的数据未排序,需系统排序;false:输入的数据已排序,不需要系统排序。
  public boolean ifpage = false;
  //是否自己分页,false输入的数据已经分页,true输入的数据未分页。
  public boolean IfForm = true;
  //是否Form方式提交请求:false;采取Get方式;  true:采取Form的Post方式
  private HttpServletRequest req;
  public TableFormat(JspWriter newOut, HttpServletRequest request) {
    //构造函数
    out = newOut;
    req = request;
    Enumeration e = request.getParameterNames();
    while (e.hasMoreElements()) {
      String tmpname = e.nextElement().toString().trim();
      if (tmpname.equals("CurPage")) {
        CurPage = Integer.parseInt( (request.getParameter(tmpname) != null ?
                                     request.getParameter(tmpname) : "1"));
      }
      else if (tmpname.equals("OrderBy")) {
        OrderBy = request.getParameter(tmpname);
      }
      else if (tmpname.equals("Direction")) {
        Direction = request.getParameter(tmpname);
      }
    }
  }

  private void MakeForm(HttpServletRequest request) throws Exception { //生成POST方法的FORM
    FormString = "";
    FormString += "<form name=" + FormName + " method=POST action=" + url + ">";
    Enumeration e = request.getParameterNames();
    while (e.hasMoreElements()) {
      String tmpname = e.nextElement().toString().trim();
      if (tmpname.equals("CurPage")) {
        CurPage = Integer.parseInt( (request.getParameter(tmpname) != null ?
                                     request.getParameter(tmpname) : "1"));
      }
      else if (tmpname.equals("OrderBy")) {
        OrderBy = request.getParameter(tmpname);
      }
      else if (tmpname.equals("Direction")) {
        Direction = request.getParameter(tmpname);
      }
      else {
        for (int i = 0; i < request.getParameterValues(tmpname).length; i++) {
          if (request.getParameterValues(tmpname)[i] != null) {
            FormString += "<input type=hidden name=" + tmpname + " value=" +
                UserTools.GBKConverter(request.getParameterValues(tmpname)[i]) + ">";
          }
          else {
            FormString += "<input type=hidden name=" + tmpname + " value=" +
                request.getParameterValues(tmpname)[i] + ">";
          }
        }
      }
    }
    FormString += "<input type=hidden name=CurPage value=" + CurPage + ">";
    FormString += "<input type=hidden name=OrderBy value=" + OrderBy + ">";
    FormString += "<input type=hidden name=Direction value=" + Direction + ">";
    FormString += "</form>";
  }

  private void MakeQueryString(HttpServletRequest request)
  //生成请求的参数字符串
  {
    Enumeration e = request.getParameterNames();
    while (e.hasMoreElements()) {
      String tmpname = e.nextElement().toString().trim();
      if (tmpname.equals("CurPage")) {
        CurPage = Integer.parseInt(request.getParameter(tmpname));
      }
      else if (tmpname.equals("OrderBy")) {
        OrderBy = request.getParameter(tmpname);
      }
      else if (tmpname.equals("Direction")) {
        Direction = request.getParameter(tmpname);
      }
      else {
        for (int i = 0; i < request.getParameterValues(tmpname).length; i++) {
          if (request.getParameterValues(tmpname)[i] != null) {
            paramString += tmpname + "=" +
                UserTools.GBKConverter(request.getParameterValues(tmpname)[i]) + "&";
          }
          else {
            paramString += tmpname + "=" +
                request.getParameterValues(tmpname)[i] + "&";
          }
        }
      }
    }
    //去掉最后的“&”字符
    if (paramString.trim().length() > 0) {
      if (paramString.substring(paramString.length() - 1).equals("&")) {
        paramString = paramString.substring(0, paramString.length() - 1);
      }
    }
  }

  public void AddCol(String title, String align, int m_width, String m_field,
                     int m_sorttype)
  //添加表格的列:title为列标题;align:为列的对其方式
  {
    Cols.addElement(new Col(title, align, m_width, m_field, m_sorttype));
  }

  public void AddCol(String title, int m_width, String m_field, int m_sorttype)
  //添加表格的列:title为列标题;对其方式为系统的却省
  {
    Cols.addElement(new Col(title, m_width, m_field, m_sorttype));
  }

  public void AddRow(String[] m_row, String m_link)
  //添加表格的行数据:m_row 为行数据数组;m_link 为该行数据的连接URL,一般为查看该行数据详细信息的连接
  {
    Rows.addElement(new Row(m_row, m_link));
  }

  public void AddRow(String[] m_row, String m_link, String m_dellink,
                     String m_changelink)
  //添加表格的行数据:m_row 为行数据数组;m_link 为该行数据的连接URL,一般为查看该行数据详细信息的连接
  {
    Rows.addElement(new Row(m_row, m_link, m_dellink, m_changelink));
  }

  public void AddRow(String[] m_row, String m_link, String m_bgcolor)
  //添加表格的行数据:m_row 为行数据数组;m_link 为该行数据的连接URL,一般为查看该行数据详细信息的连接
  {
    Rows.addElement(new Row(m_row, m_link, m_bgcolor));
  }

  public void AddRow(String[] m_row, String m_link, String m_dellink,
                     String m_changelink, String m_bgcolor)
  //添加表格的行数据:m_row 为行数据数组;m_link 为该行数据的连接URL,一般为查看该行数据详细信息的连接
  {
    Rows.addElement(new Row(m_row, m_link, m_dellink, m_changelink, m_bgcolor));
  }

  public void AddMenu(String m_title, String m_link, int m_width)
  //增加系统的子菜单:m_title 为菜单的标题;m_link 为该菜单的连接URL;m_width 未菜单的宽度
  {
    SubMenus.addElement(new SubMenu(m_title, m_link, m_width));
  }

  public void Print() throws Exception
  //数据输出到浏览器
  {
    if (IfOrder) {
      OrderData(); //排序数据
    }
    if (ifpage) {
      if (Rows.size() % PageSize == 0) {
        PageNum = Rows.size() / PageSize;
      }
      else {
        PageNum = Rows.size() / PageSize + 1;
      }
    }
    if (IfForm) {
      MakeForm(req); //生成Form字符串
      out.println(FormString);
    }
    else {
      MakeQueryString(req); //生成Get字符串
      //PrintStyle(out);//输出样式单
    }
    if (ifhead) {
      PrintHead(out); //输出系统菜单和导航按钮
    }
    int m_width = 90;
    for (int i = 0; i < this.Cols.size(); i++) {
      m_width += ( (Col)this.Cols.elementAt(i)).width;
    }
    if (ifprinttab) {
      out.println("<table  id=t1 name=t1 cellspacing=0 cellpadding=0 border=1 class=bgtable align=center height=80% width=" +
                  m_width + ">");
    }
    else {
      out.println("<table  id=t1 name=t1 cellspacing=1 cellpadding=0 border=0 class=bgtable width=" +
                  m_width + ">");
    }
    PrintCol(out); //输出表格的列
    PrintRow(out); //输出表格数据
    out.println("</table>");
  }

  /*******************************************************************
   *模块名:分页查询模块
   *功  能:使用逆向指针,每页取出TableFormat实例中指定的pageSize条记录
   *输入参数:String sel_sql,String from_sql,String condition_sql,Connection conn
   *参数说明:sel_sql:选取字段字符串,from_sql from表字符串,String condition_sql 查询条件串,带着where
   *输出参数:ResultSet rs
   *相关数据表单
   *错误信息代码:
   *编写者:DWQ
   *开发日期:2003-05-13
   *修改日期:
   *版本号:
   *备  注:
   * *****************************************************************/
  public ResultSet executeQuery(Connection conn, String sel_sql,
                                String from_sql, String condition_sql) throws Exception{
    ResultSet rs = null;
    ResultSet rs_count = null;
    String sql = sel_sql + "" + from_sql;
    String sql_count = "select count(1) " + from_sql;
    int curpage = 1;
    if (req.getParameter("CurPage") != null) {
      curpage = Integer.parseInt(req.getParameter("CurPage"));
    }
    int maxRowCount = 0;
    int count = 0;
    if (!condition_sql.trim().equals("")) {
      sql = sql + " " + condition_sql;
      sql_count = sql_count + " " + condition_sql;
    }
    sql = sql + " order by " + this.OrderBy + " " + this.Direction;
    //out.println(sql);
    try {
      Statement stat_count = conn.createStatement(); //用于查询总数的快照查询
      //用于分页的逆向指针查询
      Statement stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                            ResultSet.CONCUR_READ_ONLY);
      rs_count = stat_count.executeQuery(sql_count);
      if (rs_count.next()) {
        maxRowCount = rs_count.getInt(1); //总行数
      }
      this.PageNum = (maxRowCount - 1) / this.PageSize + 1; //页数
      if (this.PageNum == 0) {
        this.CurPage = 0;
      }
      rs = stat.executeQuery(sql);
      if (maxRowCount > 0) {
        rs.absolute( (curpage - 1) * this.PageSize + 1); //如果有记录,将游标移至由显示的页码处
      }
    }
    catch (SQLException e) {
      out.println("err: " + e.toString() + "</br>" + "sql is " + sql);
    }
    return rs;
  }

  private void OrderData()
  //数据排序
  {
    int orderbyid = 0;
    int orderbytype = M_CHAR;
    for (int i = 0; i < this.Cols.size(); i++) {
      Col col = (Col)this.Cols.elementAt(i);
      if (col.field.equals(this.OrderBy)) {
        orderbyid = i;
        orderbytype = col.sorttype;
        break;
      }
    }
    if (orderbytype == M_CHAR) {
      if (!this.Direction.equals("DESC")) {
        this.QuickSortS(0, this.Rows.size() - 1, orderbyid, 0);
      }
      else {
        this.QuickSortS(0, this.Rows.size() - 1, orderbyid, 1);
      }
    }
    else {
      if (!this.Direction.equals("DESC")) {
        this.QuickSortN(0, this.Rows.size() - 1, orderbyid, 0);
      }
      else {
        this.QuickSortN(0, this.Rows.size() - 1, orderbyid, 1);
      }
    }
  }

  private void PrintHead(JspWriter out1) throws Exception
  //输出系统菜单和导航按钮
  {
    int m_width = 90;
    for (int i = 0; i < this.Cols.size(); i++) {
      m_width += ( (Col)this.Cols.elementAt(i)).width;
      //输出子菜单
    }
    out1.println("<table border=0 cellpadding=0 width='" + m_width +
                 "' cellspacing=\"0\">");
    out1.println("<TR>");
    if (SubMenus.size() > 0) {
      out1.println("<TD width=5 valign=top>");
      out1.println("<img height=22 src='/images/toolbar1.gif' width=5>");
      out1.println("</TD>");
      PrintMenu(out1);
      out1.println("<TD width=5 valign=top>");
      out1.println("<img height=22 src='/images/toolbar1.gif' width=5>");
      out1.println("</TD>");
    }
    out1.println("<TD>&nbsp;</TD>");
    //输出打印按钮
    if (ifprint) {
      out1.println("<TD align=right width=100><a style='cursor:hand' onclick=\"javascript:window.open('" +
                   printurl + "')\"><img src='/images/printpage.gif'></a></TD>");
    }
    //输出页次
    out1.println("<TD align=right width=200>共 <font color=red>" + PageNum +
                 "</font> 页&nbsp;&nbsp;当前第 <font color=red>" + CurPage +
                 " </font>页&nbsp;&nbsp;</TD>");
    //输出跳转输入框
    if (PageNum > 1) {
      out1.println("<TD align=right width=70>转到<input size=3 class=myinput name='go' onkeydown='return go_onkeydown()'>页</TD>");
      out1.println("<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>");
      out1.println("<!--");
      out1.println("function ltrima( val )");
      out1.println("{");
      out1.println("	var retstr;");
      out1.println("	var tmpstr;");
      out1.println("	retstr=new String();");
      out1.println("	tmpstr=new String(val);");
      out1.println("	var i;	");
      out1.println("	for(i=0;i<tmpstr.length;i++)");
      out1.println("	{");
      out1.println("		if(tmpstr.substring(i,i+1)!=' ') break;			");
      out1.println("	};	");
      out1.println("	retstr=tmpstr.substring(i,tmpstr.length);");
      out1.println("	return retstr;");
      out1.println("}");
      out1.println("function rtrima( val )");
      out1.println("{");
      out1.println("	var retstr;");
      out1.println("	var tmpstr;");
      out1.println("	retstr=new String();");
      out1.println("	tmpstr=new String(val);");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -