刚学jsp,分页技术请高手指教!

hmily1226 2006-12-09 08:59:58
每次都提示空指针,请高手指教
<%!
ResultSet rs = null;
ResultSet rsTmp = null;
String sql = "";
int PageSize = 13;
int Page = 1;
int totalPage = 1;
String str = "";
Hashtable ht = new Hashtable(); // Hashtable用于存储班级代号和班级信息之间的对应关系

public String ShowOnePage(ResultSet rs, int Page, int PageSize) {
str = "";
// 先将记录指针定位到相应的位置
try {
rs.absolute( (Page-1) * PageSize + 1);
}catch(SQLException e) {
}
int iPage=1;
for( iPage=1; iPage<=PageSize; iPage++) {
str += showOneRecord(rs,Page);
try {
if(!rs.next()) break;
}catch(Exception e) {}
}
return str;
}

// 显示单行记录子模块, 由于要将当前页码传递到后面的修改和删除页面,
// 因此,下面的shosOneRecord方法多了第二个参数
public String showOneRecord( ResultSet rs, int page ) {
String tt = "";
int endindex = 16; // 在默认情况下显示题目标题中的前12个汉字字符
String tmp = "";
int tmpselectid = 0;
int tmpquestionid = 0;
try {
tt += "<TR class=dbt4 align=middle>";
tmpquestionid = rs.getInt("questionid");
tt += "<TD>" + tmpquestionid + "</TD>";
tmpselectid = rs.getInt("selectid");
if(tmpselectid==1)
tt += "<TD>单选</TD>";
else if(tmpselectid==2)
tt += "<TD><font color=blue>多选</font></TD>";
tt += "<TD>" + (String)(ht.get(rs.getString("classid"))) + "</TD>";
tmp = rs.getString("qname");
if(tmp.length() < endindex)
endindex = tmp.length();
tt += "<TD align=left>" + tmp.substring(0,endindex) + "</TD>";
tt += "<TD><a href=javascript:openwin(" + tmpquestionid + ")>";
tt += "察看</a></TD>";
tt += "<TD><a href=questionchange.jsp?id=" + tmpquestionid + "&Page=" + page + ">修改</TD>";
tt += "<TD><a href=questiondel.jsp?id=" + tmpquestionid + "&Page=" + page + ">删除</TD>";

tt += "</TR>";
}catch(SQLException e) {}

return tt;
}
%>

<%
sql = "select * from test_classinfo";
try {
rs = smt.executeQuery( sql );
}catch(Exception e) {
out.println("访问课程信息数据出错!");
return;
}
if(!rs.next()) {
out.println("系统数据库中无课程信息数据!");
return;
}
do {
ht.put(rs.getString("classid"),rs.getString("classname"));
}while(rs.next());

sql = "select * from test_question_lib order by questionid";
try {
rs = smt.executeQuery( sql );
}catch(Exception e) {
out.println("访问题库信息出错!");
return;
}
%>
<html>

<head>
<title>试题库信息维护</title>
<link rel="stylesheet" href="../public/style.css">
<Script language="JavaScript">
//打开新窗口函数openwin
function openwin(id)
{
window.open('questiondetails.jsp?id='+id,'infoWin', 'height=400,width=600,scrollbars=yes,resizable=yes');
}
</Script>
</head>

<body class="ss">

<h2 ALIGN="CENTER">试题库信息维护</h2>

<hr>
<center>
<table class=dbt2 width=640 cellSpacing=1 cellPadding=3 border=0>
<tr class=dbt3 align=center>
<TH>题目编号</TH>
<TH>题型</TH>
<TH>课程名称</TH>
<TH width=200>题目简介</TH>
<TH>题目详细信息</TH>
<TH colspan=2>编辑操作</TH>
</TR>
<%
rsTmp = smt.executeQuery("select count(*) as mycount from test_question_lib");
rsTmp.next();

int totalrecord = rsTmp.getInt("mycount");
if(totalrecord % PageSize ==0) totalPage = totalrecord / PageSize; // 如果是当前页码的整数倍
else totalPage = (int) Math.floor( totalrecord / PageSize ) + 1; // 如果最后还空余一页

if(totalPage == 0) totalPage = 1;
rsTmp.close();

try {
if(request.getParameter("Page")==null || request.getParameter("Page").equals(""))
Page = 1;
else
Page = Integer.parseInt(request.getParameter("Page"));
// 捕获用户从浏览器地址拦直接输入类似于Page=sdfsdfsdf等非法信息所造成的异常
} catch(java.lang.NumberFormatException e) {
Page = 1;
}

if(Page < 1) Page = 1;
if(Page > totalPage) Page = totalPage;

out.println(ShowOnePage(rs, Page, PageSize));
%>
<TR class=dbt4 align=center>
<TD colspan=7><a href=questionadd.jsp>增加新题</a></TD>
</TR>
</table>
<form Action="questionmanager.jsp" Method="GET">
<%
if(Page != 1) {
out.println("<A HREF=questionmanager.jsp?Page=1>第一页</A>");
out.println("<A HREF=questionmanager.jsp?Page=" + (Page-1) + ">上一页</A>");
}
if(Page != totalPage) {
out.println("<A HREF=questionmanager.jsp?Page=" + (Page+1) + ">下一页</A>");
out.println("<A HREF=questionmanager.jsp?Page=" + totalPage + ">最后一页</A>");
}
rs.close();
%>
<p>输入页数:<input TYPE="TEXT" Name="Page" SIZE="3"> 页数:<font COLOR="Red"><%=Page%>/<%=totalPage%></font>  
题目总数:<font color="red"><%=totalrecord%></font>
</p>
</form>
</center>
<hr>
</body>
</html>
...全文
240 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
javailoveu 2006-12-09
  • 打赏
  • 举报
