`
kewb
  • 浏览: 85843 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

应用displaytag在struts中完成大数据量分页

阅读更多

应用displaytag在struts中完成大数据量分页显示,Oracle数据库

 

JSP文件:

 

<%...@ taglib uri="/WEB-INF/displaytag.tld" prefix="disp" %>

<disp:table name="resultList" export="true" pagesize="100" requestURI="logQueryAction.do" sort="external" id="element" partialList="true" size="resultSize">
          
<disp:column property="operdate" title="操作时间" ></disp:column>
          
<disp:column property="pername" title="操作人员" ></disp:column>
          
<disp:column property="opertype" title="操作类型" ></disp:column>
</disp:table> 

 

name="resultList" 将记录集存在session或者request中的键值
export="true" 是否显示导出选项
pagesize="100" 每页显示100条数据
requestURI="logQueryAction.do"  struts中action的名称,如果记录少,可以直接分页
sort="external"  外部排序
id="element"   表格id值,用于程序得相关的参数
partialList="true"  分段从数据库中读数据
size="resultSize"  记录的总条数,用于计算总页数

 

struts action:

 

String pageIndexName = new org.displaytag.util.ParamEncoder("element").encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);   // 页数的参数名
        
int pageSize = 100;   //每页显示的条数
        
int pageIndex = GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))?0:(Integer.parseInt(request.getParameter(pageIndexName)) - 1);  //当前页数
String sqlCount 
= "select count(*)  from user_log a ";  //用于统计总记录数的sql语句
        String sql 
= " select * from (select rownum as rid, t1.* from (select b.pername as pername,to_char(a.operdate,'yyyy-mm-dd hh24:mi:ss') as operdate," +
                
" decode(a.opertype,'D','删除','M','修改','其他') as opertype, a.hphm as hphm from user_log a, " +
                
" (select asuser.userid as userid,nvl(asempmsg.pername,asuser.loginname) as pername from asuser,ASEMPMSG where asuser.perid=ASEMPMSG.perid(+)) b" +
                
" where a.userid=b.userid ";   //查询语句
            //构造查询条件
        StringBuffer sb 
= new StringBuffer();
        
if(logQueryForm.getCzrqStart()!=null && !"".equals(logQueryForm.getCzrqStart()))...{
            sb.append(
" and a.operdate > to_date('"+logQueryForm.getCzrqStart()+"','yyyy-mm-dd')");
        }

        
if(logQueryForm.getCzrqEnd()!=null && !"".equals(logQueryForm.getCzrqEnd()))...{
            sb.append(
" and a.operdate <= to_date('"+logQueryForm.getCzrqEnd()+"','yyyy-mm-dd')");
        }

        
if(logQueryForm.getCzlx()!=null && !"".equals(logQueryForm.getCzlx()))...{
            sb.append(
" and a.opertype = '"+logQueryForm.getCzlx()+"'");
        }

        
if(logQueryForm.getCzry()!=null && !"".equals(logQueryForm.getCzry()))...{
            sb.append(
" and a.userid = '"+logQueryForm.getCzry()+"'");
        }

     

        sqlCount 
+= sb.toString();
        sql 
+= sb.toString()+" order by a.operdate desc) t1 where rownum<="
                        
+ (pageIndex + 1* pageSize + " ) t2 where t2.rid>"+ pageIndex * pageSize;  //分页读取语句
        
        
//System.out.println(sb.toString());
        DBBean db = new DBBean();
        ResultSet rs 
= null;
        PreparedStatement prep 
= null;
        
try...{
            List resultList 
= db.getResultList(sql);   //将ResultSet保存在List里返回
            request.setAttribute(
"resultList",resultList);  //把结果存入request
            prep 
= db.getConnection().prepareStatement(sqlCount);   
            rs 
= prep.executeQuery();
            
if(rs.next())...{
                request.setAttribute(
"resultSize",new Integer(rs.getInt(1)));     //将总记录数保存成Intger实例保存在request中
            }

        }

        
catch(Exception ex)...{
            ex.printStackTrace();
        }

        
finally...{
            
if(db!=null)...{
                db.closeConnection();    //关闭连接
            }
 
        }

 

其中的页面导航是英文的,只要修改org.displaytag.properties.TableTag.properties配置文件就可以把英文改成中文。同时还可以指定导出文件的类型以及文件名。

export.excel=true
export.excel.label
=<span class="export excel">Excel </span>
export.excel.include_header
=true
export.excel.filename
=export.xls

如果不指定文件名,在点击导出excel的时候,就会在ie窗口中打开excel文件。很烦人!
指定文件名后就可以选择保存和打开了。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1076047



KE 2007-09-15 10:32 发表评论
分享到:
评论

相关推荐

    Struts2 DisplayTag 分页

    总的来说,Struts2和DisplayTag的结合使得开发人员能够快速构建功能丰富的Web应用,尤其是在处理大量数据展示和分页时,DisplayTag的易用性和灵活性得到了充分体现。通过不断实践和优化,你可以创建出更加高效、用户...

    Struts2结合DisplayTag框架进行分页案例

    Struts2和DisplayTag是Java Web开发中两个重要的开源框架,它们在构建动态网页和数据展示方面发挥着关键作用。Struts2是一个基于MVC(Model-View-Controller)模式的框架,它提供了强大的控制层功能,使得开发者可以...

    Struts2中使用displaytag标签总结

    1. **分页**:DisplayTag提供内置的分页功能,只需在`&lt;display:table&gt;`标签中设置`pagesize`属性,即可控制每页显示的数据量。 2. **排序**:用户可以通过点击表头进行列排序,这通过`&lt;display:table&gt;`的`sort=...

    displaytag,pager-taglib 分页包

    Displaytag和Pager-taglib是两个在Java Web开发中常用的分页库,主要用于处理大量数据的显示,提升用户体验,减轻服务器压力。这两个库都是基于JSP标签库(Tag Library)实现的,可以方便地集成到Spring、Struts等...

    李兴华\struts\45-使用Struts _ DAO _ Hibernate完成分页

    4. **分页实现**:在Web应用中,当数据量较大时,分页是一种常见的用户界面优化手段,它可以避免一次性加载大量数据导致页面响应慢或内存溢出。在Struts、DAO和Hibernate中,实现分页通常包括以下步骤: - 计算总...

    struts分页,数据查询资料

    在处理大量数据时,分页是必不可少的功能,它可以提高用户体验,避免一次性加载过多数据导致页面响应变慢。这个“struts分页,数据查询资料”可能包含了如何在Struts框架下实现高效、灵活的分页查询方法。 首先,...

    Struts2.0+dwr的分页

    在"Struts2.0+dwr的分页"这个主题中,我们主要探讨的是如何在Struts2.0的应用中集成DWR,实现数据的动态分页展示。分页是一种常见的网页功能,它帮助用户更好地管理和浏览大量数据,避免一次性加载过多内容导致页面...

    struts写的分页

    当我们谈论“Struts写的分页”时,我们指的是在Struts框架下实现的分页功能,通常与Hibernate结合,以处理大量数据并提高Web应用程序的性能。 分页是一种常见的用户界面技术,用于将大量数据分割成较小、可管理的...

    Struts带分页有查询

    在这个"Struts带分页有查询"的项目中,开发者利用Struts框架实现了带有分页功能的查询功能,使得用户能够方便地浏览大量数据而无需一次性加载所有结果,提升了用户体验。 分页是Web应用中常用的一种数据展示方式,...

    displaytag jar包 ,一个在表现层分页的标签的jar包

    综上所述,DisplayTag是一个强大的表格和分页标签库,它简化了Web应用中的数据呈现,特别是在与Struts框架结合时,能极大地提高开发效率和用户体验。不过,为了保持系统安全和最佳性能,开发者应考虑适时升级到更...

    分页大全(含JDBC分页 struts分页)

    这在数据库查询、网页展示等方面极其重要,特别是当数据量过大时,分页能显著提高页面加载速度。 1. **JDBC分页**:JDBC(Java Database Connectivity)是Java与数据库交互的标准接口。在JDBC中实现分页通常需要...

    struts2分页效果第二种

    在处理大量数据时,分页是必不可少的功能,它可以提高用户体验,避免一次性加载过多数据导致页面响应变慢。本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1....

    struts2数字版海量分页

    "Struts2数字版海量分页"是指在Struts2框架下实现的,用于处理大数据量的分页技术。 首先,我们要理解什么是分页。分页是一种将大量数据分成小块(页)进行显示的技术,用户可以逐页浏览,而不是一次性加载所有数据...

    struts2实现jsp分页功能带注释

    在大量数据展示时,分页可以避免一次性加载所有数据导致页面响应慢或内存溢出。Struts2通过拦截器和Action类结合JSP来实现这一功能。 1. **配置Struts2**: 在项目中引入Struts2的核心库,并在`struts.xml`配置...

    struts+hibernate做的分页

    Struts和Hibernate是Java开发中常用的两个开源...在实际项目中,还需要考虑性能优化,如使用缓存、预加载等策略,以应对大数据量的场景。同时,安全也是不容忽视的一环,例如防止SQL注入攻击,确保用户输入的安全性。

    struts2 hibernate spring 整合、分页源码

    分页功能在Web应用中十分常见,尤其是在处理大量数据时,能够提高用户体验并减轻服务器压力。在Struts2、Hibernate和Spring整合的项目中,实现分页通常涉及以下几个步骤: 1. **配置分页插件**:Struts2有许多分页...

    hibernate+struts分页

    在处理大量数据时,分页技术显得尤为重要,它能提高用户体验,避免一次性加载过多数据导致的性能问题。本文将详细介绍如何在Hibernate和Struts框架下实现分页功能。 一、Hibernate分页 Hibernate提供了一种方便的...

    用struts2的分页代码

    在本程序中,"用Struts2的分页代码"是实现数据分页显示的一个关键功能,它允许用户分批查看大量数据,提高用户体验并减轻服务器负载。 分页技术通常涉及以下几个核心概念: 1. **分页查询**:在数据库中,我们并不...

    用struts分页标签

    Struts是Java Web开发中的一款经典MVC框架,它的出现极大地简化了Web应用程序的构建。在Struts中,为了处理大量的数据展示,如查询结果的列表,通常会使用到分页功能。分页标签就是Struts框架提供的一种便捷方式,...

    Struts分页

    9. **国际化(i18n)**:分页中的文本,如“上一页”、“下一页”等,通常需要支持多种语言,所以可以利用Struts的国际化特性进行处理。 在实际项目中,可以使用现有的第三方分页库,如DisplayTag、Struts2-PlugIn-...

Global site tag (gtag.js) - Google Analytics