|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
在网上看了几个Structs分页,感到不是很完美,因而依据本人的履历,写了一个绝对高效简便的分页办法。因为自己程度无限,假如人人有甚么更好的设法,接待不惜见教。
1、开辟情况
我的开辟情况是:JBuilderx+Weblogic8.1+Oracle9i+Windows2003,假如伴侣们的开辟情况纷歧样亦不妨。
2、开辟思绪
既然讲的是Struts,那天然离不了MVC,分页显现也是云云。
1、创建数据库和对应的表,本例的表是TCertificate。
2、创建得当的模子组件,对应你要查询数据库中的表。这部分由DAO数据会见层来完成,假如有的伴侣对DAO不熟习能够查询一下相干材料。本例由CertificateDAO.java来完成。
3、创建分页所必要的模子组件,由javaBean来充任,并与CertificateDAO完成分别。网上先容的良多办法,都存在着数据与分页组件藕合的征象,这也是本办法与别的分页办法的次要分歧的地方。
4、创建把持器组件,这部分由Struts中的Action来完成。次要卖力将实例化CertificateDAO,只取要显现的数据纪录,存进ArrayList对象然后前往,并放到request中。而分页部分则依据分页前提,独自举行机关,制止了与DAO混在一同的情形产生。网上别的先容的一些分页办法中,基础上都是一次性读出一切查询的数据,然后再由分页相干组件举行机关。如许,假如数据量年夜的话,很简单构成瓶颈。在本例中因为不是一次性地读出查询的一切数据,而只是读出一个页面要显现的数据纪录,这就节俭了良多不用要的数据传输,进步了效力。本例中为CertificateAction.java。
5、创建视图组件,这部分由jsp来充任,为了不呈现java代码,我们利用Struts供应的标签库,次要卖力从request中掏出方才放进的对象,经由过程重复挪用CertificateAction和action参数,而完成分页显现。本例中为listcertificate.jsp。
6、创建并设置struts-config.xml。
3、实例代码
断定好下面的开辟思绪后,代码的完成就有单可循了。
1、建数据库和响应的表。
2、数据逻辑层的相干代码。
1)、通用的DAO类:CommonDAO.java
这是一个良多DAO都要承继到的通用DAO类,是我依据理论总结出来的,为了削减篇幅,这里只显现和本例相干的代码。
java代码:
代码:packagecom.xindeco.business;
importjava.io.*;
importjava.sql.*;
importjava.util.*;
importjavax.sql.*;
importjava.lang.IllegalAccessException;
importjava.lang.reflect.InvocationTargetException;
importorg.apache.commons.beanutils.BeanUtils;
publicclassDAO
{
protectedDataSourceds;
/**
*申明:获得以后查询的总纪录数
*/
publicintgetRows()
{
returnthis.count;
}
publicvoidrsHandler(ResultSetrs,intoffset,intlimit)
{
try
{
count=0;
rs.absolute(-1);
count=rs.getRow();
if(offset<=0)
{
rs.beforeFirst();
}
else
{
rs.absolute(offset);
}
}
catch(Exceptione)
{
e.printStackTrace();
}
}
publicDAO(DataSourceds){
this.ds=ds;
}
publicvoidsetDataSource(DataSourceds){
this.ds=ds;
}
protectedvoidclose(ResultSetrs){
if(rs!=null){
try{
rs.close();
}catch(SQLExceptione){
}
rs=null;
}
}
protectedvoidclose(PreparedStatementpstmt){
if(pstmt!=null){
try{
pstmt.close();
}catch(SQLExceptione){
}
pstmt=null;
}
}
protectedvoidclose(Connectionconn){
if(conn!=null){
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
conn=null;
}
}
protectedvoidrollback(Connectionconn){
if(conn!=null){
try{
conn.rollback();
}catch(SQLExceptione){
e.printStackTrace();
}
conn=null;
}
}
}
这个类次要是经由过程子类传出去的先辈了局集,获得查询的纪录总数,并对数据库毗连举行复杂的办理。
<p>
不得不提一下的是:.net是看到java红,而开发出来的工具。 |
|