亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

Jsp真分頁實例---分頁

2024-09-05 00:22:59
字體:
來源:轉載
供稿:網友

網頁的分頁功能的實現比較簡單,實現方法也多種多樣。

今天總結一個簡單的Jsp真分頁實例。

首先,提到分頁就要先明確一個概念,何為真分頁何謂假分頁。

假分頁:一次性從數據庫讀出表的所有數據一次性的返回給客戶端,由js來控制每一頁的顯示

真分頁:由程序控制,每一次只返回一頁大小的數據,顯示到客戶端。

由此可以很清楚的分辨出真假分頁各自的優缺點:

假分頁:由于一次性讀出所有數據并返回給客戶端,如果數據量龐大,所以這一次的動作可能是非常消耗服務器資源和帶寬的,

但是返回給客戶端以后就非常輕松了,客戶在一段時間內不會再像服務器端請求資源。但不代表可能出現一些意外情況,

比如說客戶將瀏覽器關閉,重新訪問網站等。所以,如果數據量相當龐大,不建議使用用真分頁。

真分頁:假分頁每次只取需要的數據返回給客戶端,比起真分頁沒有那么大的數據庫壓力。但也因為這個工作特性,所以假分頁

的方法需要頻繁和服務器端進行交互。既然頻繁交互,自然也會給服務器帶來負擔。

綜上:如果數據量較小,使用假分頁的效果會更優,如果數據量龐大,使用真分頁的效果更優。

分析完特性,下面就來列舉一個簡單的真分頁實例。

真分頁是通過程序來控制的,每次向數據庫請求需要的數據。

簡述實現思路業務流程:

首先:客戶端帶著page參數請求客戶端,若沒有帶page參數,說明是第一次訪問,則page參數默認為0;

其次:服務端根據page參數,調用相關函數,從數據庫中取出表中數據,封裝成相關對象,返回給客戶端,并且返回新page參數及總頁數;

最后:再客戶端顯示請求的相關數據,并根據page參數及總頁數兩個參數,決定上一頁下一頁的按鈕是否可用。

數據庫操作類:

public class DBBean {  private Connection con;  private PreparedStatement pstmt;  private ResultSet rs;  private String dbName ="test";  private String dbuser = "root";  private String dbpass ="******";    static{    try{      Class.forName("com.mysql.jdbc.Driver");    }catch(ClassNotFoundException e){      System.out.println(e);    }      }    public void prepareConnection(){    try{      con=DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbName,dbuser,dbpass);    }catch(SQLException e){      System.out.println(e);    }  }  //關閉連接  public void close(){      try {        if(con!=null)          con.close();      } catch (SQLException e) {        // TODO Auto-generated catch block        e.printStackTrace();      }      con = null;      try {        if(pstmt!=null)          pstmt.close();      } catch (SQLException e) {        // TODO Auto-generated catch block        e.printStackTrace();      }      pstmt = null;  }  //設置參數  private void setParems(String[] parems){    if(parems!=null){      for(int i=0;i<parems.length;i++){        try {          pstmt.setString(i+1, parems[i]);        } catch (SQLException e) {          // TODO Auto-generated catch block          e.printStackTrace();        }      }    }  }  public ResultSet executeQuery(String sql,String[] parems){    ResultSet res = null;    prepareConnection();    try {      pstmt = con.prepareStatement(sql);      setParems(parems);      res = pstmt.executeQuery();    } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }finally{     }    return res;  }}

學生類:

public class StudentBean {  private long id;  private String name;  private String phone;  private int age;  private int score;  public long getId() {    return id;  }  public void setId(long id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public String getPhone() {    return phone;  }  public void setPhone(String phone) {    this.phone = phone;  }  public int getAge() {    return age;  }  public void setAge(int age) {    this.age = age;  }  public int getScore() {    return score;  }  public void setScore(int score) {    this.score = score;  }}

學生數據操作類

public class StudentDao implements StudentDaoIn {@Override public ArrayList<StudentBean> findByPage(int page){    DBBean db = new DBBean();    int begin = (page-1) * 5;    String sql = "select * from t_student limit "+begin+",5";    ResultSet rs = db.executeQuery(sql,null);    ArrayList<StudentBean> list = new ArrayList<StudentBean>();    try {      while(rs.next()){        StudentBean st = new StudentBean();        st.setName(rs.getString("name"));        st.setAge(rs.getInt("age"));        st.setId(rs.getInt("id"));        st.setPhone(rs.getString("phnoe"));        st.setScore(rs.getInt("score"));        list.add(st);      }    } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }    return list;  }  @Override   public int userCount(){    DBBean db = new DBBean();    String sql = "select count(*) from t_student";    ResultSet rs = db.executeQuery(sql, null);    int count = 0;    try {      rs.next();      count = rs.getInt(1);    } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }    return count;  }}

