JSP實現分頁效果_JSP編程

來源:腳本之家  責任編輯:小易  

一個好的jsp程序基本一句java代碼都沒有,基本都是使用各種自定義標簽實現的,雖然這樣有些頭疼,不過還是應該這樣做的,想一想你做出一個非常不錯的基于內存分頁和基于DB分頁的2種標簽在公司內部發布應用,多牛啊,哈哈你懂的是吧,努力,我大力支持你www.13333515.buzz防采集請勿采集本網。

本文實例為大家分享了JSP實現分頁的具體代碼,供大家參考,具體內容如下

如果只想在Java代碼中實現,迭代器并沒有記錄當前的記錄位置,可能要使用一個計數變量才可以實現。public static final int PAGE_SIZE=20;每頁顯示的記錄數 int visited=180;上頁或者更早已經顯示了的 int

咱們在瀏覽網頁的時候,當一個頁面的數據不足以展示完全所有的內容,一般都涉及到分頁,下一頁的功能該怎么實現呢?首先我們來分析一下:

如果你要簡單的話推薦你用ExtJs框架,這個Ajax框架使用簡單而且界面元素豐富。下載ExtJs開發包,里面包括各種控件的使用例子,復制到你的項目然后稍作修改就行了,非常簡單,這個地址可以下載:

那么直接上代碼:

定義四個分頁會用到的變量 int pageSize=3;int pageNow=1;默認顯示第一頁 int rowCount=0;該值從數據庫中查詢 int pageCount=0;該值是通過pageSize和rowCount 接受用戶希望顯示的頁數(pageNow) String s

這里需要備注一下,本次的代碼是在對三層優化之后進行操作的,所以我先把數據訪問層的重構代碼貼出來:

