java代码:
package database.operation;
import java.sql.*;
import com.sun.rowset.*;/**
* 分页显示
*/
public class ShowRecordByPage
{ int pageSize=10; //每页显示的记录数
int pageAllCount=0; //分页后的总页数
int showPage=1; //当前显示页
StringBuffer presentPageResult; //显示当前页的内容
CachedRowSetImpl rowSet; //用于存储ResultSet对象
String databaseName=""; //数据库的名字
String tableName=""; //表名
String user=""; //用户
String password=""; //密码
String ziduan[]=new String[100]; //字段
int num=0; //字段个数
public ShowRecordByPage()
{ presentPageResult=new StringBuffer();
try{ //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
}
catch(Exception e){ }
}
public void setPageSize(int size)
{ pageSize=size;
num=0;
String
uri="jdbc:odbc:"+databaseName;
try{ Connection con=DriverManager.getConnection(uri,user,password);
DatabaseMetaData metadata=con.getMetaData();
//ResultSet rs1=metadata.getColumns(null,null,"emp",null);
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int k=0;
while(rs1.next())
{ num++;
ziduan[k]=rs1.getString(4);
k++;
}
Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=sql.executeQuery("SELECT * FROM "+tableName);
rowSet=new CachedRowSetImpl();//创建行集对象
rowSet.populate(rs);
con.close();
rowSet.last();
int m=rowSet.getRow();
int n=pageSize;
pageAllCount=((m%n)==0)?(m/n):(m/n+1);
}
catch(Exception exp){}
}
public int getPageSize()
{ return pageSize;
}
public int getPageAllCount()
{ return pageAllCount;
}
public void setShowPage(int n)
{ showPage=n;
}
public int getShowPage()
{ return showPage;
}
public StringBuffer getPresentPageResult()
{ if(showPage>pageAllCount)
showPage=1;
if(showPage<=0)
showPage=pageAllCount;
presentPageResult=show(showPage);
return presentPageResult;
}
public StringBuffer show(int page)
{ StringBuffer str=new StringBuffer();
str.append("<table border=1>");
str.append("<tr>");
for(int i=0;i<num;i++)
{ str.append("<th>"+ziduan[i]+"</th>");
}
str.append("</tr>");
try{ rowSet.absolute((page-1)*pageSize+1);
for(int i=1;i<=pageSize;i++)
{ str.append("<tr>");
for(int k=1;k<num;k++)
{ str.append("<tr>"+rowSet.getString(k)+"</td>");
}
str.append("</tr>");
rowSet.next();
}
}
catch(SQLException exp){}
str.append("</table>");
return str;
}
public void setdatabaseName(String s)
{ databaseName=s.trim();
}
public String getdatabaseName()
{ return databaseName;
}
public void setTableName(String s)
{ tableName=s.trim();
}
public String getTableName()
{ return tableName;
}
public void setPassword(String s)
{ password=s.trim();
}
public String getPassword()
{ return password;
}
public void setUser(String s)
{ user=s.trim();
}
public String getUser()
{ return user;
}
}jsp代码:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="database.operation.*" %>
<jsp:useBean id="look" class="database.operation.ShowRecordByPage" scope="session" />
<jsp:setProperty name="look" property="databaseName" value="emp"/>
<jsp:setProperty name="look" property="tableName" value="emp"/>
<jsp:setProperty name="look" property="user" param="sa"/>
<jsp:setProperty name="look" property="password" param="sa"/>
<jsp:setProperty name="look" property="pageSize" value="2"/>
<HTML>
<BODY>
数据库
<jsp:getProperty name="look" property="databaseName" />中
<br><br>
<jsp:getProperty name="look" property="tableName"/>表的记录将被分页显示。
<br><br>
共有<jsp:getProperty name="look" property="pageAllCount"/>页
<br><br>
每页最多显示<jsp:getProperty name="look" property="pageSize"/>条记录
<jsp:setProperty name="look" property="showPage"/>
<jsp:getProperty name="look" property="presentPageResult"/>
<br>
当前显示第<jsp:getProperty name="look" property="showPage"/>页
<br>单击"前一页"或"后一页"按钮查看记录
<table>
<tr>
<td>
<form action="">
<input type=hidden name="showPage" value="<%=look.getShowPage()-1%>">
<input type=submit name="g" value="前一页">
</form>
</td>
<td>
<form action="">
<input type=hidden name="showPage" value="<%=look.getShowPage()+1%>">
<input type=submit name="g" value="后一页">
</form>
</td>
<td>
<form action="">
输入页码:<input type=text name="showPage" size=5>
<input type=submit name="g" value="提交">
</form>
</td>
</tr>
</table>
</Body>
</HTML>出错提示:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
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
database.operation.ShowRecordByPage.show(ShowRecordByPage.java:82)
database.operation.ShowRecordByPage.getPresentPageResult(ShowRecordByPage.java:71)
org.apache.jsp.showByPage_jsp._jspService(showByPage_jsp.java:93)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.
package database.operation;
import java.sql.*;
import com.sun.rowset.*;/**
* 分页显示
*/
public class ShowRecordByPage
{ int pageSize=10; //每页显示的记录数
int pageAllCount=0; //分页后的总页数
int showPage=1; //当前显示页
StringBuffer presentPageResult; //显示当前页的内容
CachedRowSetImpl rowSet; //用于存储ResultSet对象
String databaseName=""; //数据库的名字
String tableName=""; //表名
String user=""; //用户
String password=""; //密码
String ziduan[]=new String[100]; //字段
int num=0; //字段个数
public ShowRecordByPage()
{ presentPageResult=new StringBuffer();
try{ //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
}
catch(Exception e){ }
}
public void setPageSize(int size)
{ pageSize=size;
num=0;
String
uri="jdbc:odbc:"+databaseName;
try{ Connection con=DriverManager.getConnection(uri,user,password);
DatabaseMetaData metadata=con.getMetaData();
//ResultSet rs1=metadata.getColumns(null,null,"emp",null);
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int k=0;
while(rs1.next())
{ num++;
ziduan[k]=rs1.getString(4);
k++;
}
Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=sql.executeQuery("SELECT * FROM "+tableName);
rowSet=new CachedRowSetImpl();//创建行集对象
rowSet.populate(rs);
con.close();
rowSet.last();
int m=rowSet.getRow();
int n=pageSize;
pageAllCount=((m%n)==0)?(m/n):(m/n+1);
}
catch(Exception exp){}
}
public int getPageSize()
{ return pageSize;
}
public int getPageAllCount()
{ return pageAllCount;
}
public void setShowPage(int n)
{ showPage=n;
}
public int getShowPage()
{ return showPage;
}
public StringBuffer getPresentPageResult()
{ if(showPage>pageAllCount)
showPage=1;
if(showPage<=0)
showPage=pageAllCount;
presentPageResult=show(showPage);
return presentPageResult;
}
public StringBuffer show(int page)
{ StringBuffer str=new StringBuffer();
str.append("<table border=1>");
str.append("<tr>");
for(int i=0;i<num;i++)
{ str.append("<th>"+ziduan[i]+"</th>");
}
str.append("</tr>");
try{ rowSet.absolute((page-1)*pageSize+1);
for(int i=1;i<=pageSize;i++)
{ str.append("<tr>");
for(int k=1;k<num;k++)
{ str.append("<tr>"+rowSet.getString(k)+"</td>");
}
str.append("</tr>");
rowSet.next();
}
}
catch(SQLException exp){}
str.append("</table>");
return str;
}
public void setdatabaseName(String s)
{ databaseName=s.trim();
}
public String getdatabaseName()
{ return databaseName;
}
public void setTableName(String s)
{ tableName=s.trim();
}
public String getTableName()
{ return tableName;
}
public void setPassword(String s)
{ password=s.trim();
}
public String getPassword()
{ return password;
}
public void setUser(String s)
{ user=s.trim();
}
public String getUser()
{ return user;
}
}jsp代码:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="database.operation.*" %>
<jsp:useBean id="look" class="database.operation.ShowRecordByPage" scope="session" />
<jsp:setProperty name="look" property="databaseName" value="emp"/>
<jsp:setProperty name="look" property="tableName" value="emp"/>
<jsp:setProperty name="look" property="user" param="sa"/>
<jsp:setProperty name="look" property="password" param="sa"/>
<jsp:setProperty name="look" property="pageSize" value="2"/>
<HTML>
<BODY>
数据库
<jsp:getProperty name="look" property="databaseName" />中
<br><br>
<jsp:getProperty name="look" property="tableName"/>表的记录将被分页显示。
<br><br>
共有<jsp:getProperty name="look" property="pageAllCount"/>页
<br><br>
每页最多显示<jsp:getProperty name="look" property="pageSize"/>条记录
<jsp:setProperty name="look" property="showPage"/>
<jsp:getProperty name="look" property="presentPageResult"/>
<br>
当前显示第<jsp:getProperty name="look" property="showPage"/>页
<br>单击"前一页"或"后一页"按钮查看记录
<table>
<tr>
<td>
<form action="">
<input type=hidden name="showPage" value="<%=look.getShowPage()-1%>">
<input type=submit name="g" value="前一页">
</form>
</td>
<td>
<form action="">
<input type=hidden name="showPage" value="<%=look.getShowPage()+1%>">
<input type=submit name="g" value="后一页">
</form>
</td>
<td>
<form action="">
输入页码:<input type=text name="showPage" size=5>
<input type=submit name="g" value="提交">
</form>
</td>
</tr>
</table>
</Body>
</HTML>出错提示:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
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
database.operation.ShowRecordByPage.show(ShowRecordByPage.java:82)
database.operation.ShowRecordByPage.getPresentPageResult(ShowRecordByPage.java:71)
org.apache.jsp.showByPage_jsp._jspService(showByPage_jsp.java:93)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.
解决方案 »
- 静态HTML乱码
- 求教: ognl如何取cookie? 或者,纯html中js如何判断是否登录?
- S2SH删除问题
- 关于getOutputStream() has already been called for this response的问题?
- 关于数据库连接池
- 最近在用spring+hibernate,可是一定要使lazy=“false”,否则涉及到Set时,会报错。
- spring+hibernate+struts(hibernate使用了视图)启动速度为什么这么慢
- 在excel中,如何通过单元格的别名获取单元格里的内容
- 关于两个页面之间的传递参数问题,高手进来一看!
- 数据类型转换
- struts2访问属性文件失败,在线等
- jQuery接收struts2返回生成json数据不成功
空指针
{
StringBuffer str=new StringBuffer();
str.append("<table border=1>");
str.append("<tr>");
for(int i=0;i<num;i++)
{
str.append("<th>"+ziduan[i]+"</th>");
}
str.append("</tr>");
try{
rowSet.absolute((page-1)*pageSize+1);
for(int i=1;i<=pageSize;i++)
{
str.append("<tr>");
for(int k=1;k<num;k++)
{
str.append("<tr>"+rowSet.getString(k)+"</td>");
}
str.append("</tr>");
rowSet.next();
}
str.append("</table>");
return str;
}
catch(SQLException exp){}}
catch(SQLException exp){}
str.append("</table>");
return str;
}
没有放在里面啊!
看看这两行database.operation.ShowRecordByPage.show(ShowRecordByPage.java:82)
database.operation.ShowRecordByPage.getPresentPageResult(ShowRecordByPage.java:71)