Jsp如下: ********************** <%@ page language="java" import="java.util.*,java.sql.*" %> <%@ page contentType="text/html;charset=gb2312"%> <jsp:useBean id="cn" scope="page" class="myConnection.Conn" /><!--引用数据库操作的bean,自己完成,这里不再赘述--> <% int curpage=1;//当前页 int page_record=20;//每页显示的记录数 //用下面的方法(sql查询完成,速度快) curpage=Integer.parseInt(request.getParameter("page"));//获取传递的值,需要显示的页 ResultSet rs=cn.rsexecuteQuery("select top "+page_record+" * from tablename where id not in (select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc"); //本查询语句得到的是所要显示的1000页的20条记录,大致思路为——子查询排除需要显示的记录前的所有记录,父查询则对余下的记录进行降序排列 while(rs.next) { out.println(rs.getInt("id").toString()); } rs.close(); %>具体如何应用 servlet,javabean,我感觉应该根据你做的项目决定
int intMaxPageNumber = 0;//总页数 int intCountNumber = 0;//总个数 int intPageSize = 10;//每页个数 int intCurrentPage = 1;//当前页 String strCurrentPage = (String)request.getParameter("currentpage"); if(strCurrentPage!=null)intCurrentPage = Integer.parseInt(strCurrentPage); String strSQL = ""; ResultSet rs = null; DataBean databean = new DataBean(); strSQL = " select count(*) as number from " + 表名+ " where " + 条件;rs = databean.getResultSet(strSQL); if(rs.next()) intCountNumber = rs.getInt("number");if(intCountNumber%intPageSize==0){ intMaxPageNumber = intCountNumber / intPageSize ; }else{ intMaxPageNumber = intCountNumber / intPageSize + 1; }int intLowIndex = (intCurrentPage-1)*intPageSize;//当前页的首ID int intTopIndex = (intCurrentPage)*intPageSize;//当前页的尾ID strSQL = " SELECT * " + " FROM (SELECT TOP " + intTopIndex + " * " + " FROM " + strDateTableName + " where " + strWhereSQL + " ORDER BY CreateDate desc) DERIVEDTBL " + " WHERE (ID NOT IN " + " (SELECT TOP " + intLowIndex + " id " + " FROM "+strDateTableName + " where " + strWhereSQL + " ORDER BY CreateDate desc)) "; rs=databean.getResultSet(strSQL); while(rs.next()){ <!--循环--> }<!--页码部分--> <table width="100%" height="22" border="0" cellpadding="0" cellspacing="0" align="center"> <tr> <td align="left" valign="middle" class="page"> <% if(intCurrentPage==1){ out.print("首页"); out.print(" "); out.print("上一页"); }else{ %> <a href='#' onclick="goPage('1');"> 首页</a> <a href='#' onclick="goPage('<%=intCurrentPage-1%>');">上一页</a> <% } %>
詢問一下,如果數據庫不支持"select top 10 * from table"語句的話該怎麼辦?比如sybase
上面说了很多,我只说一下我是怎么分的,不写全部过程了,你应该看的明白的 1.通过自定义标签把你需要的参数传递到后台 2.通过你传递的参数组合你的SQL语句 3.组合成如下SQL语句的格式select top 10 * from tablename where id not in (select top 10*4 id from tablename) //10 每页显示记录数 //4 第几页 //id 主健 //自己写个函数吧,别忘了加上where 和order by条件。
**********************
<%@ page language="java" import="java.util.*,java.sql.*" %>
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="cn" scope="page" class="myConnection.Conn" /><!--引用数据库操作的bean,自己完成,这里不再赘述-->
<%
int curpage=1;//当前页
int page_record=20;//每页显示的记录数
//用下面的方法(sql查询完成,速度快)
curpage=Integer.parseInt(request.getParameter("page"));//获取传递的值,需要显示的页
ResultSet rs=cn.rsexecuteQuery("select top "+page_record+" * from tablename where id not in (select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc");
//本查询语句得到的是所要显示的1000页的20条记录,大致思路为——子查询排除需要显示的记录前的所有记录,父查询则对余下的记录进行降序排列
while(rs.next) {
out.println(rs.getInt("id").toString());
}
rs.close();
%>具体如何应用 servlet,javabean,我感觉应该根据你做的项目决定
int intCountNumber = 0;//总个数
int intPageSize = 10;//每页个数
int intCurrentPage = 1;//当前页 String strCurrentPage = (String)request.getParameter("currentpage");
if(strCurrentPage!=null)intCurrentPage = Integer.parseInt(strCurrentPage);
String strSQL = "";
ResultSet rs = null;
DataBean databean = new DataBean();
strSQL = " select count(*) as number from " + 表名+ " where " + 条件;rs = databean.getResultSet(strSQL);
if(rs.next()) intCountNumber = rs.getInt("number");if(intCountNumber%intPageSize==0){
intMaxPageNumber = intCountNumber / intPageSize ;
}else{
intMaxPageNumber = intCountNumber / intPageSize + 1;
}int intLowIndex = (intCurrentPage-1)*intPageSize;//当前页的首ID
int intTopIndex = (intCurrentPage)*intPageSize;//当前页的尾ID
strSQL = " SELECT * " +
" FROM (SELECT TOP " + intTopIndex + " * " +
" FROM " + strDateTableName + " where " + strWhereSQL +
" ORDER BY CreateDate desc) DERIVEDTBL " +
" WHERE (ID NOT IN " +
" (SELECT TOP " + intLowIndex + " id " +
" FROM "+strDateTableName + " where " + strWhereSQL +
" ORDER BY CreateDate desc)) "; rs=databean.getResultSet(strSQL);
while(rs.next()){
<!--循环-->
}<!--页码部分-->
<table width="100%" height="22" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td align="left" valign="middle" class="page">
<%
if(intCurrentPage==1){
out.print("首页");
out.print(" ");
out.print("上一页");
}else{
%>
<a href='#' onclick="goPage('1');"> 首页</a>
<a href='#' onclick="goPage('<%=intCurrentPage-1%>');">上一页</a>
<%
}
%>
<%
if(intCurrentPage==intMaxPageNumber || intMaxPageNumber==0){
out.print("下一页");
out.print(" ");
out.print("尾页");
}else{
%>
<a href='#' onclick="goPage('<%=intCurrentPage+1%>');">下一页</a>
<a href='#' onclick="goPage('<%=intMaxPageNumber%>');">尾页</a>
<%
}
%>
</td>
<td align="right" valign="middle" class="page">第<%=intCurrentPage%>页/共<%=intMaxPageNumber%>页 共<%=intCountNumber%>记录</td>
</tr>
</table>
我的QQ:82181029
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.util.*;public class NewsServlet extends HttpServlet
{
Connection con=DatabaseConnection.getConnection(); //doGet()
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
request.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter(); try
{
String action=(String)request.getParameter("action"); //当参数为空或action=all时,返回所有记录
if (action == null || action.equals("") || action.equals("all"))
{
Collection ret=new ArrayList();
Statement stm=con.createStatement();
ResultSet rs=stm.executeQuery("select * from newsclass order by orderid asc");
while (rs.next())
{
NewsVO nvo=new NewsVO();
nvo.setNid(rs.getInt("nid"));
nvo.setClassname(rs.getString("classname"));
nvo.setOrderid(rs.getInt("orderid"));
ret.add(nvo);
} request.setAttribute("nvos",ret);
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/NewsClass/index.jsp");
requestDispatcher.forward(request,response);
//关闭对象
//rs.close();
//stm.close();
//con.close();
} //当参数为空或action=save时,提交添加,删除,修改记录
else if (action.equals("save"))
{ //根据表单提交判断是否增加记录
String classname=(String)request.getParameter("classname").trim();
if (classname == null || classname.equals(""))
{
//没有添加分类!
}
else
{
//判断orderid
int orderid=0;
try
{
orderid=Integer.parseInt(request.getParameter("orderid"));
}
catch(Exception e)
{
orderid=0;
} PreparedStatement stm=con.prepareStatement("insert into newsclass(classname,orderid) values(?,?)");
stm.setString(1,classname);
stm.setInt(2,orderid);
stm.execute();
}
//判断删除记录 String[] delid=(String[])request.getParameterValues("delid");
String[] tempdelid=delid.split(","); for (int i=0;i<=tempdelid.length;i++)
{
out.println(tempdelid[i]+"<br>");
}
}
else
{
out.println("待定!");
}
}
catch(Exception e)
{ }
} //doPost()
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
doGet(request,response);
}
};
1.通过自定义标签把你需要的参数传递到后台
2.通过你传递的参数组合你的SQL语句
3.组合成如下SQL语句的格式select top 10 * from tablename where id not in (select top 10*4 id from tablename)
//10 每页显示记录数
//4 第几页
//id 主健
//自己写个函数吧,别忘了加上where 和order by条件。