request.getRequestDispatcher(\"/views/list.jsp\").forward(request,response);} catch(Exception e){ e.printStackTrace();} } Jsp中,JQuery: 跳轉頁數判斷 ().ready(function(){ (\"#goId\").keyup

package org.ThreeLayer.DButil;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.ThreeLayer.Entity.Student;public class DButil { public static final String driver = "com.mysql.cj.jdbc.Driver"; public static final String url = "jdbc:mysql://localhost:3306/zxy?&useSSL=false&serverTimezone=UTF-8&useSSL=false&serverTimezone = GMT"; public static final String username = "root"; public static final String password = "zxy170518."; public static Connection connection = null;//鏈接數據庫 public static PreparedStatement pstmt=null;//執行sql語句 public static ResultSet rs=null; public static Connection getConnection() throws SQLException, ClassNotFoundException { Class.forName(driver); return DriverManager.getConnection(url,username,password); } public static int getTotalCount(String sql) { int count=0; try { pstmt=createPrepareStatement(sql, null); rs=pstmt.executeQuery(); if(rs.next()) { count=rs.getInt(1); } }catch(SQLException e) { e.printStackTrace(); }catch(ClassNotFoundException e) { e.printStackTrace(); }catch(Exception e) { e.printStackTrace(); }finally { closeAll(connection, pstmt, rs); } return count; } public static PreparedStatement createPrepareStatement(String sql,Object[] obj) throws ClassNotFoundException, SQLException { pstmt=getConnection().prepareStatement(sql); if(obj!=null) { for(int i=0;i<obj.length;i++) { pstmt.setObject(i+1, obj[i]);//進行更新動作 } } return pstmt; } public static boolean UpdateSQL(String sql,Object[] obj) { try { pstmt=createPrepareStatement(sql, obj); int count=pstmt.executeUpdate(); if(count>0) { return true; } else { return false; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; }finally { closeAll(connection,pstmt,rs); } } public static ResultSet FindSQL(String sql,Object[] obj) { try { pstmt=createPrepareStatement(sql, obj); rs=pstmt.executeQuery(); return rs; }catch(ClassNotFoundException e) { e.printStackTrace(); return rs; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return rs; }catch(Exception e) { e.printStackTrace(); return rs; } } public static void closeAll(Connection connection,PreparedStatement pstmt,ResultSet rs) { try { if(connection!=null); connection.close(); if(pstmt!=null); pstmt.close(); if(rs!=null); rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch(Exception e) { e.printStackTrace(); } }}

分頁只是一個算法,根據不同的需要有所調整。你需要知道。總記錄數 一頁多少條記錄數 你當前選的是第幾頁。其它的都是根據這些算出來的。頁面的顯示,就是用out流寫上去的。如果粗陋一點,就是

基本上就是普通的數據庫操作功能,很好懂,就不多解釋了;

對于數據訪問層的Dao:

public int getTotalCount()//查詢數據總數 { String sql="select count(1) from student"; return DButil.getTotalCount(sql); } public List<Student> findStudentByPage(int currentPage,int pageSize)//currentPage:當前頁數;pageSize頁面所能容納的最大數據量 { String sql="select * from student limit ? , ?"; Object[] obj= {currentPage*pageSize,pageSize}; List<Student> students=new ArrayList<>(); ResultSet rs=DButil.FindSQL(sql, obj); try { while(rs.next()) { Student student=new Student(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(4)); students.add(student); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return students; }

對于業務邏輯層:

Server:

public int getTotalCount() { return studentdao.getTotalCount(); } public List<Student> findStudentByPage(int currentPage,int pageSize) { return studentdao.findStudentByPage(currentPage, pageSize); }

對于視圖層的后臺代碼:

Servlet:

package org.Three.Servlet;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.ThreeLayer.Entity.Page_S;import org.ThreeLayer.Entity.Student;import org.ThreeLayer.Server.Student_Server;public class findStudentByPage extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Student_Server studentS=new Student_Server(); // int currentPage=2; Page_S pag=new Page_S(); String tmp=request.getParameter("currentPage"); if(tmp==null)//判斷是否為第一次進行訪問 { tmp="0"; } int sum=studentS.getTotalCount(); pag.setTotalCount(sum); int currentPage= Integer.parseInt(tmp); pag.setCurrentPage(currentPage); String tmp2=request.getParameter("choose"); if(tmp2==null)//默認一頁3個內容 { tmp2="3"; } int pageSize=Integer.parseInt(tmp2); pag.setPageSize(pageSize); List<Student> students =studentS.findStudentByPage(currentPage, pageSize); pag.setStudents(students); request.setAttribute("pag", pag); request.getRequestDispatcher("index.jsp").forward(request, response); System.out.print(students); System.out.print(sum); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

還有一個實體類:Page:

package org.ThreeLayer.Entity;import java.util.List;public class Page_S {//為了不出現于重名,改了一下 private int currentPage; private int pageSize;//頁面大小,即頁面數據個數 private int totalCount;//總數據 private int totalPage;//總頁數 private List<Student> students; public Page_S() { } public Page_S(int currentPage, int pageSize, int totalCount, int totalPage, List<Student> students) { this.currentPage = currentPage; this.pageSize = pageSize; this.totalCount = totalCount; this.totalPage = totalPage; this.students = students; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; this.totalPage=this.totalCount%this.pageSize==0?this.totalCount/this.pageSize:this.totalCount/this.pageSize+1; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; }}

最后貼上index.jsp:

<%@page import="java.util.List"%><%@page import="org.ThreeLayer.Entity.Student"%><%@page import="org.ThreeLayer.Entity.Page_S"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>學生信息管理</title></head><body> <table border=1px> <tr> <th>學號</th> <th>姓名</th> <th>性別</th> <th>操作</th> </tr> <% Page_S pagg=(Page_S)request.getAttribute("pag"); for(Student student:pagg.getStudents()) { %> <tr> <th><a href="FindStudentById_Servlet?uid=<%=student.getId()%>" ><%=student.getId() %></a></th> <th><%=student.getName() %></th> <th><%=student.getSex() %></th> <th><a href="DeleteStudent_Servlet?uid=<%=student.getId()%>" >刪除</a></th> </tr> <% } %> </table> <a href="add.jsp" >增加</a> <% if(pagg.getCurrentPage()==0)//用戶位于首頁的時候 { %> <a href="findStudentByPage?currentPage=<%=pagg.getCurrentPage()+1%>" >下一頁</a> <a href="findStudentByPage?currentPage=<%=pagg.getTotalPage()-1%>" >尾頁</a> <% }else if(pagg.getCurrentPage()==pagg.getTotalPage()-1)//用戶位于尾頁的時候 { %> <a href="findStudentByPage?currentPage=0" >首頁</a> <a href="findStudentByPage?currentPage=<%=pagg.getCurrentPage()-1%>" >上一頁</a> <% }else//用戶位于中間頁面的時候 { %> <a href="findStudentByPage?currentPage=0" >首頁</a> <a href="findStudentByPage?currentPage=<%=pagg.getCurrentPage()+1%>" >下一頁</a> <a href="findStudentByPage?currentPage=<%=pagg.getCurrentPage()-1%>" >上一頁</a> <a href="findStudentByPage?currentPage=<%=pagg.getTotalPage()-1%>" >尾頁</a> <% } %> <br></body></html>

看一下效果圖:

首先看數據庫內容:

然后是首頁:

下一頁:

最后是尾頁:

總的說明一下:

首先對于功能的闡述,第一步計算總的數據量,然后規定默認容量大小為3,最終在jsp代碼中加上跟用戶進行交互的功能,即讓用戶選擇一頁多少內容(由于我寫的那個有點bug,就先不貼,等后面自己能完美實現之后,再更新),之后對前端數據進行打包,要思考的是,我們對于這個功能我們所需要的數據有哪些呢?首先,總數據量要吧?然后要存放總的數據內容吧?然后頁面大小需要吧?然后用戶所在頁面的那個頁面位置的數要吧?最后一個就是通過總數據量和頁面大小計算出來的總頁面數也需要吧?所以,一共就需要記錄5個屬性值,那就打包成一個JavaBean吧,前面代碼也貼出來了。最后要提一點,對于如果我第一次進行訪問頁面的時候,我應該是有一些屬性值是為null的,這樣是會報空指針異常的,那么就要進行一些小小的處理,哪些呢?比如如果用戶第一次進行訪問,系統是收不到用戶當前所在頁面的頁面數值的,那么就要判斷一下,(此處上代碼)如果是第一次進行訪問,那么就給與一個默認值0,也就是第一頁,那么就處理好了這個小問題了,諸如此類問題還有就是用戶在進行選擇一頁多少內容的時候,也是需要進行賦予一個默認值的,不然也會報空指針。然后對于web.xml文件內容的設置,首頁應該設置為實現分頁功能的Servlet,因為你每做一次翻頁或者首次訪問,雖然都是在index.jsp中,但是你需要把每次做完動作之后得到的新的內容進行請求轉發,這樣才能實現更新,不然程序會報錯。

JSP全名為Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。它實現了Html語法中的java擴張(以,%>形式)。JSP與Servlet一樣,是在服務器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。相關介紹JSP 技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪 問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發變得迅速和容易。JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。Java Servlet是JSP的技術基礎,而且大型的Web應用程序的開發需要Java Servlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。新增功能一 JSP2.0與JSP1.2比較JSP 2.0是對JSP 1.2的升級,新增功能:1.Expression Language2.新增Simple Tag和Tag File3.web.xml新增元素二 特別說明web.xml.web.xml新增元素lt;jsp-config>元素主要用來設定JSP相關配置,包括和子元素。(1)其中以前的Jsp1.2中就有的,taglib主要作用是作為頁面taglib標簽中的uri和tld文件的一個映射關系(2)其中是JSP2.0種新增的元素。lt;jsp-property-group>主要包括8個子元素,它們分別是:lt;jsp-property-group>lt;description>設定的說明lt;description>lt;display-name>設定名稱lt;url-pattern>設定值所影響的范圍lt;el-ignored>若為true則不支持EL語法lt;page-encoding>ISO-8859-1lt;scripting-invalid>若為true則不支持語法lt;include-prelude>設置JSP網頁的抬頭,擴展名為.jspflt;include-coda>設置JSP網頁的結尾,擴展名為.jspflt;jsp-property-group>內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • jsp分頁顯示的實現代碼
  • jsp分頁顯示的實例代碼
  • jsp實現的簡單分頁示例
  • jsp hibernate的分頁代碼
  • jsp自定義分頁標簽tag全過程
  • jsp+servlet+javabean實現數據分頁方法完整實例
  • jsp通用高大上分頁代碼(超管用)
  • jsp實現頁面分頁功能代碼
  • 一個通用的jsp分頁pagebean
  • 簡單實現jsp分頁顯示效果
  • jsp 重復提交問題
  • spring mvc自定義日期類型轉換器實例詳解
  • jsp獲得本地及serverip的簡單方法
  • httpclient post 二進制/字節流/byte[]實例代碼
  • jsp對javabean的各種常用操作方法總結
  • 訪問jsp文件或者servlet文件時提示下載的解決方法
  • 詳解 hibernate mapping配置
  • json實現jsp分頁實例介紹(附效果圖)
  • jsp 不能解析el表達式的解決辦法
  • jsp導出身份證到excel時候格式不對但以x結尾的卻可以
  • jsp數據分頁的下一頁是怎么實現的,不使用插件情況下
  • jsp的分頁功能能用標簽寫出來嗎?我現在就遇到這樣一個問題。我還是做第一個項目盡量規范一點。
  • 用Jsp實現對MySql的分頁增刪改查
  • JSP前臺頁面,如何實現表格分頁?
  • java編程中用iterator迭代器在jsp中顯示數據庫中的數據,如何實現分頁顯示?
  • jsp如何做Ajax分頁啊?
  • JSP中的分頁怎么分 比如說點擊下一頁 顯示下一頁的內容
  • jsp分頁查詢中 加入一段代碼實現輸入頁碼跳轉
  • 求:JAVA,講JSP分頁技術的全套視頻教程。跪求謝謝謝謝
  • JSP編程問題!!!
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁jsp編程jsp分頁顯示的實現代碼jsp分頁顯示的實例代碼jsp實現的簡單分頁示例jsp hibernate的分頁代碼jsp自定義分頁標簽tag全過程jsp+servlet+javabean實現數據分頁方法完整實例jsp通用高大上分頁代碼(超管用)jsp實現頁面分頁功能代碼一個通用的jsp分頁pagebean簡單實現jsp分頁顯示效果jsp 重復提交問題spring mvc自定義日期類型轉換器實例詳解jsp獲得本地及serverip的簡單方法jsp對javabean的各種常用操作方法總結訪問jsp文件或者servlet文件時提示下載的解決方法詳解 hibernate mapping配置json實現jsp分頁實例介紹(附效果圖)jsp 不能解析el表達式的解決辦法jsp導出身份證到excel時候格式不對但以x結尾的卻可以jsp el表達式詳細介紹jsp下頁面跳轉的幾種方法小結jsp生成頁面驗證碼的方法[附代碼在jsp頁面如何獲得url參數spring mvc 框架搭建配置方法及詳jsp web.xml文件的作用及基本配置jsp自定義標簽taglib實現過程重點servlet+jsp實現圖片或文件的上傳將html頁改成jsp的兩種方式jsp 連接mysql配置與使用jsp由淺入深(5)—— scriptlets和html的混javaweb servlet中filter過濾器的詳解jsp實現的簡單分頁示例jsp頁面中窗口關閉,退出的方式分享jsp application(return string)用法詳jsp的運行內幕jsp+ mysql中文亂碼問題post提交亂碼解決jsp實現登錄驗證的過濾器hibernate 的原理與配置log4j 文件輸出
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果