JSP+Servlet+oracle 的一个分页查询小应用

来源:互联网 发布:唐诗宋词朗诵软件 编辑:程序博客网 时间:2024/05/21 17:36

JSP+Servlet+oracle 的一个分页查询小应用
功能实现:1.编写1个简单jsp页面,提交表单提交一个人的名字到servlet控制器中。
2.编写一个servlet,接受名字,并连接oracle数据库根据名字查找出信息。
3.把所有信息读出来,分成几页显示,完成分页查询。
知识点:SELECT FROM (SELECT ROWNUM rn,DBname.* FROM DBname WHERE ROWNUM<=? and NAME=?) temp WHERE temp.rn>=?*
上述代码中,是oracle自带的一句分页查询语句,它是拿来控制分页查询每页显示的范围。
DBNAME:就是数据库名称。
rn:语句自带不需要管
ROWNUM<=?:这句显示的一页你要显示多少行数据。
NAME=?:这句你可以设置成自己想要的,根据那个条件查数据。
temp.rn>=?:这句显示的从第几个开始读起;例如前面你设置了3行,而这一行你设置的是1,那就从读出来的3条数据的第一条开始显示。

理清楚了概念之后,编写一个简单的jsp页面提交表单:

<form action="你的servlet" method="post"> <input type="text"name="name" > <input type="submit"name="submit"value="查询">

然后得到表单的传过来的名字,就开始编写一个servlet。
在这里要添加几个数据
pagesize=? :一页要显示多少行数据。
pagenow=?:当前页面
rowcount=?:总页数

第一步:连接数据库

        String Driver = "oracle.jdbc.driver.OracleDriver";        String url = "?????????";        String user = "root";        String password = "123";        Connection conn=null;        PreparedStatement st=null;        ResultSet rs=null;        Class.forName(Driver);        conn=DriverManager.getConnection(url, user, password);

第二部:获取表单提交的name,并查出该name在数据库的总记录数

String name=request.getParameter("name");String sql="select count(*) from DBname where name=?";            st=conn.prepareStatement(sql);            st.setString(1, name);            rs=st.executeQuery();            if(rs.next())            {                rowcount=rs.getInt(1);//查出记录总条数if(rowcount%pagesize==0)//这里计算出总页数,总条数除于1页显示多少                {                    rowcount=rowcount/pagesize;                }else                {                    rowcount=(rowcount/pagesize)+1;                }            }

第三部:查出所有数据并设置一页显示3行。

  int pagesize=3;    String sql1 = "SELECT * FROM (SELECT ROWNUM rn,STUDENT_TEST1.* FROM STUDENT_TEST1 WHERE ROWNUM<=? and NAME=?) temp WHERE temp.rn>=?";            st = conn.prepareStatement(sql1);            st.setInt(1, pagesize*pagenow);            st.setString(2, name);            st.setInt(3, pagesize*(pagenow-1)+1);            System.out.println(pagenow*pagesize);            System.out.println(pagesize*(pagenow-1)+1);            rs=st.executeQuery();

第四步:将数据通过out.print读出来

out.println("<table border=1>");            out.println("<tr><th>姓名</th><th>年龄</th><th>性别</th><th>成绩</th><th>爱好</th></tr>");            while(rs.next())            {                  out.println("<tr>");                     out.println("<td>"+rs.getString(2)+"</td>");                     out.println("<td>"+rs.getString(3)+"</td>");                     out.println("<td>"+rs.getString(4)+"</td>");                     out.println("<td>"+rs.getString(5)+"</td>");                     out.println("<td>"+rs.getString(6)+"</td>");                     out.println("</tr>");            }             out.println("</table>");

第五步:设置上一页下一页和总页数和当前页设置

 out.print("<a href='你的servlet?pagenow="+(pagenow-1)+"&name="+name+"'>上一页</a>");out.print("<a href='Fenye?pagenow="+(pagenow+1)+"&name="+name+"'>下一页</a>");            out.print("显示当前页:"+pagenow);            out.print("总页数"+rowcount);

以上的就是我自己的一个小应用。谢谢参考。

0 1
原创粉丝点击