<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page language="java"%>
<html>
<head>
<title>分页显示</title>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><body>
<center>
<font size="5" color="#003399">分页显示</font>
</center>
<br>
<hr>
<br>
<center>
<%
int PageSize=3;
int ShowPage=1;
int RowCount=0;
int PageCount=0;
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
///public void jspInit()
//{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:bookdb");
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select * from book");
rs.last();
RowCount=rs.getRow();
PageCount=((RowCount%PageSize)==0 ? (RowCount/PageSize):(RowCount/PageSize)+1);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
//}
//public void jsDestroy()
//{
try
{
rs.close();
stmt.close();
con.close();
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
//}
%>
<%
String ToPage=request.getParameter("ToPage");
//判断是否可以正确取得topage参数
if(ToPage!=null)
{
//取得指定显示的分页页数
ShowPage=Integer.parseInt(ToPage);
//如果大于总页数,则显示最后一页
if(ShowPage>PageCount)
{
ShowPage=PageCount;
}
else if(ShowPage<=0)
{
ShowPage=1;
}
}
rs.absolute((ShowPage-1) * PageSize+1);
%>
<h3>当前在第<font size =4 color=red>
<%=ShowPage%></font>页,共
<font size="4" color="#6600FF"><%=PageCount%></font>页
</h3>
<br>
<%
for (int i=1;i<=PageSize;i++)
{
%>
<table border=1 bordercolor=royalblue bgcolor=lightblue>
<tr>
<td bgcolor=lightyellow width=100>
<b>书籍编号</b>
</td>
<td width=100>
<b><%=rs.getString("BookID")%></b>
</td>
<td bgcolor=lightyellow width=100>
<b>出版日期</d>
</td>
<td width=100>
<b><%=rs.getString("PDate")%></b>
</td>
<td bgcolor=lightyellow width=100>
<b>总页数</d>
</td>
<td width=100>
<b><%=rs.getString("Pages")%></b>
</td>
<td bgcolor=lightyellow width=100>
<b>价格</d>
</td>
<td width=100>
<b><%=rs.getString("Price")%></b>
</td>
</tr>
<tr>
<td bgcolor=lightyellow><b>书籍名称</b></td>
<td colspan=5 width=500><b><%=rs.getString("Title")%></b></td>
<td bgcolor=lightyellow><b>作者</b></td>
<td  width=100><b><%=rs.getString("Author")%></b></td>
</tr>
<tr>
<td bgcolor=lightyellow><b>备注</b></td>
<td colspan=7 width=700><b><=rs.getString("BookMemo")%></b></td>
</tr>
</table><br>
<%
if(!rs.next())
break;
}
%>
<table width="560">
<tr>
<%
if(ShowPage!=1)
{
%>
<td width=150>
<a href=pages.jsp?ToPage=<%=1%>>到第一页</a>
</td>
<td width=150>
<a href=pages.jsp?ToPage=<%=ShowPage-1%>>到第上一页</a>
</td>
<%
}
if(ShowPage!=PageCount)
{
%>
<td width=150>
<a href=pages.jsp?ToPage=<%=ShowPage+1%>>到第下一页</a>
</td>
<td width=150>
<a href=pages.jsp?ToPage=<%=PageCount%>>到第最后一页</a>
</td>
<%
}
%>
<td width="150">
<form action=pages.jsp method=post>

<input type="text" name="ToPage" style="height:25px;width:40px" values=<%=ShowPage%>>

</from></table>
</center>
</body>
</html>
org.apache.jasper.JasperException: Exception in JSP: /pages.jsp:9491: <b>书籍编号</b>
92: </td>
93: <td width=100>
94: <b><%=rs.getString("BookID")%></b>
95: </td>
96: <td bgcolor=lightyellow width=100>
97: <b>出版日期</d>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.pages_jsp._jspService(pages_jsp.java:144)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    ////数据库的连接类
    package jdbcjsp;import java.sql.*;public class conndb {
    private Connection con;
    private ResultSet rs;
    /**
    * getConnection
    *
    * @return Connection
    * @throws SQLException
    */
    public static Connection getConnection() throws SQLException {
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    }
    catch (ClassNotFoundException ex) {
    ex.printStackTrace();
    return null;
    }
    return DriverManager.getConnection("jdbc:Oracle:thin:@192.168.0.1:1521:QZJACLOE",
                                     "test", "test");
    }/**
    * executeQuery
    *
    * @param sql String
    * @return ResultSet
    */
    public ResultSet executeQuery(String sql) {
    try {
    con = conndb.getConnection();
    Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                              ResultSet.CONCUR_READ_ONLY);
    rs = statement.executeQuery(sql);
    }
    catch (SQLException ex) {
    ex.printStackTrace();
    }
    return rs;
    }/**
    * executeUpdate
    *
    * @param sql String
    * @return int
    */
    public int executeUpdate(String sql) {
    int count = 0;
    Statement stmt = null;
    try {
    con = conndb.getConnection();
    stmt = con.createStatement();
    count = stmt.executeUpdate(sql);
    }
    catch (SQLException ex) {}
    finally {
    try {
      if (stmt != null)
        stmt.close();
      if (con != null)
        con.close();
    }
    catch (SQLException ex) {
      System.err.println(ex);
    }
    }
    return count;
    }/**
    * freeRs
    *
    * @param rs ResultSet
    */
    public void freeRs(ResultSet rs) {
    try {
    if (rs != null) {
      rs.close();
      con.close();
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }public conndb() {
    }
    }//////分页的逻辑类..............<%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.sql.*,jdbcjsp.*" %>
    <jsp:usebean id="pagebean" scope="session" class="jdbcjsp.Pagebean"></jsp:useBean>
    <jsp:usebean id="databean" scope="session" class="jdbcjsp.conndb"></jsp:useBean>
    <html>
    <head>
    <title>
    usepage
    </title>
    </head>
    <body bgcolor="#ffffff">
    <%
    ResultSet rs;
    String sql="select * from ps_shop";
    rs=databean.executeQuery(sql);
    String pages=request.getParameter("dispage");
    try{
      rs.last();
      int countRecord=rs.getRow();
      int countPageRecord=5;
      if(pages==null||(pages.trim()).length()==0)
      pagebean.setAll(countRecord,countPageRecord);
      else {
        try{
          pagebean.setCurrentPage(Integer.parseInt(pages));
        }catch(Exception e){
          out.print("参数不正确!");
        }
      }
      int currentRecord=(pagebean.getCurrentPage()-1)*pagebean.getSizePage();
      if(currentRecord==0)
      rs.beforeFirst();
      else
      rs.absolute(currentRecord);  out.print("<table style="'font-size:10pt'">");
      out.print("<tr><td colspan="5" align="center">用户数据</td></tr>");
      out.print("<tr>");
      out.print("<td>"+"shopID");
      out.print("<td>"+"name");
      out.print("<td>"+"addr");
      out.print("<td>"+"manger");
      out.print("<td>"+"phone");
      out.print("</tr>");
      int i=0;
      while(rs.next()){
      out.print("<tr>");
      out.print("<td>"+rs.getString(1)+"</td>");
      out.print("<td>"+rs.getString(2)+"</td>");
      out.print("<td>"+rs.getString(3)+"</td>");
      out.print("<td>"+rs.getString(4)+"</td>");
      out.print("<td>"+rs.getString(5)+"</td>");
      out.print("</tr>");
      i++;
      if(i>=pagebean.getSizePage())
      break;
      }
      out.print("<tr><td colspan="5" align="center">");
      out.print("共"+pagebean.getCountRecord()+"条记录,共"+pagebean.getCountPage()+
      "页,当前第"+pagebean.getCurrentPage()+"页,每页"+pagebean.getSizePage()+"条记录,");
      if(pagebean.getCurrentPage()==1)
      ;
      else{
      out.print("<a href="usepage.jsp?dispage="1">首页</a>");
      out.print("<a href="usepage.jsp?dispage="">上一页</a>");
      }
      if(pagebean.getCurrentPage()==pagebean.getCountPage())
      ;
      else{
      out.print("<a href="usepage.jsp?dispage="">下一页</a>");
      out.print("<a href="usepage.jsp?dispage="">末页</a>");
      }
      out.print("</td><tr>");
      out.print("</table>");
      databean.freeRs(rs);
    }catch(SQLException ex){
      System.out.println(ex.toString());
    }
    %>
    </body>
    </html>
      

  2.   

    前面的那个少发一个,下面才这个才全面哦package jdbcjsp;import java.sql.*;public class conndb {
      private Connection con;
      private ResultSet rs;
      /**
       * getConnection
       *
       * @return Connection
       * @throws SQLException
       */
      public static Connection getConnection() throws SQLException {
        try {
          Class.forName("oracle.jdbc.driver.OracleDriver");
        }
        catch (ClassNotFoundException ex) {
          ex.printStackTrace();
          return null;
        }
        return DriverManager.getConnection("jdbc:Oracle:thin:@192.168.0.1:1521:qzjackie",
                                           "test", "test");
      }  /**
       * executeQuery
       *
       * @param sql String
       * @return ResultSet
       */
      public ResultSet executeQuery(String sql) {
        try {
          con = conndb.getConnection();
          Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                    ResultSet.CONCUR_READ_ONLY);
          rs = statement.executeQuery(sql);
        }
        catch (SQLException ex) {
          ex.printStackTrace();
        }
        return rs;
      }  /**
       * executeUpdate
       *
       * @param sql String
       * @return int
       */
      public int executeUpdate(String sql) {
        int count = 0;
        Statement stmt = null;
        try {
          con = conndb.getConnection();
          stmt = con.createStatement();
          count = stmt.executeUpdate(sql);
        }
        catch (SQLException ex) {    }
        finally {
          try {
            if (stmt != null)
              stmt.close();
            if (con != null)
              con.close();
          }
          catch (SQLException ex) {
            System.err.println(ex);
          }
        }
        return count;
      }  /**
       * freeRs
       *
       * @param rs ResultSet
       */
      public void freeRs(ResultSet rs) {
        try {
          if (rs != null) {
            rs.close();
            con.close();
          }
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }  public conndb() {
      }
    }
    package jdbcjsp;public class Pagebean {
      ///当前页数,总记录条数,总页数,每页记录条数
      private int currentPage,countRecord,countPage,sizePage;  /**
       * setAll
       *
       * @param _countResord总记录条数 int
       * @param _sizePage每页记录条数 int
       */
      public void setAll(int _countResord,int _sizePage){
        countRecord=_countResord;
        sizePage=_sizePage;
        if(countRecord%sizePage==0)
          countPage=countRecord/sizePage;
        else
          countPage=countRecord/sizePage+1;
        currentPage=1;
      }  /**
       * getCurrentPage
       *
       * @return int  当前页数
       */
      public int getCurrentPage(){
        return currentPage;
      }  /**
       * getCountPage
       *
       * @return int  总页数
       */
      public int getCountPage(){
        return countPage;
      }  /**
       * getCountRecord
       *
       * @return long 总记录条数
       */
      public long getCountRecord(){
        return countRecord;
      }  /**
       * getSizePage
       *
       * @return int  每页记录条数
       */
      public int getSizePage(){
        return sizePage;
      }  /**
       * setCurrentPage
       *
       * @param currentPage int  当前页数
       */
      public void setCurrentPage(int currentPage){
        this.currentPage=currentPage;
      }
      public Pagebean() {
      }
    }
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.sql.*,jdbcjsp.*" %>
    <jsp:useBean id="pagebean" scope="session" class="jdbcjsp.Pagebean"></jsp:useBean>
    <jsp:useBean id="databean" scope="session" class="jdbcjsp.conndb"></jsp:useBean>
    <html>
    <head>
    <title>
    usepage
    </title>
    </head>
    <body bgcolor="#ffffff">
    <%
    ResultSet rs;
    String sql="select * from ps_shop";
    rs=databean.executeQuery(sql);
    String pages=request.getParameter("dispage");
    try{
      rs.last();
      int countRecord=rs.getRow();
      int countPageRecord=5;
      if(pages==null||(pages.trim()).length()==0)
      pagebean.setAll(countRecord,countPageRecord);
      else {
        try{
          pagebean.setCurrentPage(Integer.parseInt(pages));
        }catch(Exception e){
          out.print("参数不正确!");
        }
      }
      int currentRecord=(pagebean.getCurrentPage()-1)*pagebean.getSizePage();
      if(currentRecord==0)
      rs.beforeFirst();
      else
      rs.absolute(currentRecord);  out.print("<Table Border style='font-size:10pt'>");
      out.print("<tr><td colspan=5 align=center>用户数据</td></tr>");
      out.print("<tr>");
      out.print("<td>"+"shopID");
      out.print("<td>"+"name");
      out.print("<td>"+"addr");
      out.print("<td>"+"manger");
      out.print("<td>"+"phone");
      out.print("</tr>");
      int i=0;
      while(rs.next()){
      out.print("<tr>");
      out.print("<td>"+rs.getString(1)+"</td>");
      out.print("<td>"+rs.getString(2)+"</td>");
      out.print("<td>"+rs.getString(3)+"</td>");
      out.print("<td>"+rs.getString(4)+"</td>");
      out.print("<td>"+rs.getString(5)+"</td>");
      out.print("</tr>");
      i++;
      if(i>=pagebean.getSizePage())
      break;
      }
      out.print("<tr><td colspan=5 align=center>");
      out.print("共"+pagebean.getCountRecord()+"条记录,共"+pagebean.getCountPage()+
      "页,当前第"+pagebean.getCurrentPage()+"页,每页"+pagebean.getSizePage()+"条记录,");
      if(pagebean.getCurrentPage()==1)
      ;
      else{
      out.print("<a href=usepage.jsp?dispage=1>首页</a>");
      out.print("<a href=usepage.jsp?dispage="+(pagebean.getCurrentPage()-1)+">上一页</a>");
      }
      if(pagebean.getCurrentPage()==pagebean.getCountPage())
      ;
      else{
      out.print("<a href=usepage.jsp?dispage="+(pagebean.getCurrentPage()+1)+">下一页</a>");
      out.print("<a href=usepage.jsp?dispage="+pagebean.getCountPage()+">末页</a>");
      }
      out.print("</td><tr>");
      out.print("</table>");
      databean.freeRs(rs);
    }catch(SQLException ex){
      System.out.println(ex.toString());
    }
    %>
    </body>
    </html>我的博客http://qzjackie.blogspot.com
      

  3.   

    javaBeanpackage jsppage;import java.util.*;
    import java.sql.*;public class Bean1 {
        private int curPage = 1;
        private int maxPage;
        private int maxRow;
        public Vector v;    public Bean1() throws Exception {
            this.setBean1();
        }    public void setCurPage(int curPage) {
            this.curPage = curPage;
        }    public void setMaxPage(int maxPage) {
            this.maxPage = maxPage;
        }    public void setMaxRow(int maxRow) {
            this.maxRow = maxRow;
        }    public int getCurPage() {
            return curPage;
        }    public int getMaxPage() {
            return maxPage;
        }    public int getMaxRow() {
            return maxRow;
        }    public Bean1 getResult(String page) throws Exception {
            try {
                Bean1 bb = new Bean1();
                Vector vv = new Vector();
                int pageNum = Integer.parseInt(page);
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                Connection con = DriverManager.getConnection("jdbc:odbc:aa", "", "");
                Statement sm = con.createStatement();
                String strsql = "select top " + pageNum * 4 + " * from jobs";
                ResultSet rs = sm.executeQuery(strsql);
                int i = 1;
                while (rs.next()) {
                    if (i > (pageNum - 1) * 4) {
                        Object[] obj = new Object[4];
                        obj[0] = rs.getInt(1);
                        obj[1] = rs.getString(2);
                        obj[2] = rs.getInt(3);
                        obj[3] = rs.getInt(4);
                        vv.add(obj);
                    }
                    i++;
                }
                rs.close();
                sm.close();
                con.close();            bb.setCurPage(pageNum);
                bb.v = vv;
                return bb;
            } catch (Exception e) {
                e.printStackTrace();
                throw e;
            }
        }
        public int setCount() throws Exception {
            int c = 0;
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
            Connection con = DriverManager.getConnection("jdbc:odbc:aa", "", "");
            Statement sm = con.createStatement();
            String sql = "select count(*) from jobs";
            ResultSet rs = sm.executeQuery(sql);
            rs.next();
            c = rs.getInt(1);
            rs.close();
            sm.close();
            con.close();
            return c;    }    public void setBean1() throws Exception {
            this.maxRow = this.setCount();        if (this.maxRow % 4 == 0) {
                this.maxPage = this.maxRow / 4;
            } else {
                this.maxPage = this.maxRow / 4 + 1;
            }
        }
    }
      

  4.   

    Servletpackage jsppage;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;public class Servlet1 extends HttpServlet {
        private static final String CONTENT_TYPE = "text/html; charset=GBK";    //Initialize global variables
        public void init() throws ServletException {
        }    //Process the HTTP Get request
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(CONTENT_TYPE);
            try {
                Bean1 b1 = new Bean1();
                Bean1 bean0 = b1.getResult(request.getParameter("jumppage"));
                request.setAttribute("bean0", bean0);
            } catch (Exception e) {
                e.printStackTrace();
            }        javax.servlet.RequestDispatcher dis = request.getRequestDispatcher("jsp1.jsp");
            dis.forward(request,response);    }    //Process the HTTP Post request
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            doGet(request, response);
        }    //Clean up resources
        public void destroy() {
        }
    }
      

  5.   

    JSP<%@page contentType="text/html; charset=GBK" import="java.util.*"%>
    <jsp:useBean id="bean0" scope="request" class="jsppage.Bean1"/>
    <script type="" language="JavaScript">
    <!--
    function jumping()
    {
      document.pageform.submit();
      return;
    }
    function gotoPage(pagenum)
    {
      document.pageform.jumppage.value=pagenum;
      document.pageform.submit();
      return;
    }
    -->
    </script>
    <html>
    <head>
    <title>jsp1</title>
    </head>
    <body bgcolor="#ffffff">
    <table border="1">
    <tr>
    <th>ID:</th>
    <th>Desc:</th>
    <th>Min:</th>
    <th>Max:</th>
    </tr>
    <%
    String s = String.valueOf(bean0.getCurPage());
    Vector v3 = bean0.getResult(s).v;
    Enumeration e = v3.elements();
    while(e.hasMoreElements())
    {
    Object [] obj = (Object [])e.nextElement();
    %>
    <tr>
      <td><%=obj[0] %></td>
      <td><%=obj[1] %></td>
      <td><%=obj[2] %></td>
      <td><%=obj[3] %></td>
    </tr>
    <%} %>
    </table>
    <%if(bean0.getMaxPage()!=1) {%>
    <form action="servlet1" method="POST" name="pageform">
    每页4行  共<%=bean0.getMaxRow() %>行  第<%=bean0.getCurPage() %>页  共<%=bean0.getMaxPage() %>页  <br />
    <%
    if(bean0.getCurPage()==1)
    {
      out.print("首页   上一页");
    }
    else{
      %>
      <a href="javascript:gotoPage(1)">首页</a>
      <a href="javascript:gotoPage(<%=bean0.getCurPage()-1 %>)">上一页</a>
      <%} %>
      <%
      if(bean0.getCurPage()==bean0.getMaxPage())
      {
        out.print("下一页   尾页");
      }
      else{
        %>
        <a href="javascript:gotoPage(<%=bean0.getCurPage()+1 %>)">下一页</a>
        <a href="javascript:gotoPage(<%=bean0.getMaxPage() %>)">尾页</a>
        <%} %>
        转到第
        <select name="jumppage" onchange="jumping()">
        <%
        for(int i=1;i<=bean0.getMaxPage();i++)
        {
          if(i==bean0.getCurPage())
          {%>
          <option value="<%=i%>" selected="selected"><%=i %></option>
          <%}else{ %>
          <option value="<%=i%>" ><%=i %></option>
          <%}} %>
        </select>
    </form>
    <%} %>
    </body>
    </html>
      

  6.   

    代码太多了而且在页面上看着累 不过LZ的分页好像在页面中实现的 你应该是要开发一个网上书店系统吧 建议使用一个BookBean的javaBean 然后写一个逻辑类比如getPage
    然后用这股类生成一个BookBean[] books=new BookBean[4]//比如是4本书.然后将这股类存在session里面 具体我好像写过这么个程序 我帮你找找看我的代码不知道对你有帮助不
    public class getPage implements LogIF
    {
    private String nextPage;
    public getPage(String next)
    {
    nextPage=next;
    } @SuppressWarnings("unchecked")
    public String exe(HttpServletRequest req)
    {
    //用page来存储第几页
    HttpSession session=req.getSession();
    int page=0;
    if(req.getParameter("page")!=null)
    {
    page=Integer.parseInt(req.getParameter("page").toString());
    }

    ArrayList<BookBean> all=(ArrayList)session.getAttribute("books");
    int count=all.size();
    int pages=count/4;
    //System.out.println("数目:"+count);
    //System.out.println("页数:"+pages);
    BookBean[] book=new BookBean[1000];
    //计算出3共又多少页
    //记录当前页数
    book=(BookBean[])all.toArray(book);
    BookBean[] tmpBooks=new BookBean[4];
    for(int i=0;i<4;i++)
    {
    int index=page*4+i;
    if(index<count)
    {
    //System.out.println("书号"+(index));
    tmpBooks[i]=book[page*4+i];
    }
    else
    {
    BookBean tmpb=new BookBean();
    tmpb.setAuthor("无");
    tmpb.setBID(0);
    tmpb.setDesc("本书暂不存在");
    tmpb.setName("空");
    tmpb.setPrice(0);
    tmpb.setPrice_tmp(0);
    tmpb.setType(0);
    tmpBooks[i]=tmpb;
    //System.out.print(tmpBooks.length);
    }
    }
    session.setAttribute("book4", tmpBooks);
    session.setAttribute("pages", pages);
    return nextPage;
    }}这个是我以前的 你到时候在页面中只要用selvert来调用这股类就像 我可以给你一个比较完整的书店的demo要的话联系[email protected] 我怕自己找不到这个页面 呵呵
      

  7.   

    楼上可以发个给我吗..!!..
    [email protected]
    谢谢了.