麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JSP > 正文

jsp+servlet+javabean實(shí)現(xiàn)數(shù)據(jù)分頁(yè)方法完整實(shí)例

2024-09-05 00:22:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這篇文章主要介紹了jsp+servlet+javabean實(shí)現(xiàn)數(shù)據(jù)分頁(yè)方法,以完整實(shí)例形式詳細(xì)講述了jsp結(jié)合servlet與javabean操作PostgreSQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)分頁(yè)的具體步驟,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了jsp+servlet+javabean實(shí)現(xiàn)數(shù)據(jù)分頁(yè)方法。分享給大家供大家參考,具體如下:

這里秉著且行且記的心態(tài),記錄下學(xué)習(xí)過(guò)程,學(xué)得快忘得快,生怕遺忘,以備日后使用。

用到的部分代碼是自己在網(wǎng)上查找,并自己修改,加上自己的理解。也不知道算不算原創(chuàng),只做自己學(xué)習(xí)記錄。

使用相關(guān):PostgreSQL數(shù)據(jù)庫(kù)、dom4j、JSP、Servlet

一、首先是工程格局,來(lái)個(gè)全局視圖方便讀者與自己查看與使用

jsp+servlet+javabean實(shí)現(xiàn)數(shù)據(jù)分頁(yè)方法完整實(shí)例

思路為:

以config.xml文件記錄配置信息,以方便數(shù)據(jù)庫(kù)更改,方便移植與重用。

DOM4JUtil.java用于解析xml屬性文件以獲得需要數(shù)據(jù)

PostgreSQL_Util.java分裝數(shù)據(jù)連接與數(shù)據(jù)庫(kù)操作

PageProperties.java為表格分頁(yè)屬性javaBean

PageProperties.java封裝分頁(yè)操作

Page.java為分頁(yè)主要操作

tablePage.jsp為效果顯示界面

用到的第三方j(luò)ar包:

dom4j-1.6.1.jar用于xml文件解析

postgresql-9.3-1101.jdbc4.jar用于JDBC連接postgreSQL數(shù)據(jù)庫(kù)

分頁(yè)效果如下:能通過(guò)點(diǎn)擊上頁(yè)下頁(yè)實(shí)現(xiàn)翻頁(yè),輸入指定頁(yè)面跳轉(zhuǎn)(超出范圍跳轉(zhuǎn)到第1或最后頁(yè))。具體實(shí)現(xiàn)請(qǐng)參見詳細(xì)代碼,我都貼上來(lái)了。小菜鳥一名,處于正在學(xué)習(xí)階段,有大神能指點(diǎn)下當(dāng)然更好,希望不吝賜教!

jsp+servlet+javabean實(shí)現(xiàn)數(shù)據(jù)分頁(yè)方法完整實(shí)例

二、具體代碼實(shí)現(xiàn)