相關業務邏輯

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    String page = null;    page = request.getParameter("page");    if(page == null || page=="")      page = "1";    StudentDao studao = new StudentDao();    request.setAttribute("student",studao.findByPage(Integer.parseInt(page)));    request.setAttribute("pagenum",studao.userCount()/5+1);//總頁數    request.setAttribute("page", page);//當前頁    request.getRequestDispatcher("student.jsp").forward(request, response);        }

前臺JSP代碼:

<table id="t_stu" border="1" cellpadding="2" cellspacing="0">  <thead>    <tr>      <th>ID</th>      <th>姓名</th>      <th>年齡</th>      <th>電話</th>      <th>成績</th>    </tr>  </thead>  <c:forEach items="${student}" var="st">    <tr>      <td>${st.getId()}</td>      <td>${st.getName()}</td>      <td>${st.getAge()}</td>      <td>${st.getPhone()}</td>      <td>${st.getScore()}</td>    </tr>  </c:forEach></table><br>共 ${pagenum}頁  當前 第${page}頁 <c:choose>  <c:when test="${page>1}">    <a href="getSutent?page=${page-1}" rel="external nofollow" ><input type="button" value="上一頁" ></a>  </c:when>  <c:otherwise>    <input type="button" value="上一頁" disabled="disabled" />  </c:otherwise></c:choose><c:choose>  <c:when test="${page!=pagenum}">    <a href="getSutent?page=${page+1}" rel="external nofollow" ><input type="button" value="下一頁"></a>  </c:when>  <c:otherwise>    <input type="button" value="下一頁" disabled="disabled" />  </c:otherwise></c:choose>

本例是真分頁的一個簡單實現,有著明顯的缺點。

例如:

1.在后臺相關業務邏輯處,只對page做了簡單的判斷,因為查詢相關page時,參數是寫入前臺a標簽中的,所以懂技術的用戶,可以隨意改動其值

由此查詢數據庫可能帶來意想不到的錯誤。

2.功能不夠完善,僅提供了上一頁下一頁按鈕的簡單功能。

另外:實現假分頁時可以結合ajax和json。以此可實現無刷新翻頁,看起來功能和真分頁一樣。。。

 

