用Bean代替复杂的数据列表输出

来源:互联网 发布:ida pro 7.0 linux 编辑:程序博客网 时间:2024/05/01 07:15

前几天写了一个比较简洁的分页javabean,再看自己的管理程序页面.

发觉有时候要列出一堆数据的时候还得用while 或者 for next 来搞搞Rs

瞅来瞅去整个页面都是怪难看的.循环和JSP的<% ..%>的符号这里一个那里一个.

变量也一堆一堆的.

就是不爽.于时刚才一时兴许又写了这个列表输出JavaBean

可能会有人问我老写JavaBean,没办法.就得做通用的JavaBead,开发的时候就可以拿来到处用.爽吧? 

 

请看如下源码:

ListData.java

package com.china3cts;
import java.sql.*;
import java.io.*;
import java.lang.*;
import java.util.*;
public class ListData
{

 ResultSet rs=null;
 private String[] VarNames;
 private String Rscript;
 private int Pno;
 private int Ei; //控制编辑URL指向
 public void setEi(int inEi)
 {
  this.Ei=inEi;
 }
 public int getEi()
 {
  return this.Ei;
 }
 public void setPno(int inPno)
 {
  this.Pno=inPno;
 }
 public int getPno()
 {
  return this.Pno;
 }
 public ResultSet getRs()
 {
  return this.rs;
 }
 public void setRs(ResultSet inrs)
 {
  this.rs=inrs;
 }
 public void setVarNames(String[] inVarNames)
 {
  this.VarNames=inVarNames;
 }
 public String[] getVarNames()
 { 
  return this.VarNames;
 }
 public String getRscript()
 {
  return this.Rscript;
 }
 public void setRscript(String inRscript)
 {
  this.Rscript=inRscript;
 }
 public String ListMe()
 {
  int i=0;
  String tmp="";
  String EUrl="";
  String DUrl="";
  try
  {
   while(i<Pno&&rs.next())
   {
    tmp=tmp+"<tr>";
    EUrl=Rscript+"?act=3&Id="+rs.getInt(1)+"";
    DUrl=Rscript+"?act=7&Id="+rs.getInt(1)+"";
    for (int j=0;j<VarNames.length;j++ )
    {
     if (Ei==j)
     {
      tmp=tmp+"<td align=center><a href=/""+EUrl+"/">"+rs.getString(VarNames[j])+"</a></td>";
     }
     else
     {
      tmp=tmp+"<td align=center>"+rs.getString(VarNames[j])+"</td>";
     }
    }
    tmp=tmp+"<td align=center><a href=/""+EUrl+"/">编辑</a> | <a href=/""+DUrl+"/">删除</a> </td>";
    tmp=tmp+"</tr>";
    i++;
   }
   return tmp;
  }
  catch (SQLException e)
  {
   System.err.println(e.toString());
  }
  return tmp;
 }
}

再看如下这个测试.test.jsp

<%@ page contentType="text/html;charset=GBK"%>
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="ld" scope="page" class="com.china3cts.ListData" />
<jsp:useBean id="pm" scope="page" class="com.china3cts.Page" />

<%
String MSQL="Select count(id) from Admin   ";
String GSQL="Select * from Admin   order by id Asc";
int Pno=10;
String Rscript="admin.jsp";
%>

       <table width="100%" border="0" cellspacing="3" cellpadding="1">
      <tr bgcolor="#F1F2F3">
       <td align="center" width="10%">ID</td>
       <td align="center" width="30%">管理人员</td>
       <td align="center" width="15%">等级</td>
       <td align="center" width="15%">最后登陆</td>
       <td align="center" width="15%">操作</td>
      </tr>
      <%
      String list[]=new String[]{"id","AdminName","AdminClass","LastLogin"};
      pm.setPno(Pno);
      pm.setGSQL(GSQL);
      pm.setMSQL(MSQL);
      ResultSet RS=pm.PageMe(request,response);
      ld.setPno(Pno);
      ld.setRs(RS);
      ld.setRscript(Rscript);
      ld.setEi(1);
      ld.setVarNames(list);
      out.print(ld.ListMe());
      %>
      <tr>
      <td colspan=<%=list.length+1%> align="center">
      共<SPAN class="input7"><%=pm.getTotal() %></SPAN>条记录,共<SPAN class="input7"><%=pm.getPages()%></SPAN>页,每页<SPAN class="input7"><%=pm.getPno()%></SPAN>记录,当前页:<SPAN class="input7"><%=pm.getPage()%></SPAN>
      <INPUT type="text" name="page"  id="page" size=3 value="<%=pm.getPage()+1%>"/> <input type="submit" name="submit" value="跳转" />
      </td></tr>
       </table>

 

有没有发现什么不对路?

对了.分页和数据列表里根本就看不到for next 和while 了!

不到十行代码把分页和数据列表搞得服服贴贴!

页面看起来舒服,简洁,移植性更强.随便拿到那里都可以用了.

大家可能觉得用一个String 返回出来会不会占太多的内存?

这一点我就不多说了.留空大家去思考.

解释与说明:

      ld.setPno(Pno); 设置每页记录数
      ld.setRs(RS); 传入已分好页的RS.
      ld.setRscript(Rscript); 接驳程序文件名字.
      ld.setEi(1); 指定会加入编辑连接的位置.
      ld.setVarNames(list); 一个数组,指定要显示的数据列名集合

原创性的东西,如需转载,给兄弟留个位置,author: snowdu

其他的pm这个豆豆.在我博客里找找吧.都有这个类的.

原创粉丝点击