回复
package myBean;

import java.sql.*;
import myBean.DBConnection;


public class QueryPage {
private DBConnection dbconn = new DBConnection();

public QueryPage() {
}

public ResultSet getPageof(String sql, String pg, int pagesize) {
int page = Integer.parseInt(pg);
int count = dbconn.getCount();
if(count==0)
return null;

int totalpage = (count+pagesize-1)/pagesize;

if(page > totalpage)
page = totalpage;

ResultSet rs = dbconn.execQuery(sql);

int start = (page-1)*pagesize;
try {
for(int i=0; i<start; i++)
rs.next();
}catch(SQLException e) {
System.err.println("QueryPage.getPageof()" +e.getMessage());
}

return rs;
}

public int totalPage(int pagesize) {
return (dbconn.getCount()+pagesize-1)/pagesize;
}
/*
public static void main(String []args) {
ResultSet rs = (new QueryPage()).getPageof("select name from users", "2", 5);

try {
while(rs.next()) {
System.out.println(rs.getString("name"));
}
}catch(SQLException e) {
}
}
*/
}

<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="java.sql.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>查询数据库</title>
</head>
<body>
<jsp:useBean id="db" scope="page" class="myBean.DBConnection" />
<p>数据库内容:
<table border="1" width="95%" align="center">
<tr>
<td with="30%"><b>姓名</b></td>
<td with="70%"><b>电子邮件</b></td>
</tr>
<%
String sql= "select name, email from users";
ResultSet rs = db.execQuery(sql);
while(rs.next()) {
%>
<tr>
<td>
<%=rs.getString("name")%>
</td>
<td>
<%=rs.getString("email")%>
</td>
</tr>
<%
}
%>
</table>
<a href="userinfo.jsp">返回</a>
</body>

</html>
javailoveu 2006-12-09
  • 打赏
  • 举报
回复
JSP编程技巧集锦

实用性问题汇总 一个问题一段代码
浓缩精华收藏品 新手实战必备手册

买本书三五十元 还不如买实用代码
初学者能上台阶 老手具备参考价值

一份30元(WORD文件)

需要者请联系:

e_mail:fzlotuscn@yahoo.com.cn

QQ:595563946


1. 选中的一行记录高亮显示?
2. 在下拉列表框里选择一个值后跳出新窗口?
3. 在JSP中启动execl?
4. 两级联动菜单
5. java中如何把一个目录下的文件移到另一个指定的目录?
6. 制作表格线?
7. jsp如判别一个字符在A到Z之间?
8. 得到一浮点数小数点后4位,如何写以函数截取为两位
9. 整型转字符?
10. 显示数据库的记录,点击哪个标题栏,就按照哪个标题排序
11. 制作两个按钮
12. 用什么sql语句将数据库中的一条记录,复制为两条?
13. 有兩個按鈕A,B,其中A按下去,A就不可以再按,另外B按下去,A可以再按..請問如何用javascript控制.?
14. jsp中的数据库的连接方式
15. 在jsp中,怎么实现按回车就可提交表单?
16. 在JSP中如何传递数组?
17. 按地址取图片?
18. JSP中如何上传图片到数据库字段?
19. 页面自动刷新?
20. 表单自动提交?
21. 从JSP传数据的到JAVABEAN里?
22. weblogic 数据池连接? 数据源 JNDI名字 mysource
23. 三级联动菜单?
24. 在JSP中如何调用浏览器中的"另存为"功能?
25. 网页全屏显示
26. 求两个日期相隔了多少天:输入时间格式为(yyyy-mm-dd)
27. 上传文件对话框
28. 分页测试
29. 下载文件
30. 简单汉字判断
31. 将JSP的变量或者bean传递给JAVASCRIPT使用?
32. 把一种格式(如yyyy-mm-dd)的日期变量转换成另外一种格式(如dd-mm-yyyy)的日期变量!
33. 实现在页面上添加一行输入对话框
34. 制作验证码图片?
35. 图片缩小放大功能
36. 点击输入框弹出日期选择?
37. 在图片上传前查看自己要上传的图片?
38. 在图片排列的页面上选中一个图片,然后把它删掉?
39. 显示某目录下的所有文件
40. 把复选框中选中的值直接显示在输入文本框中?
41. 选择路径下的文件直接显示文件内容?
42. 制作进度条?
43. 对较长字符省略显示?
44. 制作日历?
45. 点击文本弹出一个选择框,选中值后返回并显示
46. 关闭框架页面回到没框架的页面?
47. 选中多条记录一次性删除?
48. 自动获取页面文件名?
49. 在JSP中调用ActiveX控件?
50. 使用SmartUpload实现文件上传?
51. 使用iReport和Jasperreport开发报表?
52. 使用iText生成PDF?
53. 制作图片水印?
54. 在页面中屏蔽键盘功能键?
55. 禁止用户复制网页内容?
56. 实现不在地址拦中显示当前URL?
57. 获取用户的真实IP地址?
58. 获取用户浏览器信息?
59. 获取当前绝对路径?
60. 将HTML文件转换成XML文件?
61. 结合XML和XSL输出HTML页面?
62. 制作动态树型菜单制作?
63. 制作类似QQ的短消息提示?
64. 用jfreechat制作拄、饼、曲线图型?
65. 文本框怎么只容许输入数字?
66. 打开Word和Execl文件?
67. 生成Word 和 Excel文档?
68. JSP如何读取Word内容?
69. 浏览服务器目录/文件?
70. jsp直接弹出下载框下载文件?
71. 配置数据连接池和数据源(Tomcat)
72. 点击图1变为图2

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