成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

JSP實現分頁效果

瀏覽:358日期:2022-06-07 14:04:50

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

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

那么直接上代碼:

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

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(); } }}

基本上就是普通的數據庫操作功能,很好懂,就不多解釋了;
對于數據訪問層的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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲一区二区成人| 国产99一区视频免费| 日本成人在线视频网站| 一区二区三区免费看| 亚洲国产精品ⅴa在线观看| 国产成人高清视频| 日韩一级免费观看| 成人美女视频在线观看18| 91精品国产欧美一区二区18| 精品一区二区国语对白| 欧美日本国产一区| 国产综合久久久久影院| 67194成人在线观看| 国产精品1024| 精品乱人伦小说| 97国产一区二区| 欧美激情中文字幕一区二区| 亚洲欧美文学| 国产精品毛片无遮挡高清| 好吊一区二区三区| 一区二区在线观看av| 国产精品一区免费观看| 天堂久久一区二区三区| 一本大道久久a久久精二百| 免费黄网站欧美| 欧美情侣在线播放| 成人av电影免费在线播放| 精品免费一区二区三区| 欧美影视一区| 亚洲欧洲www| 亚洲综合欧美| 久久国产精品99久久人人澡| 精品视频1区2区| 成人一道本在线| 国产亚洲欧美激情| 99av国产精品欲麻豆| 亚洲成人在线网站| 欧美三级资源在线| 成人做爰69片免费看网站| 日本一区二区综合亚洲| 亚洲精品女人| 免费高清在线一区| 337p亚洲精品色噜噜| 99久久精品国产网站| 亚洲天堂精品在线观看| 色婷婷香蕉在线一区二区| 国产精品一区二区在线看| 久久亚洲综合色一区二区三区| 国自产拍偷拍福利精品免费一 | av在线这里只有精品| 久久精品亚洲麻豆av一区二区| 国产精品porn| 性做久久久久久久免费看| 91黄视频在线| 国v精品久久久网| 国产精品久久久久一区二区三区共| 国产精品视区| 韩国欧美国产一区| 久久香蕉国产线看观看99| 亚洲精品在线二区| 美女爽到高潮91| 欧美不卡一区二区三区四区| 好吊色欧美一区二区三区四区| 午夜精品久久久久影视| 91精品国产综合久久精品app| 91捆绑美女网站| 亚洲国产精品久久不卡毛片| 91精品中文字幕一区二区三区| 97久久超碰国产精品电影| 亚洲欧美国产高清| 欧美日韩一区视频| 欧美aa国产视频| 午夜激情久久久| 欧美tk—视频vk| 国产一区二区三区成人欧美日韩在线观看| 久久99国产精品久久99果冻传媒| 久久精品人人做人人综合| 免费永久网站黄欧美| 粉嫩aⅴ一区二区三区四区| 亚洲欧洲成人精品av97| 欧美日韩国产bt| 亚洲国产清纯| 精品亚洲porn| 国产精品区一区二区三| 在线观看日韩电影| 国产精品国色综合久久| 久久精品免费观看| 国产精品免费丝袜| 欧美日韩一区二区三区四区五区| 狠久久av成人天堂| 老司机精品视频导航| 国产精品国产三级国产| 精品视频一区二区三区免费| 国产精品xvideos88| 久久99国产精品久久99果冻传媒| 国产精品美女久久久久久2018| 欧美日韩精品一二三区| 狠狠干综合网| 国产麻豆一精品一av一免费| 亚洲精品乱码久久久久久日本蜜臀| 欧美一区二区美女| 免费h精品视频在线播放| 99久久精品国产麻豆演员表| 舔着乳尖日韩一区| 国产精品女同一区二区三区| 在线播放欧美女士性生活| 国产一区二区高清| 99国产精品久久久久久久久久久| 偷窥少妇高潮呻吟av久久免费| 精品国产91久久久久久久妲己| 色哟哟欧美精品| 伊人久久亚洲热| 成人小视频在线| 视频一区二区三区入口| 中文字幕中文在线不卡住| 日韩欧美亚洲一区二区| 一本色道久久综合亚洲精品按摩| 好吊视频一区二区三区四区| 国产精品69毛片高清亚洲| 午夜视频在线观看一区二区 | 一区二区三区成人在线视频| 精品久久人人做人人爰| 91精品办公室少妇高潮对白| 亚洲午夜精品久久| 成人免费视频一区| 欧美aa在线视频| 一区二区三区欧美在线观看| 国产亚洲欧美日韩日本| 欧美一级理论片| 一本久道久久综合中文字幕| 亚洲精品美女91| 欧美精品一区在线发布| 国产成人久久精品77777最新版本| 日韩国产精品大片| 一级精品视频在线观看宜春院| 中文字幕巨乱亚洲| 精品国产电影一区二区| 7777精品伊人久久久大香线蕉完整版| 一区二区动漫| 欧美日韩妖精视频| 99r精品视频| 国产精品一二三区在线| 奇米色一区二区三区四区| 亚洲高清在线视频| 亚洲乱码国产乱码精品精小说 | 日日夜夜一区二区| 亚洲天堂成人网| 日本一区二区三级电影在线观看| 精品日本一线二线三线不卡| 91精品国产综合久久久蜜臀图片| 欧美在线短视频| 久久野战av| 久久精品网址| 久久国产精品毛片| 性一交一乱一区二区洋洋av| 亚洲巨乳在线| 99国产一区| 在线免费观看欧美| 在线成人国产| 国产综合欧美| 韩国在线一区| 亚洲性色视频| 国产精品二区在线| 欧美三级乱码| 国产尤物精品| 亚洲无玛一区| 亚洲国产合集| 亚洲精品视频啊美女在线直播| 在线观看亚洲视频啊啊啊啊| 亚洲国产激情| 亚洲精品在线免费| 一本一本a久久| 国产一区导航| 免费不卡亚洲欧美| 日本福利一区二区| 日本精品免费观看高清观看| 在线观看国产精品网站| 欧美图区在线视频| 欧美精品色综合| 91精品国产91久久久久久一区二区| 91麻豆精品国产91久久久| 日韩欧美综合一区| 精品国产麻豆免费人成网站| 精品免费一区二区三区| 久久久精品欧美丰满| 国产欧美精品区一区二区三区| 欧美激情一区二区三区| 成人欧美一区二区三区小说| 亚洲视频一区二区在线观看| 亚洲最大的成人av| 婷婷开心久久网| 精品一区二区三区影院在线午夜| 国产一区二区在线影院| 成人天堂资源www在线| 91麻豆swag| 亚洲精品韩国| 久久午夜激情| 欧美日韩国产综合视频在线观看| 91精品国产乱码久久蜜臀| 久久婷婷国产综合精品青草|