<%@ page language="java" import="java.util.*"
contentType="text/html;charset=gbk"%>
<%@ page import="java.sql.*"%><html>
<head>
<title>show.jsp</title>
</head> <body>
<jsp:useBean id="dbcn" class="connect.DataBaseConnect" scope="page" />  //bean实例,不分页能够查询数据库 <%
int rowsNum=0;//总行数
int pageCount=0;//总页数
int pageSize=3;//每页显示记录数
int pageNo=1;//显示第几页
Statement sql = null;
ResultSet rs = null;

sql = dbcn.getConn().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = sql.executeQuery("select *from address");

rs.last();//移到最后一行
rowsNum = rs.getRow();//得到总行数
pageCount = (rowsNum%pageSize)==0?(rowsNum/pageSize):(rowsNum/pageSize+1);//得到总页数

String strPageNo = request.getParameter("pageNo");
if(strPageNo==null){
strPageNo="1";
}
pageNo = Integer.parseInt(strPageNo);//从客户得到要显示的第几页
if(pageNo<=0){
  pageNo=1;
}

int rsprint = (pageNo-1)*pageSize+1;//将指针移到显示页面记录的第一行
rs.absolute(rsprint);

out.print("<table border='1' align='center'>");
out.print("<tr><td>编号</td>");
out.print("<td>姓名</td>");
out.print("<td>年龄</td>");
out.print("<td>电子邮件</td>");
out.print("<td>住址</td></tr>"); for(int i=1;i<=pageSize;i++) {
out.print("<tr><td>" + rs.getString(1) + "</td>");
out.print("<td>" + rs.getString(3) + "</td>");
out.print("<td>" + rs.getLong(4) + "</td>");
out.print("<td>" + rs.getString(5) + "</td>");
out.print("<td>" + rs.getString(6) + "</td></tr>");
    rs.next();
}
            
out.print("</table>"); dbcn.closeConn();
%>
      <form action="" method="post">
      <input type="text" name="pageNo">
      <input type="submit" value="go">
      </form>
</body>
</html>报错:exception org.apache.jasper.JasperException: An exception occurred processing JSP page /show.jsp at line 2118:  ResultSet rs = null;
19: 
20:  sql = dbcn.getConn().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
21:  rs = sql.executeQuery("select *from address");
22: 
23:  rs.last();//移到最后一行
24:  rowsNum = rs.getRow();//得到总行数
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

解决方案 »

  1.   

    脑壳都看昏鸟业务逻辑 放在 后台代码中,直接以java application调试好以后
    再用jsp显示数据
      

  2.   

    不好意思,我是刚学jsp,有些规范问题,还不是很理,愿赐教。就是这个到底是什么问题呢?
      

  3.   

    rs = sql.executeQuery("select *from address");sql 语句没写对:
    rs = sql.executeQuery("select * from address");
      

  4.   

    有可能 既然你已经写到jsp了 就输出些信息 看看执行结果
    不过你一次把address的信息全查出来了 这是JSP前台分页? 这效率~~
      

  5.   

    怀疑是语句没写对,请先将SQL语句执行一遍,没问题了再写到编程的代码里,而且在JSP页面里,问题不好跟踪。
      

  6.   


    是这个问题,我已经解决。 我也是刚学的,不知道模块分析,求教:提高效率还有一个问题:加上这个之后。点下一页和go
    不能显示不足pageSize条记录的页面,有报错请问应该怎么改一下 <form action="" method="post">
      <a href="show.jsp?pageNo=<%=pageNo-1 %>">上一页</a>           
                      <a href="show.jsp?pageNo=<%=pageNo+1 %>">下一页</a>               
                      第<input type="text" size="10" name="pageNo" value=<%=pageNo%>>页
                         <input type="submit" value="go">
                    </form>
      

  7.   

    当显示不足pageSize条记录的时候,rs.getString(""),取不出值来 所以会报错。
    你把循环的那个pageSize设成个变量,在前面查一下rs结果集的条数。用这个条数作为for循环pageSize。
    用个if语句判断一下,rs的条数是否满足pagesize,满足则使用pagesize,如果不满足用这个条数,再试试

      

  8.   

    thanks!有没有什么好的mvc视频,发给我一份。[email protected] 谢谢了
      

  9.   

    rs.absolute(rsprint);
    这种语句我怕了他,数据过万,速度就很慢了
      

  10.   

    建议楼主看看这个:http://topic.csdn.net/u/20100918/14/AB55213A-7049-4359-BCA1-D7A14E308A1F.html
      

  11.   

    看得头昏,jsp页怎么写有数据库连接的代码了
      

  12.   

    用if语句判断一下,这是我以前写的分页示例JSP页面当中的代码,可以参考下
    <%
    int pageNow = Integer.parseInt(request.getAttribute("pageNow").toString());
    int pageCount = Integer.parseInt(request.getAttribute("pageCount").toString());
    String rootpath6 = "E:bzjh";
    if (pageNow != 1) {out.println("<a href=moreFileUpload.do?method=list&rootPath6="
    + rootpath6
    + "&pageNow="
    + (pageNow - 1)
    + ">上一页</a>");
    }

    for (int i = 1; i <= pageCount; i++) {out.println("<a href=moreFileUpload.do?method=list&rootPath6="
    + rootpath6
    + "&pageNow="
    + i
    + ">["
    + i
    + "]</a>");
    }
    if (pageNow != pageCount) {out.println("<a href=moreFileUpload.do?method=list&rootPath6="
    + rootpath6
    + "&pageNow="
    + (pageNow + 1)
    + ">下一页</a>");
    }
    %>
      

  13.   

    代码到写到页面里,多难读呀。  建议写到 action 或 dao 层里去。
      

  14.   

    楼主啊,不是字少的回复就没有含金量的。
    建议你使用xpager,这么经典的回复居然引不起你的注意。