1、config.xml數(shù)據(jù)庫(kù)連接信息屬性文件

 

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <!DOCTYPE postgres[ 
  3. <!ELEMENT postgres (driver,url,username,pwd)> 
  4. <!ELEMENT driver (#PCDATA)> 
  5. <!ELEMENT url (#PCDATA)> 
  6. <!ELEMENT username (#PCDATA)> 
  7. <!ELEMENT pwd (#PCDATA)> 
  8. ]> 
  9. <postgres> 
  10. <driver>org.postgresql.Driver</driver> 
  11. <url>jdbc:postgresql://localhost:5432/java</url> 
  12. <username>admin</username> 
  13. <pwd>k42jc</pwd> 
  14. </postgres> 

2、DOM4JUtil.java

 

 
  1. package util; 
  2. import org.dom4j.Document; 
  3. import org.dom4j.DocumentException; 
  4. import org.dom4j.Element; 
  5. import org.dom4j.io.SAXReader; 
  6. /**  
  7. * 用于解析xml屬性文件  
  8. * @author JohsonMuler  
  9.  
  10. */ 
  11. public class DOM4JUtil { 
  12. private static Element root=null
  13. static{//靜態(tài)代碼塊 
  14. //創(chuàng)建解析對(duì)象 
  15. SAXReader sr=new SAXReader(); 
  16. //獲取當(dāng)前工程路徑 
  17. // String url=System.getProperty("user.dir"); 
  18. String url=DOM4JUtil.class.getResource("").getPath(); 
  19. // System.out.println(url); 
  20. try { 
  21. //通過(guò)文件路徑獲取配置文件信息 
  22. Document doc=sr.read(url+"config.xml"); 
  23. //獲取根節(jié)點(diǎn) 
  24. root=doc.getRootElement(); 
  25. catch (DocumentException e) { 
  26. e.printStackTrace(); 
  27. public static String getPostgresData(String str){ 
  28. //以根節(jié)點(diǎn)為基礎(chǔ),獲取配置文件數(shù)據(jù) 
  29. Element e=root.element(str); 
  30. String data=e.getText(); 
  31. return data; 
  32. public static void main(String[] args) { 
  33. // String url=DOM4JUtil.class.getResource("..").getPath(); 
  34. // System.out.println(System.getProperty("user.dir")); 
  35. // System.out.println(url); 
  36. String driver=getPostgresData("driver"); 
  37. String url=getPostgresData("url"); 
  38. System.out.println(driver); 
  39. System.out.println(url); 

3、PostgreSQL_Util.java

 

 
  1. package util; 
  2. import java.sql.PreparedStatement; 
  3. import java.sql.Statement; 
  4. import java.sql.Connection; 
  5. import java.sql.DriverManager; 
  6. import java.sql.ResultSet; 
  7. import java.sql.SQLException; 
  8. import java.util.List; 
  9. public class PostgreSQL_Util { 
  10. private static DOM4JUtil dom=new DOM4JUtil(); 
  11. private static Connection c=null
  12. private static ResultSet rs=null
  13. private static String driver=dom.getPostgresData("driver"); 
  14. private static String url=dom.getPostgresData("url"); 
  15. private static String username=dom.getPostgresData("username"); 
  16. private static String pwd=dom.getPostgresData("pwd"); 
  17. public PostgreSQL_Util(){ 
  18. try { 
  19. Class.forName(driver); 
  20. c=DriverManager.getConnection(url); 
  21. catch (ClassNotFoundException e) { 
  22. System.out.println("未找到指定類:"+e.getMessage()); 
  23. catch (SQLException e) { 
  24. System.out.println("獲取連接異常:"+e.getMessage()); 
  25. /** 
  26. * 數(shù)據(jù)查詢方法(Statement) 
  27. * @param sql 
  28. * @return 
  29. * @throws SQLException 
  30. */ 
  31. public ResultSet executeQuery(String sql) throws SQLException{ 
  32. Statement s=c.createStatement(); 
  33. rs=s.executeQuery(sql); 
  34. return rs; 
  35. /** 
  36. * 重載方法(PreparedStatement) 
  37. * @param sql 
  38. * @param list 
  39. * @return 
  40. * @throws SQLException 
  41. */ 
  42. public ResultSet executeQuery(String sql,List<Object> list) throws SQLException{ 
  43. PreparedStatement ps=c.prepareStatement(sql); 
  44. for(int i=0;i<list.size();i++){ 
  45. System.out.println(list.get(i)); 
  46. System.out.println(i+1); 
  47. ps.setObject(i+1, list.get(i)); 
  48. rs=ps.executeQuery(); 
  49. c.close(); 
  50. return rs; 
  51. /** 
  52. * 數(shù)據(jù)更新方法(添加,刪除,更改)(Statement) 
  53. * @param sql 
  54. * @throws SQLException 
  55. */ 
  56. public int executeUpdate(String sql) throws SQLException{ 
  57. Statement s=c.createStatement(); 
  58. int i=s.executeUpdate(sql); 
  59. c.close(); 
  60. return i; 
  61. /** 
  62. * 重載方法(PreparedStatement) 
  63. * @param sql 
  64. * @param list 
  65. * @throws SQLException 
  66. */ 
  67. public int executeUpdate(String sql,List<Object> list) throws SQLException{ 
  68. PreparedStatement ps=c.prepareStatement(sql); 
  69. for(int i=0;i<list.size();i++){ 
  70. ps.setObject(i+1, list.get(i)); 
  71. int i=ps.executeUpdate(); 
  72. c.close(); 
  73. return i; 
  74. /** 
  75. * 單獨(dú)的獲取連接 
  76. * @return 
  77. * @throws ClassNotFoundException 
  78. * @throws SQLException 
  79. */ 
  80. public static Connection getConnection() throws ClassNotFoundException, SQLException{ 
  81. Class.forName(driver); 
  82. c=DriverManager.getConnection(url); 
  83. return c; 

4、PageProperties.java

 

 
  1. package bean; 
  2. import java.sql.ResultSet; 
  3. public class PageProperties { 
  4. private int currentPage;//當(dāng)前頁(yè)號(hào) 
  5. private int totalPages;//總頁(yè)數(shù) 
  6. private int totalRecords;//總數(shù)據(jù)條數(shù) 
  7. private ResultSet rs;//動(dòng)態(tài)結(jié)果集 
  8. public PageProperties() { 
  9. super(); 
  10. public PageProperties(int currentPage, int totalPages, int totalRecords,  
  11. ResultSet rs) { 
  12. super(); 
  13. this.currentPage = currentPage; 
  14. this.totalPages = totalPages; 
  15. this.totalRecords = totalRecords; 
  16. this.rs = rs; 
  17. public int getCurrentPage() { 
  18. return currentPage; 
  19. public void setCurrentPage(int currentPage) { 
  20. this.currentPage = currentPage; 
  21. public int getTotalPages() { 
  22. return totalPages; 
  23. public void setTotalPages(int totalPages) { 
  24. this.totalPages = totalPages; 
  25. public int getTotalRecords() { 
  26. return totalRecords; 
  27. public void setTotalRecords(int totalRecords) { 
  28. this.totalRecords = totalRecords; 
  29. public ResultSet getRs() { 
  30. return rs; 
  31. public void setRs(ResultSet rs) { 
  32. this.rs = rs; 

5、TablePage.java

 

 
  1. package bean; 
  2. import java.sql.ResultSet; 
  3. public class PageProperties { 
  4. private int currentPage;//當(dāng)前頁(yè)號(hào) 
  5. private int totalPages;//總頁(yè)數(shù) 
  6. private int totalRecords;//總數(shù)據(jù)條數(shù) 
  7. private ResultSet rs;//動(dòng)態(tài)結(jié)果集 
  8. public PageProperties() { 
  9. super(); 
  10. public PageProperties(int currentPage, int totalPages, int totalRecords,  
  11. ResultSet rs) { 
  12. super(); 
  13. this.currentPage = currentPage; 
  14. this.totalPages = totalPages; 
  15. this.totalRecords = totalRecords; 
  16. this.rs = rs; 
  17. }  
  18. public int getCurrentPage() { 
  19. return currentPage; 
  20. public void setCurrentPage(int currentPage) { 
  21. this.currentPage = currentPage; 
  22. public int getTotalPages() { 
  23. return totalPages; 
  24. public void setTotalPages(int totalPages) { 
  25. this.totalPages = totalPages; 
  26. public int getTotalRecords() { 
  27. return totalRecords; 
  28. public void setTotalRecords(int totalRecords) { 
  29. this.totalRecords = totalRecords; 
  30. public ResultSet getRs() { 
  31. return rs; 
  32. public void setRs(ResultSet rs) { 
  33. this.rs = rs; 

6、Page.java這是主要處理類,Servlet

 

  1. package servlet; 
  2. import java.io.IOException; 
  3. import java.io.PrintWriter; 
  4. import java.sql.ResultSet; 
  5. import java.sql.SQLException; 
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10. import util.PostgreSQL_Util; 
  11. import bean.PageProperties; 
  12. import bean.TablePage; 
  13. public class Page extends HttpServlet { 
  14. public void service(HttpServletRequest request, HttpServletResponse response) 
  15. throws ServletException, IOException { 
  16. request.setCharacterEncoding("utf-8"); 
  17. response.setContentType("text/html;charset=utf-8"); 
  18. PrintWriter out = response.getWriter(); 
  19. /** 
  20. * 通過(guò)TablePage設(shè)置分頁(yè)屬性 
  21. * 
  22. */ 
  23. TablePage tb=new TablePage(); 
  24. //獲取當(dāng)前表格顯示的頁(yè)碼 
  25. int currentPage=tb.currentPage(tb.getStrPage(request, "page")); 
  26. System.out.println(currentPage); 
  27. //設(shè)置每頁(yè)顯示數(shù)據(jù)條數(shù) 
  28. tb.setPageRecord(10);//設(shè)置每頁(yè)顯示10條數(shù)據(jù) 
  29. /** 
  30. * 通過(guò)xxSQL_Util設(shè)置JDBC連接及數(shù)據(jù)處理 
  31. */ 
  32. PostgreSQL_Util postgres=new PostgreSQL_Util(); 
  33. try { 
  34. ResultSet rs_count=postgres.executeQuery("select count(*) as c from student"); 
  35. rs_count.next(); 
  36. //獲得總的數(shù)據(jù)條數(shù) 
  37. int totalRecords=rs_count.getInt("c"); 
  38. //根據(jù)數(shù)據(jù)表的總數(shù)據(jù)條數(shù)獲取頁(yè)面顯示表格的總頁(yè)數(shù) 
  39. int totalPages=tb.getTotalPages(totalRecords); 
  40. if(currentPage>totalPages){ 
  41. currentPage=totalPages;//保證最后一頁(yè)不超出范圍 
  42. //根據(jù)數(shù)據(jù)庫(kù)表信息和當(dāng)前頁(yè)面信息獲得動(dòng)態(tài)結(jié)果集 
  43. ResultSet rs=tb.getPageResultSet(postgres.executeQuery("select * from student"), currentPage); 
  44. /**  
  45. * 將數(shù)據(jù)加入javaBean 
  46. */ 
  47. PageProperties pp=new PageProperties(currentPage, totalPages, totalRecords, rs); 
  48. /**  
  49. * 將javaBean轉(zhuǎn)發(fā)至前端  
  50. */ 
  51. request.setAttribute("result", pp); 
  52. request.getRequestDispatcher("tablePage.jsp").forward(request, response); 
  53. catch (SQLException e) { 
  54. System.out.println("Class Page:"+e.getMessage()); 
  55. // e.printStackTrace(); 

7、tablePage.jsp前臺(tái)顯示效果

 

 
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 
  2. <%@page import="java.sql.ResultSet"%> 
  3. <%@page import="bean.PageProperties"%> 
  4. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
  5. <% 
  6. String path = request.getContextPath(); 
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"
  8. %> 
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  10. <html> 
  11. <head> 
  12. <title>簡(jiǎn)單數(shù)據(jù)分頁(yè)</title> 
  13. <meta http-equiv="pragma" content="no-cache"
  14. <meta http-equiv="cache-control" content="no-cache"
  15. <meta http-equiv="expires" content="0"
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"
  17. <meta http-equiv="description" content="This is my page"
  18. <!-- 
  19. <link rel="stylesheet" type="text/css" href="styles.css"
  20. --> 
  21. </head> 
  22. <body> 
  23. <table> 
  24. <tr> 
  25. <td>姓名</td> 
  26. <td>性別</td> 
  27. <td>年齡</td> 
  28. <td>分?jǐn)?shù)</td> 
  29. </tr> 
  30. <% 
  31. PageProperties pp=(PageProperties)request.getAttribute("result");  
  32. ResultSet rs=pp.getRs(); 
  33. %> 
  34. <% 
  35. int i=1; 
  36. while(rs.next()){ 
  37. %> 
  38. <tr> 
  39. <td><%=rs.getObject(1) %></td> 
  40. <td><%=rs.getObject(2) %></td> 
  41. <td><%=rs.getObject(3) %></td> 
  42. <td><%=rs.getObject(4) %></td> 
  43. </tr> 
  44. <% 
  45. i++; 
  46. if(i>10) 
  47. break
  48. %> 
  49. <br/> 
  50. <span><%=pp.getTotalPages() %>頁(yè)</span> 
  51. <span>共<%=pp.getTotalRecords() %>條數(shù)據(jù)</span> 
  52. <span>本頁(yè)<%=i-1 %>條</span> 
  53. <span>第<%=pp.getCurrentPage() %>頁(yè)</span> 
  54. <p align="center"
  55. <% 
  56. if ( pp.getCurrentPage() > 1 ) 
  57. %><a href="<%=path %>/page?page=<%=pp.getCurrentPage() - 1%>"><<上一頁(yè)</a> 
  58. <% 
  59. %> 
  60. <% 
  61. if ( pp.getCurrentPage() < pp.getTotalPages() ) 
  62. %><a href="<%=path %>/page?page=<%=pp.getCurrentPage() + 1%>">下一頁(yè)>></a> 
  63. <% 
  64. %> 
  65. <input type="text" name="input_text" id="input_text" size="1" />  
  66. <input type="button" name="skip" id="skip" value="跳轉(zhuǎn)" onclick="skip();"/> 
  67. <script> 
  68. function skip(){ 
  69. var v=document.getElementById("input_text").value; 
  70. location.href="page?page="+v; 
  71. </script> 
  72. </p> 
  73. </table> 
  74. </body> 
  75. </html> 

初步看,感覺后臺(tái)代碼實(shí)在是繁瑣,但這是考慮到程序健壯性與可移植性,方便代碼重用。以后要用,根據(jù)自己的需要在屬性文件(config.xml)中配置相關(guān)JDBC驅(qū)動(dòng),在jsp頁(yè)面通過(guò)request獲得后臺(tái)Servlet(Page.jsp)的轉(zhuǎn)發(fā)結(jié)果("result"),結(jié)合頁(yè)面屬性(PageProperties.java類)即可實(shí)現(xiàn)效果。

當(dāng)然,這也是因?yàn)閭€(gè)人學(xué)習(xí),傾向于多用點(diǎn)東西。

希望本文所述對(duì)大家jsp程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91色琪琪电影亚洲精品久久 | 久久久久久久久久久av | 黑人一区二区三区四区五区 | 久色视频 | 国产美女视频一区二区三区 | 99欧美视频 | 午夜生活理论片 | 成人午夜免费在线视频 | 欧美一级美国一级 | 啊~用cao嗯力cao烂我视频 | www.48xx.com| 国产精品伦视频看免费三 | 乱淫67194| 欧美雌雄另类xxxxx | 午夜精品在线视频 | 久久精品视频首页 | 日韩精品久久久久久久九岛 | 欧美一级视频免费看 | 爽爽淫人综合网网站 | 97视频 | 午夜视频在线免费播放 | 韩国精品视频在线观看 | 成人午夜视频在线观看免费 | 草久免费 | 成人小视频免费在线观看 | 4480午夜| 欧美一级片一区 | 1级片在线观看 | 久久国产精品无码网站 | 久久久婷婷 | 黄色高清免费网站 | 中文字幕伦乱 | 精精国产xxxx视频在线播放7 | 91在线视频网址 | 精品一区二区三区中文字幕老牛 | 日韩黄色三级视频 | 久草在线公开视频 | 精品一区二区在线观看视频 | 毛片在线免费视频 | 久久精品视频12 | 色屁屁xxxxⅹ在线视频 |