注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线免费看| 欧美乱妇40p| 国产午夜精品麻豆| 日本午夜在线亚洲.国产| 亚洲影视九九影院在线观看| 国产精品高潮在线| 日韩精品视频在线播放| 国产有码一区二区| 欧美日韩高清在线观看| 成人福利免费观看| 成人黄色免费片| 日韩国产在线播放| 亚洲视频国产视频| 亚洲美女久久久| 精品香蕉在线观看视频一| 亲子乱一区二区三区电影| 久久不射热爱视频精品| 欧美极品欧美精品欧美视频| 热门国产精品亚洲第一区在线| 成人午夜在线观看| 91视频国产精品| 久久久久999| 国产精品日韩欧美大师| 韩国国内大量揄拍精品视频| 国产精品久久久久久av| 国产欧美婷婷中文| 国产一区欧美二区三区| 日韩av影片在线观看| 日韩一区二区欧美| 亚洲人成电影网站色xx| 亚洲新中文字幕| 欧美性猛xxx| 国产精品成人品| 黄色成人av网| 91精品国产免费久久久久久| 91av免费观看91av精品在线| 日本视频久久久| 午夜精品福利电影| 中日韩美女免费视频网站在线观看| 亚洲xxxxx性| 最新69国产成人精品视频免费| 欧美日韩视频免费播放| 精品亚洲一区二区三区在线观看| 色www亚洲国产张柏芝| 午夜精品在线视频| 欧美电影免费观看高清| 亚洲跨种族黑人xxx| 久久久久久亚洲精品| 成人午夜黄色影院| 国产在线播放不卡| 亚洲一区精品电影| 91在线观看免费网站| 亚洲已满18点击进入在线看片| 色综合久久中文字幕综合网小说| 538国产精品视频一区二区| 色香阁99久久精品久久久| 97超级碰碰碰久久久| 欧美亚洲视频在线看网址| 亚洲欧美激情在线视频| 欧美日韩福利在线观看| 欧美第一淫aaasss性| 91在线看www| 91精品久久久久久久久久久| 午夜欧美大片免费观看| 亚洲精品视频在线观看视频| 久久久久久久香蕉网| 国产精品视频在线播放| 中文字幕久久亚洲| 久久国产视频网站| 91夜夜未满十八勿入爽爽影院| 国产精品视频地址| 久久天天躁日日躁| 国产精品pans私拍| 亚洲一区二区三区香蕉| 久久人人爽人人爽爽久久| 91精品综合久久久久久五月天| 欧美有码在线观看视频| 国产精品旅馆在线| 久久久噜久噜久久综合| 国产亚洲精品美女久久久久| 色噜噜狠狠狠综合曰曰曰88av| 国产做受高潮69| 中文日韩在线视频| 久久深夜福利免费观看| 国产精品69久久| 97色在线视频| 国产偷亚洲偷欧美偷精品| 久久久久久97| 欧美大片在线看| 国产成人精品综合久久久| 亚洲自拍偷拍视频| 亚洲精美色品网站| 亚洲影视中文字幕| 91黑丝高跟在线| 中文字幕精品一区二区精品| 精品久久久久久久久久久久| 一本色道久久88亚洲综合88| 91av中文字幕| 国产日韩精品一区二区| 国产成人精品在线观看| 九九九久久国产免费| 亚洲色图综合网| 一本大道亚洲视频| 亚洲国产一区二区三区四区| 亚洲天堂第二页| 疯狂做受xxxx欧美肥白少妇| 欧美日韩在线视频首页| 51久久精品夜色国产麻豆| 国产精品偷伦免费视频观看的| 久久综合久久美利坚合众国| 狠狠操狠狠色综合网| 久久综合伊人77777| 一道本无吗dⅴd在线播放一区| 亚洲加勒比久久88色综合| 97精品一区二区三区| 九九视频直播综合网| 日韩av电影在线网| 欧美大片第1页| 亚洲精品日产aⅴ| 亚洲色在线视频| 亚洲a级在线观看| 97国产精品视频人人做人人爱| www.欧美视频| 另类天堂视频在线观看| 日韩精品视频免费专区在线播放| 中文字幕不卡av| 日韩欧美在线看| 欧美成人精品一区二区三区| 色偷偷综合社区| 亚洲白虎美女被爆操| 精品中文字幕乱| 国产小视频国产精品| 欧美激情性做爰免费视频| 亚洲午夜精品久久久久久久久久久久| 亚洲国产一区二区三区在线观看| 日产精品久久久一区二区福利| 国产精品久久久久不卡| 国内精品久久久久伊人av| 亚洲成人a级网| 黑人巨大精品欧美一区免费视频| 欧美最近摘花xxxx摘花| 亚洲国产精品嫩草影院久久| 亚洲综合自拍一区| 北条麻妃一区二区在线观看| 亚洲国产三级网| 91精品国产91久久久久久最新| 亚洲国产精品人久久电影| 亚洲国产天堂网精品网站| 欧美精品激情blacked18| 亚洲电影成人av99爱色| 久久久噜噜噜久久| 色妞欧美日韩在线| 欧美黑人一区二区三区| 日韩高清电影好看的电视剧电影| 久久久天堂国产精品女人| 精品成人久久av| 狠狠做深爱婷婷久久综合一区| 久久视频这里只有精品| 日本精品性网站在线观看| 亚洲午夜未满十八勿入免费观看全集| 久久精品国产电影| 亚洲精品日韩在线| 亚洲第一区在线| 欧美激情二区三区|