实现一个分页功能时出现问题,请教!
我的希望是,通过一个页面连接到该页面时,将自动分页显示数据库中该表中的数据;然后进入该页面时,通过输入查询或点击“上页”、“下页”,也能正常显示数据。
注:ConDB是写好的连接数据库并能执行连接数据库更新和查询的类函数。
这个程序运行的问题提示说:变量“cusquery”和“topage”没初始化,但这两个值已经赋初值了呀。大家有空帮忙给看一下 Thanks!
代码如下:
——————————————————————————————————
<%@ page language= "java " contentType= "text/html; charset=UTF-8 "
pageEncoding= "UTF-8 "%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ">
<%request.setCharacterEncoding( "gb2312 ");%>
<%@page import= "cn.ConDB "%>
<%@page import= "java.sql.* "%>
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=UTF-8 ">
<title> Insert title here </title>
</head>
<body>
<form action= "customerEdit.jsp ">
<table>
<tr>
<td> 顾客账户名 </td>
<td> <input type= "text " name= "cusquery "> </td>
<td> <input type= "submit " name= "submit " value=查询> </td> </tr>
</table>
<table>
<tr>
<td> 编号 </td>
<td> 顾客帐号 </td>
<td> 顾客真实姓名 </td>
<td> 性别 </td>
<td> 地址 </td>
<td> 联系电话 </td> </tr>
<%
ConDB condb=new ConDB();
String sql=null;
String cusquery=request.getParameter(cusquery);
//执行查询,根据表单数据进行判断。
if(cusquery==null||cusquery.equals( " ")){
sql= "select * from customer ";
}
else
sql= "select * from cusomer where username= ' "+cusquery+ " ' ";
ResultSet rs=condb.executeQuery(sql);
int pagesize=2;//每页面显示的记录数
int showpage=1;//默认显示的页面
int rowcount=0;//记录的行数
int pagecount=0;//显示的页面数
int temp=0;//用于删除帐号时的页面传值
if(rs==null){
//无结果,则不显示信息
out.println( "暂无注册用户 ");
}
else{
rs.last();
rowcount=rs.getRow();
pagecount=(((rowcount%pagesize==0)?(rowcount/pagesize):((rowcount/pagesize)+1)));
String topage=request.getParameter(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);
//显示记录信息
for(int i=1;i <=pagesize;i++){
%>
<tr>
<td> <%=rs.getInt(1)%> </td>
<td> <%=rs.getString(2)%> </td>
<td> <%=rs.getString(4)%> </td>
<td> <%=rs.getString(5)%> </td>
<td> <%=rs.getString(6)%> </td>
<td> <%=rs.getString(7)%> </td>
<td> <a href= "del_customer.jsp?customerid= <%=(temp=rs.getInt(1))%> " target= "mainFrame "> 删除 </a> </td> </tr>
<%
if(!rs.next()){
break;
}
}
%>
<tr align= "center " valign= "middle " bgcolor= "#DFE7F0 ">
<td height= "23 " colspan= "7 "> <a href= "customerEdit.jsp?topage= <%=showpage-1%> "> 上页 </a> <a href= "customerEdit.jsp?topage= <%=showpage+1%> "> 下页 </a> </td>
<td> 共有 <%=rowcount%> 名用户 </td>
<td> 每页 <%=pagesize%> 名用户 </td> </tr>
<%
}
//关闭连接,释放资源。
if(condb!=null){
try{
condb.close();
condb=null;
}
catch(Exception e){
}
}
%>
</table>
</form>
</body>
</html>
———————————————————————————————————
[解决办法]
request.getParameter(cusquery);和request.getParameter(topage);出空指常。
[解决办法]
你给赋值null就是空值啊,跟没赋值一样啊。再者说request.getParameter(topage);的正确语法应该是request.getParameter( "topage ");加双引号的吧?为空的可能也是你传值的时候的问题,你可以在request.getParameter( "topage ");加上 if(topage==null){ topage=(String)session.getValue( "[页面名].topage ");}
session.putValue( "[页面名].topage ", topage);