JSP MVC模式下 分页显示有问题

问题描述

请教论坛各位大神~~~~~~如题所示,我JSP页面一开始能正常显示表头和表中数据,如图:但是,一旦按了下一页或者上一页,就会出问题了,问题就是表头会不断增加、表中数据只会显示当前页的第一行数据。如图所示:具体代码如下packageuser.yourservlet;importuser.yourbean.Main;importcom.sun.rowset.*;importjava.sql.*;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHandleMainPageextendsHttpServlet{intfieldNum;CachedRowSetImplrowSet=null;publicvoidinit(ServletConfigconfig)throwsServletException{super.init(config);//加载MySQL的Java数据库驱动程序try{Class.forName("com.mysql.jdbc.Drvier");}catch(Exceptione){}}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Connectioncon;StringBufferpresentPageResult=newStringBuffer();MainqueryBean=null;HttpSessionsession=request.getSession(true);try{queryBean=(Main)session.getAttribute("query");if(queryBean==null){queryBean=newMain();session.setAttribute("query",queryBean);}}catch(Exceptionexp){queryBean=newMain();session.setAttribute("query",queryBean);}//Stringps=request.getParameter("pageSize");//if(ps!=null)//{//try{//intmm=Integer.parseInt(request.getParameter("pageSize"));//queryBean.setPageSize(mm);//}//catch(NumberFormatExceptionexp){queryBean.setPageSize(2);//}////}intshowPage=queryBean.getShowPage();intpageSize=queryBean.getPageSize();Stringuri="jdbc:mysql://localhost/jim";try{con=DriverManager.getConnection(uri,"root","asd1234");DatabaseMetaDatametadata=con.getMetaData();ResultSetrs1=metadata.getColumns(null,null,"book",null);intk=0;Stringfield[]=newString[100];while(rs1.next()){fieldNum++;field[k]=rs1.getString(4);k++;}StringBufferstr=newStringBuffer();str.append("<tr>");for(inti=0;i<fieldNum;i++)str.append("<th>"+field[i]+"</th>");str.append("</tr>");queryBean.setFormTitle(str);Stringcondition="select*frombook";PreparedStatementpre=con.prepareStatement(condition);ResultSetrs=pre.executeQuery();rowSet=newCachedRowSetImpl();rowSet.populate(rs);con.close();queryBean.setRowSet(rowSet);rowSet.last();intm=rowSet.getRow();intn=pageSize;intpageAllCount=((m%n)==0)?(m/n):(m/n+1);queryBean.setPageAllCount(pageAllCount);}catch(SQLExceptionexp){}StringwhichPage=request.getParameter("whichPage");if(whichPage==null||whichPage.length()==0){showPage=1;queryBean.setShowPage(showPage);CachedRowSetImplrowSet=queryBean.getRowSet();if(rowSet!=null){presentPageResult=show(showPage,pageSize,rowSet);queryBean.setPresentPageResult(presentPageResult);}}elseif(whichPage.equals("nextPage")){showPage++;if(showPage>queryBean.getPageAllCount())showPage=1;queryBean.setShowPage(showPage);CachedRowSetImplrowSet=queryBean.getRowSet();if(rowSet!=null){presentPageResult=show(showPage,pageSize,rowSet);queryBean.setPresentPageResult(presentPageResult);}}elseif(whichPage.equals("previousPage")){showPage--;if(showPage<=0)showPage=queryBean.getPageAllCount();queryBean.setShowPage(showPage);CachedRowSetImplrowSet=queryBean.getRowSet();if(rowSet!=null){presentPageResult=show(showPage,pageSize,rowSet);queryBean.setPresentPageResult(presentPageResult);}}queryBean.setPresentPageResult(presentPageResult);RequestDispatcherdispatcher=request.getRequestDispatcher("showMain.jsp");dispatcher.forward(request,response);}publicStringBuffershow(intpage,intpageSize,CachedRowSetImplrowSet){StringBufferstr=newStringBuffer();try{rowSet.absolute((page-1)*pageSize+1);//rowSet.relative(-1);for(inti=1;i<=pageSize;i++){str.append("<tr>");for(intk=1;k<=fieldNum;k++)str.append("<td>"+rowSet.getString(k)+"</td>");str.append("</tr>");rowSet.next();}}catch(SQLExceptionexp){}returnstr;}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}}

解决方案

解决方案二:
这个要晒晒你的前台代码
解决方案三:
楼主真不容易啊,写了这么复杂的分页。换一种分页思路试试吧
解决方案四:
你把展现层的代码都塞到业务逻辑层去了。不建议这么干。分页最好用分页模板类的方法,网上很多例子的
解决方案五:
肯定是有模块的重复调用,嵌套了看看你前台的代码吧
解决方案六:
你的页面肯定有问题。是用jsp去显示的吧。
解决方案七:
引用3楼defonds的回复:

你把展现层的代码都塞到业务逻辑层去了。不建议这么干。分页最好用分页模板类的方法,网上很多例子的

因为我还只是刚初学简单的jsp+servlet+javabean的MVC,而且最近时间有点紧,暂时还看不懂网上用其他方法的例子TT
解决方案八:
引用4楼yemubai的回复:

肯定是有模块的重复调用,嵌套了看看你前台的代码吧

<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="user.yourbean.Main"%><html><center><body><jsp:useBeanid="query"class="user.yourbean.Main"scope="session"/><tableborder="2">分页后总页数<jsp:getPropertyname="query"property="pageAllCount"/>当前页码<jsp:getPropertyname="query"property="showPage"/>每页显示记录数<jsp:getPropertyname="query"property="pageSize"/><jsp:getPropertyname="query"property="presentPageResult"/></table><table><tr><td><formaction="helpQuery"method="post"><inputtype="hidden"value="<%=query.getShowPage()-1%>"name="showPage"><inputtype="submit"value="上一页"name="submit"></form></td><td><formaction="helpQuery"method="post"><inputtype="hidden"value="<%=query.getShowPage()+1%>"name="showPage"><inputtype="submit"value="下一页"name="whichPage"></form></td></tr></table></body></center></html>

就是这个jsp
解决方案九:
我也是有类似代码,但是我是只有列名,没有记录也
解决方案十:
getPresentPageResult()没处理好

时间: 2024-11-08 23:15:28

JSP MVC模式下 分页显示有问题的相关文章

MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

下面我们将逐步讲解怎么在MVC模式下将MongoDB数据读取,并展示在前台Jqgrid表格上.这个"简易系 统"的基本设计思想是这样的:我们在视图层展示表格,Jqgrid相关Js逻辑全部放在一个Js文件中,控制层实现了"增删查改"四个业 务,MongoDB的基本数据访问放在了模型层实现   看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关 系型的数据库MongoDB.no

servlet-spring mvc模式下用application存储数据,为什么在别的Servlet调用不到呢

问题描述 spring mvc模式下用application存储数据,为什么在别的Servlet调用不到呢 存值的方法是这样的application.setAttribute("yjsubId", subId); 取值的时候的方法是application.getAttribute("yjsubId"):为什么取到的值是空的呢 解决方案 在servlet 中调用application对象 解决方案二: subId你确实是有值的么,存放的代码看看 解决方案三: 估计你可

MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据_服务器其它

看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是MongoDB基本应用实现起来还是比较轻松的,甚至代码比基本的ADO.net访问关系数据源还要简洁.由于其本身的"非关系"的数据存储方式,使得对象关系映射这个环节对于MongoDB来讲显得毫无意义,因此我们也不会对MongoDB引入所谓的"ORM"框架. 下面我们将逐步

JSP MVC模式(JSP + JavaBean +Servlet)实现分页的源代码

问题描述 能够贴出来的更好,谢了 解决方案 解决方案二:<%@pagelanguage="java"contentType="text/html;charset=GB18030"import="java.util.*"pageEncoding="GB18030"%><%@pageimport="com.xlh.userDao.*"%><%@pageimport="co

JSP数据库操数据分页显示_JSP编程

<%@ page contentType="text/html;charset=8859_1" %><%//变量声明java.sql.Connection sqlCon; //数据库连接对象java.sql.Statement sqlStmt; //SQL语句对象java.sql.ResultSet sqlRst; //结果集对象java.lang.String strCon; //数据库连接字符串java.lang.String strSQL; //SQL语句int

PHP+MySQL下分页显示的实现

mysql|分页|显示 最近,论坛里有很我人都在问如何实现查询结果的分页显示.我希望下面的这段代码对你改进自己的程序能有所帮助.这些代码是用于MYSQL的,但很容易移植到其它SQL上. 由于每个程序的特殊性,所以我在MYSQL的查询里使用了一些很通用的语句.用你的表名替换TABLE:用你的条件语句代替YOUR_CONDITION_HERE:用你希望按其排序的字段名代替WHATEVER(当然如果要排倒序,别忘了加上DESC子句). <?php $qh=mysql_query("SELECT

C# MVC模式下商品抽奖功能实现_C#教程

最近项目需求的一个抽奖功能给整理了下,语言表达能力不好,写的不好请勿吐槽,一笑而过就好.好了下面开始说说这个抽奖功能.因为涉及到公司的项目所以一些敏感的地方均已中文代替. 首先在后台添加奖品的名称以及概率如图: 后台代码没什么好说的,我们来看看前端代码. 通过html做出如下样式: <div class="turntable-bg"> <div class="pointer"> <img id="pointer" s

c# listview list模式下文本显示问题 长文本完全显示,不要出现省略号

问题描述 图1是listview组件的效果,在list模式下,可以看到如果item的text字数比较多,就不会全部显示,出现省略号.图2是windows资源管理器的效果,每列的宽度是根据这列最长字数那一项调整的.这就是我要实现的效果.注意必须是List模式下,不是Details模式(网上找得到的都是Details模式下设置的列宽,这个就太简单了).搜索了好久都找不到实现的方法,真的没办法了.难不成真的要完全重绘整个listview?太崩溃了!望各位大神指点!图1图2 解决方案 解决方案二:忘了放

asp.net mvc模式下 表格的绘制

问题描述 目前有几种方案:1.控制器形成json串,供前台U表格组件调:2.形成视图modal,即1个表做1个modal,然后前台循环modallist3.控制器直接形成table串大家帮忙分析下,什么才是最好的方案呢或者其他更好的办法? 解决方案 解决方案二:mvc情况下,如果是ajax请求,那可以找js插件如果用model的方式,那就是拼接html至于什么是最好的方式,根本没有--如果你需要ajax刷新,那明显整个都ajax最好,如果加载完后就不会变化,那model的方式更佳解决方案三:一般