第一次发帖,请大家帮帮忙啊!
有个紧急需要处理的问题——jsp分页,我从mysql数据库中查询出了20条数据,然后想每页显示5条,实现“上一页、下一页、末页”的跳转,现在我已经做到了第一步te.jsp页面,实现效果:
现在要解决的问题就是怎么让点了 “下一页、末页” 后能跳到PageView.jsp,并显示接下来的6-10条的数据库信息。
下面给出te.jsp 的完整代码,麻烦大家看看,教教我怎么写PageView.jsp这个页面,谢谢了。
te.jsp::
<%@ page contentType="text/html;charset=gb2312"%> 
<%@ page import="java.sql.*"%> 
<html> 
<body> 
<center>
<%
//加载驱动程序
Class.forName("org.gjt.mm.mysql.Driver").newInstance();//这里的数据库名,密码自己注意改一下吧
String url ="jdbc:mysql://localhost:3306/test?user=root&password=123&useUnicode=true&characterEncoding=8859_1";
Connection conn=DriverManager.getConnection(url); 
//建立连接
//Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //创建一个可以滚动的只读的SQL语句对象     
Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//创建语句对象
String sql="select * from man where name like '%e%'"; 
ResultSet rs=stmt.executeQuery(sql); 
int n;int   intPageSize;   //一页显示的记录数     
int   intRowCount;   //搜索出的记录总数     
int   intPageCount;   //总页数     
int   intPage;       //待显示页码     
java.lang.String   strPage;     
int   i;
intPageSize=5;      //设置一页显示的记录数 
strPage   =   request.getParameter("page");//取得待显示页码      
if(strPage==null){            //表明在QueryString中没有page这一个参数,此时显示第一页数据     
intPage   =   1;     
}     
else{              //将字符串转换成整型     
intPage   =   java.lang.Integer.parseInt(strPage);     
if(intPage<1)   intPage   =   1;     
}
rs.last();         //获取记录总数   
intRowCount=rs.getRow();
intPageCount=(intRowCount+intPageSize-1)/intPageSize; //记算总页数 
//调整待显示的页码     
if(intPage>intPageCount)   intPage   =   intPageCount; 
if(intPageCount>0){     
//将记录指针定位到待显示页的第一条记录上     
rs.absolute((intPage-1)   *   intPageSize   +   1);       
//显示数据     
i=   0;     
String   newsid=null;   
while(i<intPageSize   &&   !rs.isAfterLast()) 
{           
  newsid=rs.getString(1); 
//插入显示序号   
 out.print(i+1);  
%>     :
  xingming-><%=newsid%>  
<%  newsid=rs.getString(2); %> 
  age-><%=newsid%> 
  <br>  
<%     
rs.next();     
i++;     
}     
}     
%>  
<form id="form1" name="form1" method="post"> 
第<%=intPage%>页     共<%=intPageCount%>页 
<%if(intPage<intPageCount){%><a   href="PageView.jsp?page=<%=intPage+1%>"> <input type="hidden" name="nextpg" value="<%=intPage+1%>"/>下一页 </a><%}%>  
<%if(intPage!=intPageCount){%><a   href="PageView.jsp?page=<%=intPageCount%>">  末页</a><%}%>
<%if(intPage>1){%><a   href="PageView.jsp?page=<%=intPage-1%>">上一页</a><br><%} %>
</form>
<br><br><br><%
rs=stmt.executeQuery(sql);for(n=0;rs.next();n++){
out.print(n+1); %> 
->
name:<%=rs.getString(1)%> 
age:<%=rs.getString(2)%> <br>
<%}%>
<%out.print("数据库检索完成,共有"+n+"条数据符合条件。");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html>

解决方案 »

  1.   

    你应该在你的数据库中选择5条,下个5条记录,而不是在jsp页面中来处理
      

  2.   

    这个我可以解决,你还是能说说这个PageView.jsp页面大致怎么写吗?做哪些控制?
      

  3.   

    你没有必要写PageView.jsp 这个页面啊? 你把分页都放在同一个页面不是更方便么?根没有必要使用表单什么的.你直接使用个体的URL形式的传递,你看这样写怎么样?
    第 <%=intPage%>页    共 <%=intPageCount%>页 
    <%if(intPage <intPageCount){%> <a  href="te.jsp?page= <%=intPage+1%>"> <input type="hidden" name="nextpg" value=" <%=intPage+1%>"/>下一页 </a> <%}%>  
    <%if(intPage!=intPageCount){%> <a  href="te.jsp?page= <%=intPageCount%>">  末页 </a> <%}%> 
    <%if(intPage>1){%> <a  href="te.jsp?page= <%=intPage-1%>">上一页 </a> <br> <%} %>  
    <br> <br> <br> <% 
    rs=stmt.executeQuery(sql); for(n=0;rs.next();n++){ 
    out.print(n+1); %> 
    -> 
    name: <%=rs.getString(1)%> 
    age: <%=rs.getString(2)%> <br> 
    <%}%> 前面就直接使用String strPage = request.getParameter("page");
     
    我没有具体看你的代码。。你看行不行,我像这样是可以的,一般的分页都是这么实现的。我想应该没有问题。