应用displaytag在struts中完成大数据量分页显示,Oracle数据库
		 
		JSP文件:
		 
		
				
						 
						 <%
						...
						
								@ taglib uri
								=
								"
								/WEB-INF/displaytag.tld
								"
								 prefix
								=
								"
								disp
								"
								 
						
						%>
						<%
						...
						
								@ 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: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
						="operdate"
						 title
						="操作时间"
						 
						></
						disp:column
						>
						
								
								 <
						disp:column 
						property
						="pername"
						 title
						="操作人员"
						 
						></
						disp:column
						>
          
						<
						disp:column 
						property
						="pername"
						 title
						="操作人员"
						 
						></
						disp:column
						>
						
								
								 <
						disp:column 
						property
						="opertype"
						 title
						="操作类型"
						 
						></
						disp:column
						>
          
						<
						disp:column 
						property
						="opertype"
						 title
						="操作类型"
						 
						></
						disp:column
						>
						
								
								 </
						disp:table
						>
						
						</
						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);   // 页数的参数名
						String pageIndexName 
						=
						 
						new
						 org.displaytag.util.ParamEncoder(
						"
						element
						"
						).encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);   // 页数的参数名
 int
						 pageSize 
						=
						 
						100
						;   //每页显示的条数
        
						int
						 pageSize 
						=
						 
						100
						;   //每页显示的条数
 int
						 pageIndex 
						=
						 GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))
						?
						0
						:(Integer.parseInt(request.getParameter(pageIndexName)) 
						-
						 
						1
						);  //当前页数
        
						int
						 pageIndex 
						=
						 GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))
						?
						0
						:(Integer.parseInt(request.getParameter(pageIndexName)) 
						-
						 
						1
						);  //当前页数
 String sqlCount 
						=
						 
						"
						select count(*)  from user_log a 
						"
						;  //用于统计总记录数的sql语句
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,
						"
						 
						+
        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, 
						"
						 
						+
                
						"
						 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
						"
						 
						+
                
						"
						 (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 
						"
						;   //查询语句
                
						"
						 where a.userid=b.userid 
						"
						;   //查询语句
				 
				
						            //构造查询条件
 StringBuffer sb 
						=
						 
						new
						 StringBuffer();
        StringBuffer sb 
						=
						 
						new
						 StringBuffer();

 if
						(logQueryForm.getCzrqStart()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzrqStart()))
						...
						
								{
        
						if
						(logQueryForm.getCzrqStart()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzrqStart()))
						...
						
								{
 sb.append(
								"
								 and a.operdate > to_date('
								"
								+
								logQueryForm.getCzrqStart()
								+
								"
								','yyyy-mm-dd')
								"
								);
            sb.append(
								"
								 and a.operdate > to_date('
								"
								+
								logQueryForm.getCzrqStart()
								+
								"
								','yyyy-mm-dd')
								"
								);
 }
        }
						
						
								
								 
								 if
						(logQueryForm.getCzrqEnd()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzrqEnd()))
						...
						
								{
        
						if
						(logQueryForm.getCzrqEnd()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzrqEnd()))
						...
						
								{
 sb.append(
								"
								 and a.operdate <= to_date('
								"
								+
								logQueryForm.getCzrqEnd()
								+
								"
								','yyyy-mm-dd')
								"
								);
            sb.append(
								"
								 and a.operdate <= to_date('
								"
								+
								logQueryForm.getCzrqEnd()
								+
								"
								','yyyy-mm-dd')
								"
								);
 }
        }
						
						
								
								 
								 if
						(logQueryForm.getCzlx()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzlx()))
						...
						
								{
        
						if
						(logQueryForm.getCzlx()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzlx()))
						...
						
								{
 sb.append(
								"
								 and a.opertype = '
								"
								+
								logQueryForm.getCzlx()
								+
								"
								'
								"
								);
            sb.append(
								"
								 and a.opertype = '
								"
								+
								logQueryForm.getCzlx()
								+
								"
								'
								"
								);
 }
        }
						
						
								
								 
								 if
						(logQueryForm.getCzry()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzry()))
						...
						
								{
        
						if
						(logQueryForm.getCzry()
						!=
						null
						 
						&&
						 
						!
						""
						.equals(logQueryForm.getCzry()))
						...
						
								{
 sb.append(
								"
								 and a.userid = '
								"
								+
								logQueryForm.getCzry()
								+
								"
								'
								"
								);
            sb.append(
								"
								 and a.userid = '
								"
								+
								logQueryForm.getCzry()
								+
								"
								'
								"
								);
 }
        }
						
						
								
								 
								 
     
						
								
								 sqlCount 
						+=
						 sb.toString();
        sqlCount 
						+=
						 sb.toString();
 sql 
						+=
						 sb.toString()
						+
						"
						 order by a.operdate desc) t1 where rownum<=
						"
        sql 
						+=
						 sb.toString()
						+
						"
						 order by a.operdate desc) t1 where rownum<=
						"
						
								
								 +
						 (pageIndex 
						+
						 
						1
						) 
						*
						 pageSize 
						+
						 
						"
						 ) t2 where t2.rid>
						"
						+
						 pageIndex 
						*
						 pageSize;  //分页读取语句
                        
						+
						 (pageIndex 
						+
						 
						1
						) 
						*
						 pageSize 
						+
						 
						"
						 ) t2 where t2.rid>
						"
						+
						 pageIndex 
						*
						 pageSize;  //分页读取语句
 
        
 //
						System.out.println(sb.toString());
        
						//
						System.out.println(sb.toString());
						
								
								 DBBean db 
						=
						 
						new
						 DBBean();
						
						        DBBean db 
						=
						 
						new
						 DBBean();
 ResultSet rs 
						=
						 
						null
						;
        ResultSet rs 
						=
						 
						null
						;
 PreparedStatement prep 
						=
						 
						null
						;
        PreparedStatement prep 
						=
						 
						null
						;

 try
						...
						
								{
        
						try
						...
						
								{
 List resultList 
								=
								 db.getResultList(sql);   //将ResultSet保存在List里返回
            List resultList 
								=
								 db.getResultList(sql);   //将ResultSet保存在List里返回
 request.setAttribute(
								"
								resultList
								"
								,resultList);  //把结果存入request
            request.setAttribute(
								"
								resultList
								"
								,resultList);  //把结果存入request
 prep 
								=
								 db.getConnection().prepareStatement(sqlCount);
            prep 
								=
								 db.getConnection().prepareStatement(sqlCount);    
 rs 
								=
								 prep.executeQuery();
            rs 
								=
								 prep.executeQuery();

 if
								(rs.next())
								...
								
										{
            
								if
								(rs.next())
								...
								
										{
 request.setAttribute(
										"
										resultSize
										"
										,
										new
										 Integer(rs.getInt(
										1
										)));     //将总记录数保存成Intger实例保存在request中
                request.setAttribute(
										"
										resultSize
										"
										,
										new
										 Integer(rs.getInt(
										1
										)));     //将总记录数保存成Intger实例保存在request中
 }
            }
								
								
										
										 }
        }
						
						
								
								 
								 catch
						(Exception ex)
						...
						
								{
        
						catch
						(Exception ex)
						...
						
								{
 ex.printStackTrace();
            ex.printStackTrace();
 }
        }
						
						
								
								 
								 finally
						...
						
								{
        
						finally
						...
						
								{

 if
								(db
								!=
								null
								)
								...
								
										{
            
								if
								(db
								!=
								null
								)
								...
								
										{
 db.closeConnection();    //关闭连接
                db.closeConnection();    //关闭连接
 }
            }
								
								 
 }
        }
						
				 
		 
		 
		其中的页面导航是英文的,只要修改org.displaytag.properties.TableTag.properties配置文件就可以把英文改成中文。同时还可以指定导出文件的类型以及文件名。
		
				
						 export.excel
						=
						true
						export.excel
						=
						true
 export.excel.label
						=
						<span class
						=
						"
						export excel
						"
						>Excel </span>
export.excel.label
						=
						<span class
						=
						"
						export excel
						"
						>Excel </span>
 export.excel.include_header
						=
						true
export.excel.include_header
						=
						true
 export.excel.filename
						=
						export.xls
export.excel.filename
						=
						export.xls
				 
		 
		如果不指定文件名,在点击导出excel的时候,就会在ie窗口中打开excel文件。很烦人!
指定文件名后就可以选择保存和打开了。
		
				
				
				
		
		
		
		Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1076047
	posted on 2006-10-31 17:53 
七匹狼 阅读(511) 
评论(0)  编辑  收藏  所属分类: 
java