仓酷云

标题: 了解下JAVA的一个高效简便的Struts分页办法 [打印本页]

作者: 深爱那片海    时间: 2015-1-18 11:13
标题: 了解下JAVA的一个高效简便的Struts分页办法
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?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红,而开发出来的工具。
作者: 冷月葬花魂    时间: 2015-1-20 17:27
是一种将安全性(Security)列为第一优先考虑的语言
作者: 透明    时间: 2015-1-26 21:02
是一种突破用户端机器环境和CPU
作者: 仓酷云    时间: 2015-2-4 20:30
是一种语言,用以产生「小应用程序(Applet(s))
作者: 飘灵儿    时间: 2015-2-10 06:39
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 活着的死人    时间: 2015-2-27 08:48
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者: 若相依    时间: 2015-3-8 23:53
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 不帅    时间: 2015-3-11 19:21
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 灵魂腐蚀    时间: 2015-3-19 09:15
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 莫相离    时间: 2015-3-27 16:48
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2