用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这个豆豆.在我博客里找找吧.都有这个类的.
- 用Bean代替复杂的数据列表输出
- 用Merge代替复杂的Update
- 复杂JSON输出数据
- 尝试用SHELL来代替复杂的API
- 为什么超长列表数据的翻页技术实现复杂
- 复杂的列表视图
- json转成复杂的bean
- 利用Merge代替复杂的UPDATE语句
- 利用Merge代替复杂的UPDATE语句
- bean:write之四输出的数据进行格式化
- ibatis3中,用Map代替Bean
- Android复杂列表的实现
- Json 和复杂 Bean 之间的转化
- Spring中Bean的复杂属性注入
- 读取数据库的内容用easyui数据表格输出角色列表
- 用filter内置函数代替列表
- GridView、Repeater 列表截取字符用...代替
- 使用@Configuration注解来代替Spring的bean配置
- 杨辉三角专题(Java语言描述)
- 终于毕业了,另外找到新房子了,准备择取黄道吉日,搬家
- 相忘于江湖
- 齐达内,临晨世界杯——写于06年决赛进行时
- 关于硬盘种类、物理几何结构及硬盘容量、分区大小计算
- 用Bean代替复杂的数据列表输出
- 世界杯啊!*_*~~~~~
- 意大利胜利了
- 法国,无语了 意大利,赢了
- 初来乍到,请多多指教!
- C/C++编程日志
- 最近总是不想来上班
- RollUP
- 表单验证时间方法例子