示例:
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
int i,j,k; //设置一页显示的记录数 public String backdata(int count,String strPage){
PreparedStatement stmt=null;
ResultSet rs=null;
intPageSize = 6; //每页显示6条纪录
intRowCount=count;
String backStr="";
if(strPage==null){
intPage = 1;
}else{
intPage = Integer.parseInt(strPage);
if(intPage<1)
intPage = 1;
}
//计算总页数
intPageCount =(intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
String secondTr="<tr><td nowrap>选择</td><td nowrap>标题</td><td nowrap>文件名</td><td nowrap nowrap>录入部门</td><td nowrap>填写人</td><td nowrap>发布时间</td></tr>";
String printStr="";
try{
stmt=((Connection)this.getEnvironment().lookup("env:res/connection/awh")).prepareStatement(
"select * from law_statute order by law_publt desc");
rs=stmt.executeQuery();
i = (intPage-1) * intPageSize;
for(j=0;j<i;j++)
rs.next();
//显示数据
i = 0;
while(i<intPageSize && rs.next()){
String cid=rs.getString("cid");
String lawtitle=rs.getString("law_title");
Date date=rs.getDate("law_publt");
String lawfilen=rs.getString("law_filen");
String writdept=rs.getString("writ_dept");
String writperson=rs.getString("writ_person");
String lawpublt=date.toString();
String checkNa="chekb";//+String.valueOf(i);
printStr=printStr+"<tr><td><input type='checkbox' name='"+checkNa+"' id='"+cid+"'></td><td>"+lawtitle+"</td><td>"+lawfilen+"</td><td>"+writdept+"</td><td>"+writperson+"</td><td>"+lawpublt+"</td></tr>";
i++;
}
}catch(Exception ex){
System.out.println(ex.getMessage());
}finally{
try{
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
}catch(Exception e){}
}
String dataStr="<%strPage = request.getParameter('page');%>";
String pageStr="第"+intPage+"页 "+" 共"+intPageCount+"页";
String forPgStr="";
String backPgStr="";
if(intPage<intPageCount){
int pageNum=intPage+1;
forPgStr="<a href='lawstatute.jsp?page="+pageNum+"'>下一页</a>";
}
if(intPage>1){
int pageNum=intPage-1;
backPgStr="<a href='lawstatute.jsp?page="+pageNum+"'>上一页</a>";
}
String firstTr="<table name='table1' border='1'><tr><td colspan='2'>"+pageStr+"</td><td colspan='2'><b>法律法规</b></td><td colspan='2'>"+forPgStr+" "+backPgStr+"</td></tr>";
String lastTr="<tr><td colspan='6'><input type='checkbox' name='checkAll' onclick='checkedAll()'>全选 <label onclick='addData()' style='cursor:hand'>增加</label> <label onclick='amendData()' style='cursor:hand'>修改</label> <label onclick='deleteData()' style='cursor:hand'>删除</label></td></tr>";
backStr=dataStr+firstTr+secondTr+printStr+lastTr+"</table>";
return backStr;
}
/*--------------------------- end ----------------------------------------*/
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
int i,j,k; //设置一页显示的记录数 public String backdata(int count,String strPage){
PreparedStatement stmt=null;
ResultSet rs=null;
intPageSize = 6; //每页显示6条纪录
intRowCount=count;
String backStr="";
if(strPage==null){
intPage = 1;
}else{
intPage = Integer.parseInt(strPage);
if(intPage<1)
intPage = 1;
}
//计算总页数
intPageCount =(intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
String secondTr="<tr><td nowrap>选择</td><td nowrap>标题</td><td nowrap>文件名</td><td nowrap nowrap>录入部门</td><td nowrap>填写人</td><td nowrap>发布时间</td></tr>";
String printStr="";
try{
stmt=((Connection)this.getEnvironment().lookup("env:res/connection/awh")).prepareStatement(
"select * from law_statute order by law_publt desc");
rs=stmt.executeQuery();
i = (intPage-1) * intPageSize;
for(j=0;j<i;j++)
rs.next();
//显示数据
i = 0;
while(i<intPageSize && rs.next()){
String cid=rs.getString("cid");
String lawtitle=rs.getString("law_title");
Date date=rs.getDate("law_publt");
String lawfilen=rs.getString("law_filen");
String writdept=rs.getString("writ_dept");
String writperson=rs.getString("writ_person");
String lawpublt=date.toString();
String checkNa="chekb";//+String.valueOf(i);
printStr=printStr+"<tr><td><input type='checkbox' name='"+checkNa+"' id='"+cid+"'></td><td>"+lawtitle+"</td><td>"+lawfilen+"</td><td>"+writdept+"</td><td>"+writperson+"</td><td>"+lawpublt+"</td></tr>";
i++;
}
}catch(Exception ex){
System.out.println(ex.getMessage());
}finally{
try{
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
}catch(Exception e){}
}
String dataStr="<%strPage = request.getParameter('page');%>";
String pageStr="第"+intPage+"页 "+" 共"+intPageCount+"页";
String forPgStr="";
String backPgStr="";
if(intPage<intPageCount){
int pageNum=intPage+1;
forPgStr="<a href='lawstatute.jsp?page="+pageNum+"'>下一页</a>";
}
if(intPage>1){
int pageNum=intPage-1;
backPgStr="<a href='lawstatute.jsp?page="+pageNum+"'>上一页</a>";
}
String firstTr="<table name='table1' border='1'><tr><td colspan='2'>"+pageStr+"</td><td colspan='2'><b>法律法规</b></td><td colspan='2'>"+forPgStr+" "+backPgStr+"</td></tr>";
String lastTr="<tr><td colspan='6'><input type='checkbox' name='checkAll' onclick='checkedAll()'>全选 <label onclick='addData()' style='cursor:hand'>增加</label> <label onclick='amendData()' style='cursor:hand'>修改</label> <label onclick='deleteData()' style='cursor:hand'>删除</label></td></tr>";
backStr=dataStr+firstTr+secondTr+printStr+lastTr+"</table>";
return backStr;
}
/*--------------------------- end ----------------------------------------*/
解决方案 »
- Hibernate中session.getConnection()
- ORA-01000: 超出打开游标的最大数
- 求tomcat整合IIS大于50k的文件上传失败的解决方法
- 自己定义jstl分页
- 求助: myeclipse 中建 web project 不能自动导入 javaee5 libraries和 jre system libraries
- 请教一个线程的问题,递归和死循环的问题
- 谁有在Struts中使用displaytag的例子啊?发过来立即给分!
- java 转发样式和图片丢失
- 再问:怎么把document类型的数据转换成String类型?
- 如果用在个JSP页面直接显示EXCEL内容?
- 该死的中文显示问题,帮帮忙
- servlet为何物?它是什么的简称?
数据库用户为sa 密码空,可以自己修改的。
二、代码:
<%@ page contentType="text/html;charset=gb2312"%>
<%
//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;
int i,j,k; //设置一页显示的记录数
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; }
//装载JDBC-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
strCon = "jdbc:odbc:Test_DB";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"sa","");
//创建SQL语句对象
sqlStmt = sqlCon.createStatement();
//获取记录总数
strSQL = "select count(*) from guestbook";
sqlRst = sqlStmt.executeQuery(strSQL);
//执行SQL语句并取得结果集
sqlRst.next(); //记录集刚打开的时候,指针位于第一条记录之前
intRowCount = sqlRst.getInt(1);
sqlRst.close(); //关闭结果集
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount;
//设置获取数据SQL语句
strSQL = "select name,email,body from guestbook";
//执行SQL语句并取得结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//将记录指针定位到待显示页的第一条记录上
i = (intPage-1) * intPageSize;
for(j=0;j<i;j++) sqlRst.next(); %>
<html>
<head>
<title>JSP数据库操作例程 - 数据分页显示 - JDBC-ODBC</title>
</head>
<body>
<p align=center>jdbc-odbc留言版</p>
<table border="1" cellspacing="0" cellpadding="0" width=600 align=center>
<%
//显示数据
i = 0;
while(i<intPageSize && sqlRst.next()){ %>
<tr>
<td>姓名:<%=sqlRst.getString(1)%></td>
<td>邮件:<%=sqlRst.getString(2)%></td>
</tr>
<tr>
<td colspan=2><%=sqlRst.getString(3)%></td>
</tr>
<% i++; } %>
<tr>
<td colspan=2 align=center>
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%>
<a href="mssql.jsp?page=<%=intPage+1%>">下一页</a><%
}
%>
<%if(intPage>1){%>
<a href="mssql.jsp?page=<%=intPage-1%>">上一页</a><%
}
%>
</td>
</tr>
</table> </body>
</html>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>三、怎么去运行?
将代码存为文件test.jsp
Orion Application Server下:
Copy到orion的default-web-app目录下,通过:
http://localhost:port/test.jsp
访问测试
对于Resin,Tomcat,JWS等等,都可以运行通过。******************************************
一、前言:
其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之六(MySQL翻页例子) 》 简单改写了一下。二、配置:
(1)JDBC
需要将用到的JDBC驱动Copy到[ORION]/lib目录下
(2)data-source
在[ORION]/config/data-sources.xml文件中加入如下:
〈data-source
class="com.evermind.sql.DriverManagerDataSource"
name="mySqlDbpage"
location="jdbc/HypersonicCoreDS"
xa-location="jdbc/xa/HypersonicXADS"
ejb-location="jdbc/mysqlDbPage"
connection-driver="org.gjt.mm.mysql.Driver"
username="root"
password=""
url="jdbc:mysql://localhost/test"
inactivity-timeout="30"
/〉需要注意的是:
(1)ejb-location这个后面的“jdbc/mysqlDbPage”是JNDI要来查找的。
(2)connection-driver为JDBC数据库驱动
(3)url是JDBC中的URL
(4)username为数据库用户名
(5)password为用户密码
(6)inactivity-timeout为数据库连接超时,默认为30秒
对于其他的地方不要改。三、改写后的代码如下:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext" %>
<%
//建立一个JNDI查找对象
InitialContext JNDI_Context = new InitialContext();
//JNDI查找数据源
DataSource ds = (DataSource) JNDI_Context.lookup("jdbc/mysqlDbPage");
//得到一个数据源连接
Connection conn = ds.getConnection();
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;
int i;
//设置一页显示的记录数
intPageSize = 2;
//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
} else{
//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
// 得到结果
stmt = conn.createStatement();
ResultSet sqlRst = stmt.executeQuery("select f1 from test");
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount)
intPage = intPageCount;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - mysql</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>姓名</th>
</tr>
<% if(intPageCount>0)
{
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){ %>
<tr>
<td>
<%=sqlRst.getString(1)%>
</td>
</tr>
<% sqlRst.next();
i++;
}
}
%>
</table>
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%><a href="mysqlpage.jsp?page=<%=intPage+1%>">下一页</a><%}%>
<%if(intPage>1){%><a href="mysqlpage.jsp?page=<%=intPage-1%>">上一页</a><%}%>
</body>
</html>
<%
//关闭结果集
sqlRst.close();
%>
三、怎么去运行?
见前文《JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)》。
注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)