国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > JSP > 正文

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

2024-09-05 00:22:25
字體:
供稿:網(wǎng)友

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

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

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

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

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

一、首先是工程格局,來個全局視圖方便讀者與自己查看與使用

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

思路為:

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

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

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

PageProperties.java為表格分頁屬性javaBean

PageProperties.java封裝分頁操作

Page.java為分頁主要操作

tablePage.jsp為效果顯示界面

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

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

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

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

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

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

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

 

 
  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)建解析對象 
  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. //通過文件路徑獲取配置文件信息 
  22. Document doc=sr.read(url+"config.xml"); 
  23. //獲取根節(jié)點 
  24. root=doc.getRootElement(); 
  25. catch (DocumentException e) { 
  26. e.printStackTrace(); 
  27. public static String getPostgresData(String str){ 
  28. //以根節(jié)點為基礎(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. * 單獨的獲取連接 
  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)前頁號 
  5. private int totalPages;//總頁數(shù) 
  6. private int totalRecords;//總數(shù)據(jù)條數(shù) 
  7. private ResultSet rs;//動態(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)前頁號 
  5. private int totalPages;//總頁數(shù) 
  6. private int totalRecords;//總數(shù)據(jù)條數(shù) 
  7. private ResultSet rs;//動態(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. * 通過TablePage設(shè)置分頁屬性 
  21. * 
  22. */ 
  23. TablePage tb=new TablePage(); 
  24. //獲取當(dāng)前表格顯示的頁碼 
  25. int currentPage=tb.currentPage(tb.getStrPage(request, "page")); 
  26. System.out.println(currentPage); 
  27. //設(shè)置每頁顯示數(shù)據(jù)條數(shù) 
  28. tb.setPageRecord(10);//設(shè)置每頁顯示10條數(shù)據(jù) 
  29. /** 
  30. * 通過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ù)獲取頁面顯示表格的總頁數(shù) 
  39. int totalPages=tb.getTotalPages(totalRecords); 
  40. if(currentPage>totalPages){ 
  41. currentPage=totalPages;//保證最后一頁不超出范圍 
  42. //根據(jù)數(shù)據(jù)庫表信息和當(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前臺顯示效果

 

 
  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>簡單數(shù)據(jù)分頁</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() %>頁</span> 
  51. <span>共<%=pp.getTotalRecords() %>條數(shù)據(jù)</span> 
  52. <span>本頁<%=i-1 %>條</span> 
  53. <span>第<%=pp.getCurrentPage() %>頁</span> 
  54. <p align="center"
  55. <% 
  56. if ( pp.getCurrentPage() > 1 ) 
  57. %><a href="<%=path %>/page?page=<%=pp.getCurrentPage() - 1%>"><<上一頁</a> 
  58. <% 
  59. %> 
  60. <% 
  61. if ( pp.getCurrentPage() < pp.getTotalPages() ) 
  62. %><a href="<%=path %>/page?page=<%=pp.getCurrentPage() + 1%>">下一頁>></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> 

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

當(dāng)然,這也是因為個人學(xué)習(xí),傾向于多用點東西。

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


注:相關(guān)教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
一本大道五月香蕉| 中文av在线播放| 2020国产在线视频| av中文网站| 国产福利热线视频| 中文字幕不卡| 精品一区二区在线欧美| 就爱干草视频| www.大网伊人| 久久一本精品| 国产欧美日本亚洲精品一4区| 国产理论电影在线| 国产网站av| 国产三级在线免费观看| 国产69精品久久久久孕妇国产69久久 | 美女av在线播放| 免费精品国产自产拍观看| 最好2018中文免费视频| 精品一区二区在线欧美| 国产在线一二三区| 伊人永久在线| 国产一区二区三区不卡在线| 999国产在线视频| 国产系列电影在线播放网址| 久草在线资源福利| gogo高清在线播放免费| 国产欧美日韩专区| 国产蜜臀在线| 亚洲精品视频在线免费| 国产一二区在线观看| 亚洲午夜久久久久中文字幕| 国产午夜在线| 天天av天天爽| 六月天色婷婷| 国产高清免费av在线| 99视频资源网| 国产精品作爱| 国产尤物一区二区三区| 九九精品九九| 国产女人伦码一区二区三区不卡| 精品麻豆一区二区三区| 高清av中文在线字幕观看1| 青青草视频免费在线观看| 在线观看av资源网| 中文字幕毛片| 中文字幕亚洲免费| 国产一二三区在线| 中文字幕视频在线观看| 丁香在线视频| 国产丝袜在线播放| 国产福利在线视频| 国产福利在线看| 精品福利影院| 777电影在线观看| 中文字幕2019第三页| 亚洲妇熟xxxx妇色黄| 毛片网站在线观看| 国产裸舞福利在线视频合集| 成人免费一区二区三区牛牛 | 黄色三级视频在线观看| а√天堂www在线а√天堂视频| 国产aa视频| 精品国产一区二区三区久久久狼牙 | 国产成免费视频| 综合图区亚洲白拍在线| 国产福利视频在线观看| 日本电影在线观看| 国产精品666| www.超级碰| 国产精品免费视频一区一| 精品久久亚洲一级α| 狠狠综合久久久综合| 99久热re在线精彩视频| 日本免费一二区| 中文字幕人成高视频| av男人的天堂网| 最近高清中文在线字幕在线观看| 国产探花在线观看| 在线播放国产区| wwww亚洲| 国产91久久久久蜜臀青青天草二| 热99re久久精品这里都是免费| www.国产精品.com| 最新黄网在线观看| 久热国产在线| 色综合久久五月天| 精品电影在线| 国产三级视频在线看| 美女网站在线观看| 在线中文字幕观看| 97福利电影| 国产二级c片l毛片| 国产国产人免费人成免费视频| 欧美日韩一区二区三区视视频| 好吊日视频在线观看| 亚洲欧洲成人| av文字幕在线观看| av小说在线| 四虎影院成人| 日本欧美在线视频免费观看| 国产一二三在线观看| 丁香花高清在线观看完整版| www.三级.com| 热99在线观看| 成年黄网站在线观看免费| 欧美性猛交xxxx免费看蜜桃| av麻豆国产| 亚洲精品aaaa精品| 青青艹在线视频| 麻豆网站在线| 国产在线色视频| 国产一级又黄| 精品美女在线观看视频在线观看| 国产精品欧美色图| 日本中文字幕视频在线| 中文字幕第一页在线| 国产经典av| 亚洲人成电影| 国产中文在线视频| 国产精品麻豆一区二区三区| 精品伦理一区二区| 高清av在线| 97影院理论午夜| 青青青青在线| 中文字幕视频在线观看| 99热播在线观看| 国产麻豆精品高清在线播放| 国产精品扒开做爽爽爽的视频| 在线播放一区二区精品产| 四虎精品视频| 欧美日韩在线精品成人综合网| 91sp网站在线观看入口| 国产一区精品| 亚洲第一成人在线视频| 最近中文字幕mv免费高清在线| 69国产精品| 免费日本黄色| 国产二级c片l毛片| 国产美女视频一区二区三区| 69国产精品视频| 午夜伦全在线观看| 在线免费观看黄色片| 国产一卡2卡3卡4卡网站免费| 碰草在线视频| 国产一区二区三区福利| 欧美96在线| av中文网站| 97视频免费| 国产黄a三级三级三级av在线看| 日本一二三区视频免费高清| 亚洲精品天堂在线观看| 国产激情在线视频| 国产视频二区在线观看| 国产九九九九| 交视频在线观看国产| eeuss影院www在线观看| 影音先锋中文字幕在线| 2020亚洲男人天堂| 国产福利微拍精品一区二区| 最新超碰在线| 国产95在线|亚洲| 91在线中文| 99热免费在线观看| 在线中文视频| 日本在线视频www鲁啊鲁| www黄在线观看| 黄色片视频在线观看| 日本18视频网站| 牛牛热在线视频| 欧美黑人乱大交| 国内精品免费一区二区三区| 国产91大片| 国产xxx在线| 亚洲精品午夜级久久久久| 日本福利午夜视频在线| 久草网在线视频| 中文字幕在线免费看| 国产黄色在线网站| 四虎成人免费观看在线网址| 久久久久久91精品色婷婷| 国产一区二区三区不卡在线| 国产二级片在线| 青青草视频免费在线观看| 国内精品免费一区二区三区| 国产美女性感在线观看懂色av| 国产一区久久精品| 2021av在线| 高清av在线| 亚洲人成影院在线| 尤物网址在线观看| 中文国产字幕在线观看| 国产资源在线看| 伊人免费视频| 91福利在线免费| 亚洲精品白浆| 国产精品99999| 丁香视频免费观看| 精品成人免费自拍视频| 午夜视频在线观看网站午夜视频在线| 国产偷倩在线播放|