用JSP+servlet+javabean实现,JSP页面不要暴露SQL语句和字段的.
因为我的论坛分已用完了,所有就500分现金,分少了点,大家别骂我,问题搞定请发支付宝账号.

解决方案 »

  1.   

    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,我感觉应该根据你做的项目决定
      

  2.   

    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("&nbsp");
    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("&nbsp");
    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>
      

  3.   

    对不起,刚才出去吃饭了,能否加我的QQ一起交流.
    我的QQ:82181029
      

  4.   

    Servlet文件如下package com.NewsClass;import java.io.*;
    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);
    }
    };
      

  5.   

    詢問一下,如果數據庫不支持"select top 10 * from table"語句的話該怎麼辦?比如sybase
      

  6.   

    上面说了很多,我只说一下我是怎么分的,不写全部过程了,你应该看的明白的
    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条件。