`

应用displaytag完成大数据量分页显示的例子

 
阅读更多

应用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文件。很烦人!
指定文件名后就可以选择保存和打开了。

分享到:
评论

相关推荐

    displaytag 分页的简单例子(附源代码)

    这个例子可以帮助你快速理解如何在实际开发中使用DisplayTag库,通过它你可以高效地处理和展示大量数据,同时保持代码的简洁和可维护性。对于大型Web应用来说,DisplayTag是一个非常有价值的工具,因为它提供了丰富...

    一个完美的displaytag分页控件的例子

    通过设置`page-size`属性,你可以指定每一页显示的数据量。同时,DisplayTag会自动处理分页链接的生成,用户可以轻松地向前或向后翻页。此外,还可以自定义分页样式,以适应不同的界面设计需求。 2. **排序**:...

    displaytag

    总的来说,DisplayTag是一个强大且易用的表格展示工具,尤其对于那些需要处理大量数据并需要分页和排序功能的Web应用来说,它是不可或缺的。通过深入学习和实践,你可以利用DisplayTag提高工作效率,创建出更加用户...

    displaytag的例子,很适合初学者

    1. **分页**:DisplayTag支持自动分页,可以轻松地将大量数据分成可管理的小块,改善用户体验。 2. **排序**:用户可以通过点击列头对表格进行排序,这对于处理大量需要排序的数据非常有用。 3. **格式化和国际化**...

    基于DisplayTag的分页及属性定制

    上述两种方法每次翻页时都会重新查询所有数据,这对于大数据量来说效率较低。为了优化性能,可以手动构造SQL语句实现按需查询,如使用`LIMIT`关键字限制返回行数。此外,DisplayTag还提供了几个自动生成的参数供后端...

    displaytag简单实例

    DisplayTag是一个功能强大的开源Java库,...DisplayTag的使用极大地简化了Web应用中的数据呈现,尤其是在处理大量数据时。通过理解并实践这些基本概念,你可以更高效地利用DisplayTag为用户提供直观、功能丰富的界面。

    displaytag1.2及所需全部jar包和实例

    DisplayTag是Java Web开发中的一款开源的表格展示标签库,它极大地简化了在JSP页面中创建复杂表格的过程。DisplayTag 1.2是该库的一个版本,它提供了丰富的功能和自定义选项,使得开发者可以方便地进行数据的分页、...

    displaytag例子代码

    DisplayTag是一个开源的JavaWeb开发库,专门用于创建表格和复杂的表单展示。它提供了一系列高级功能,如分页、排序、国际化...如果你正在处理大量数据的展示,或者需要提供导出、分页等功能,DisplayTag绝对值得尝试。

    java实现分页

    在Java Web开发中,分页显示是常见的需求,特别是在处理大量数据时,为了提高用户体验,我们需要将数据分批次展示,而不是一次性加载所有内容。DisplayTag是一个强大的开源Java库,专门用于创建表格和实现分页、排序...

    JavaScript与displayTag标签的合作 -- 操作表头.

    同时,通过JavaScript还可以实现表头的自定义筛选、折叠等功能,提升用户在查看和操作大量数据时的效率。 总之,JavaScript与displayTag的结合为Web开发者提供了强大的工具,用于创建交互性强、功能丰富的表格。...

    JSP分页插件及其详解

    在Web开发中,数据量较大的时候,为了提高用户体验,通常会采用分页的方式来展示信息。JSP(JavaServer Pages)作为Java领域中用于动态网页开发的技术,也有多种分页插件可供选择。本文将详细介绍一种常用的JSP分页...

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

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

    diplaytag例子

    2. **分页**:DisplayTag支持分页显示大量数据,用户可以通过导航链接轻松切换不同页码,减轻服务器压力。 3. **排序**:用户可以点击列标题对数据进行排序,DisplayTag会自动处理排序请求并更新表格。 4. **国际...

    jsp分页标签,servlet技术实现

    在Web开发中,数据量较大的页面往往需要分页显示,以提高用户体验并减轻服务器压力。JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者在HTML页面中嵌入Java代码来处理动态内容。为了简化开发,通常...

    diplaytag分页控件

    这个分页控件极大地简化了在网页上显示大量数据时的处理过程,提供了一种优雅的方式来管理和展示数据集。下面我们将深入探讨DisplayTag的特性、用法以及如何在实际项目中应用。 DisplayTag的特性: 1. **多语言支持...

    ssh增删改查+分页

    在处理大量数据时,分页显示是非常重要的。在SSH2中,我们可以使用JSP标签库,如DisplayTag或SpringTag来实现分页。以DisplayTag为例,你需要在JSP页面中引入DisplayTag库,然后创建一个表格展示数据,并设置分页...

    JSP几种标签分页及相关说明

    在Java服务器页面(JSP)开发中,分页是一种常用的技术,用于处理大量数据的展示,提高用户体验。这里我们将深入探讨几种JSP中的分页标签及其应用,同时也会提到一些关键概念和实现方法。 首先,我们需要理解什么是...

    ssh2整合例子

    **分页显示** 是Web应用中常见的功能,用于处理大量数据的展示。在SSH2整合中,可以利用Struts2的拦截器或自定义标签库来实现分页。例如,开发一个分页拦截器,或者在JSP页面中使用Struts2的DisplayTag或JSTL标签...

    SSH分页小列子,Struts国际化

    分页是Web应用中常见的需求,用于展示大量数据时避免一次性加载所有内容,提高用户体验。Struts可以通过定制Action或者使用第三方库如DisplayTag、Struts2的Pagination插件来实现分页。 综上所述,这个压缩包文件...

    重要知识displaytable标签.pdf

    总的来说,DisplayTag 是一个功能强大、易用的 JSP 标签库,适用于构建复杂的表格和列表展示,对于需要处理大量数据展示的 Web 应用程序来说,是个非常实用的工具。通过熟练掌握 DisplayTag 的使用,可以极大地提高...

Global site tag (gtag.js) - Google Analytics