ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:25.78KB ,
资源ID:17397427      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17397427.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JSP分页技术实现Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JSP分页技术实现Word格式.docx

1、birthday)my_table=100/premySQL可以使用LIMIT子句:selectLIMIT99,20DB2有rownumber()函数用于获取当前行数。SQLServer没研究过,可以参考这篇文章: 在Web程序中分页会被频繁使用,但分页的实现细节却是编程过程中比较麻烦的事情。大多分页显示的查询操作都同时需要处理复杂的多重查询条件,sql语 句需要动态拼接组成,再加上分页需要的记录定位、总记录条数查询以及查询结果的遍历、封装和显示,程序会变得很复杂并且难以理解。因此需要一些工具类简化 分页代码,使程序员专注于业务逻辑部分。下面是我设计的两个工具类:PagedStatement封

2、装了数据库连接、总记录数查询、分页查询、结果数据封装和关闭数据库连接等操作,并使用了PreparedStatement支持动态设置参数。RowSetPage参考PetStore的pagepageiterator模式,设计RowSetPage用于封装查询结果(使用OracleCachedRowSet缓存查询出的一页数据,关于使用CachedRowSet封装数据库查询结果请参考JSP页面查询显示常用模式)以及当前页码、总记录条数、当前记录数等信息,并且可以生成简单的HTML分页代码。查询的结果封装成RowsetPage。下面是简单的使用示例:/DAO查询数据部分代码:publicRowSetPag

3、egetEmployee(Stringgender,intpageNo)throwsExceptionStringsql=emp_id,emp_code,user_name,real_namegender=?;/使用Oracle数据库的分页查询实现,每页显示5条PagedStatementpst=newPagedStatementOracleImpl(sql,pageNo,5);pst.setString(1,gender);returnpst.executeQuery();/Servlet处理查询请求部分代码:pageNo;try/可以通过参数pageno获得用户选择的页码pageNo=In

4、teger.parseInt(request.getParameter(pageno);catch(Exceptionex)/默认为第一页pageNo=1;request.getParameter(genderrequest.setAttribute(empPage,myBean.getEmployee(gender,/JSP显示部分代码%importpage.RowSetPage%scriptlanguage=javascriptfunctiondoQuery()form1.actionType.value=doQueryform1.submit();/scriptformname=form

5、1method=getinputtype=hiddenname=actionType性别:type=textname=gendersize=1value=%=request.getParameter()%type=button查询onclick=doQuery()%empPage(RowSetPage)request.getAttribute(if(empPage=nullRowSetPage.EMPTY_PAGE;tablecellspacing=0width=90%trtdID代码用户名姓名javax.sql.RowSetempRS(javax.sql.RowSet)empPage.get

6、RowSet();(empRS!=null)while(empRS.next()%=empRS.getString(EMP_IDEMP_CODEUSER_NAMEREAL_NAME/endwhile/显示总页数和当前页数(pageno)以及分页代码。/此处doQuery为页面上提交查询动作的javascript函数名,pageno为标识当前页码的参数名tdcolspan=4.getHTML(/table/form效果如图: 因为分页显示一般都会伴有查询条件和查询动作,页面应已经有校验查询条件和提交查询的javascript方法(如上面的doQuery),所以 RowSetPage.getHTM

7、L()生成的分页代码在用户选择新页码时直接回调前面的处理提交查询的javascript方法。注意在显示查询结果 的时候上次的查询条件也需要保持,如& lt;。同时由于页码的参数名可以指定,因此也支持在同一页面中 有多个分页区。另一种分页代码实现是生成每一页的URL,将查询参数和页码作为QueryString附在URL后面。这种方法的缺陷是在查询条件比较复杂时难以处理,并且需要指定处理查询动作的servlet,可能不适合某些定制的查询操作。如果对RowSetPage.getHTML()生成的默认分页代码不满意可以编写自己的分页处理代码,RowSetPage提供了很多getter方法用于获取相关信

8、息(如当前页码、总页数、总记录数和当前记录数等)。在实际应用中可以将分页查询和显示做成jsptaglib,进一步简化JSP代码,屏蔽JavaCode。附:分页工具类的源代码,有注释,应该很容易理解。1.Page.java2.RowSetPage.java(RowSetPage继承Page)3.PagedStatement.java4.PagedStatementOracleImpl.java(PagedStatementOracleImpl继承PagedStatement)您可以任意使用这些源代码,但必须保留authorevan_zhao字样/Page.javapackagepage;java

9、.util.List;java.util.ArrayList;java.util.Collection;java.util.Collections;/*Title:分页对象Description:用于包含数据及分页信息的对象Page类实现了用于显示分页信息的基本方法,但未指定所含数据的类型,可根据需要实现以特定方式组织数据的子类,如RowSetPage以RowSet封装数据,ListPage以List封装数据totalSize)/throwRuntimeException(记录条数大于总条数?!this.currentPageno(start-1)/pageSize+1;this.totalP

10、ageCount(totalSize+-1)/(totalSize=0avaCount=0)1;StartIndextoNo:-currentPageno);getData()this.data;取本页数据容量(本页能包含的记录数)return本页能包含的记录数getPageSize()this.myPageSize;是否有下一页booleanhasNextPage()/*(avaCount=0totalSize=0)false;(this.getCurrentPageNo()1);获取当前页第一条数据在数据库中的位置returngetStart()获取当前页最后一条数据在数据库中的位置get

11、End()this.getStart()this.getSize()-1;(end0)0;end;获取上一页第一条数据在数据库中的位置记录对应的rownumgetStartOfPreviousPage()Math.max(start-myPageSize,获取下一页第一条数据在数据库中的位置getStartOfNextPage()avaCount;获取任一页第一条数据在数据库中的位置,每页条数使用默认值页号getStartOfAnyPage(intpageNo)getStartOfAnyPage(pageNo,DEFAULT_PAGE_SIZE);获取任一页第一条数据在数据库中的位置每页包含的

12、记录数pageSize)startIndex(pageNo-1)(1)NoIndex:startIndex);startIndex;取本页包含的记录数本页包含的记录数getSize()取数据库中包含的总记录数数据库中包含的总记录数getTotalSize()this.totalSize;取当前页码当前页码getCurrentPageNo()this.currentPageno;取总页码总页码getTotalPageCount()this.totalPageCount;*queryJSFunctionName实现分页的JS脚本名字,页码变动时会自动回调该方法pageNoParamName页码参数名称getHTML(StringqueryJSFunctionName,pageNoParamName)(getTotalPageCount()1)type=hiddenname=+pageNoParamName+value=1(queryJSFunctionName|queryJSFunctionName.trim().length()gotoPage(pageNoParamNamepageNoParamName.trim().length()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1