當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
制作分页工具类,实现分页操作JSP+Servlet+数据库
生活随笔
收集整理的這篇文章主要介紹了
制作分页工具类,实现分页操作JSP+Servlet+数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分頁操作
基于jsp+Servlet+數據庫的分頁操作
每頁限制顯示的條數,顯示總頁數,總條數.可以看上一頁下一頁
操作說明 :需先進入到controller層的接口,將數據查詢出來
? 在放入到session域中,可以轉發或重定向到展示數據的頁面
? 使用El表達式取出數據
先寫個制作分頁的工具類
LimitPageUtil分頁工具類
import java.util.List;/*** @program: internetbar_Test* @description: 分頁工具類* @author: 高天樂* @create: 2021-03-10 14:27** 屬性:list集合裝數據 當前頁 每頁顯示多少條 總條數 總頁數**/ public class LimitPageUtil<T> {//查詢到的數據private List<T> list;//總條數 totalCountprivate Integer totalCount;//當前頁數private Integer currentPage;//每頁顯示的條數public static final Integer ROWS = 10;//總頁數private Integer totalPage;public List<T> getList() {return list;}public void setList(List<T> list) {this.list = list;}public Integer getTotalCount() {return totalCount;}public void setTotalCount(Integer totalCount) {this.totalCount = totalCount;}public Integer getCurrentPage() {return currentPage;}public void setCurrentPage(Integer currentPage) {this.currentPage = currentPage;}public Integer getTotalPage() {return totalPage;}public void setTotalPage(Integer totalPage) {this.totalPage = totalPage;}/*** 計算頁數開始的索引數* @param currentPage 當前頁* @return*/public static Integer getIndex(Integer currentPage){return (currentPage-1)*ROWS;}/*** 計算總頁數* @param totalCount 傳入總條數* @return*/public static Integer getTotalPage(Integer totalCount){return totalCount%ROWS==0?totalCount/ROWS:totalCount/ROWS+1;} }Dao層
這里寫sql分頁的接口
package com.kangye.ibms.dao;import com.kangye.ibms.entity.User;import java.util.List;/*** @program: internetbar* @description: 用戶Dao* @author: 高天樂* @create: 2021-03-06 16:44**/ public interface UserDao<T> {//查詢全部數據List<T> allUser(Class<User> c,Object... obj);//查數據的總共條數Integer totalCount(); }實現dao層接口
package com.kangye.ibms.dao.impl;import com.kangye.ibms.dao.UserDao; import com.kangye.ibms.entity.User; import com.kangye.ibms.utils.DbUtil;import java.util.Arrays; import java.util.List;/*** @program: internetbar* @description: 用戶dao實現* @author: 高天樂* @create: 2021-03-06 16:44**/ public class UserDaoImpl implements UserDao<User> {/*** 查詢全部的數據* @return*/@Overridepublic List<User> allUser(Class<User> c,Object... obj) {//定義sql語句String sql = "select * from user limit ?,?";return DbUtil.selectList(sql,c,obj); //DbUtil.selectList(sql,c,obj); 查詢數據庫的操作,可自行引用其他的}/*** 查出總條數* @return*/@Overridepublic Integer totalCount() {//定義sql語句String sql = "select count(*) from user";return DbUtil.selectWhere(sql);}}Service層
package com.kangye.ibms.service;import com.kangye.ibms.entity.User; import com.kangye.ibms.utils.LimitPageUtil;import java.util.List;/*** @program: internetbar* @description: 用戶邏輯層* @author: 高天樂* @create: 2021-03-06 16:46**/ public interface UserService<T> {//查詢全部數據LimitPageUtil<T> allUser(Class<User> c,Integer currentPage);}實現service層 做具體的邏輯
package com.kangye.ibms.service.impl;import com.kangye.ibms.dao.UserDao; import com.kangye.ibms.dao.impl.UserDaoImpl; import com.kangye.ibms.entity.User; import com.kangye.ibms.service.UserService; import com.kangye.ibms.utils.LimitPageUtil;import java.util.Arrays; import java.util.List;/*** @program: internetbar* @description: 用戶邏輯實現* @author: 高天樂* @create: 2021-03-06 16:47**/ public class UserServiceImpl implements UserService<User> {UserDao<User> userDao = new UserDaoImpl();/*** 分頁查詢數據* @param c 實體類* @param currentPage 當前頁數* @return*/@Overridepublic LimitPageUtil<User> allUser(Class<User> c,Integer currentPage) {//創建分頁類對象LimitPageUtil<User> limit = new LimitPageUtil<>();//當前頁數limit.setCurrentPage(currentPage);//查出數據List<User> userList = userDao.allUser(c, new Object[]{LimitPageUtil.getIndex(currentPage), LimitPageUtil.ROWS});//添加數據limit.setList(userList);//查出總條數Integer totalCount = userDao.totalCount();limit.setTotalCount(totalCount);//總頁數limit.setTotalPage(LimitPageUtil.getTotalPage(totalCount));return limit;}}controller層
接收頁面傳遞過來的數據,拿到數據放入service層
import com.kangye.ibms.dao.UserDao; import com.kangye.ibms.dao.impl.UserDaoImpl; import com.kangye.ibms.entity.User; import com.kangye.ibms.service.UserService; import com.kangye.ibms.service.impl.UserServiceImpl; import com.kangye.ibms.utils.LimitPageUtil;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List;/*** @program: internetbar_Test* @description: 用戶列表* @author: 高天樂* @create: 2021-03-09 10:11**/ @WebServlet("/userList") public class UserListServlet extends HttpServlet {UserService<User> userService = new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//初始化頁面數Integer currentPage = 1;//前臺傳入的頁面數String currentPage1 = req.getParameter("currentPage");//判斷頁面是否傳過來頁面數if(currentPage1 != null){currentPage = Integer.parseInt(currentPage1);//如果傳過來的頁面數小于1的話,賦值為1if (currentPage < 1) {currentPage = 1;}//創建dao層對象UserDao<User> userDao = new UserDaoImpl();//查詢總數據的條數Integer userDataCount = userDao.totalCount();//計算出總頁數Integer totalPage = LimitPageUtil.getTotalPage(userDataCount);//傳遞進來的頁面數大于總頁數,賦值為最后一頁if(currentPage >totalPage){currentPage = totalPage;}}LimitPageUtil<User> limit = userService.allUser(User.class,currentPage);//將數據放入到session里req.getSession().setAttribute("limit",limit);//重定向到頁面resp.sendRedirect("index.jsp");} }JSP頁面代碼
<%@ page contentType="text/html;charset=utf-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head><meta charset="UTF-8"><title>數據頁面</title></head> <body> <table id="data_user" border="1" cellpadding="5px" cellspacing="0px" align="center"><caption>用戶信息</caption><tr><td><input type="checkbox" name="checkAll" id="checkAll"/></td><td>編號</td><td>姓名</td><td>性別</td><td>年齡</td><td>居住地址</td><td>手機號</td><td>操作</td></tr><!--使用JSTL的for循環,遍歷list數據--><c:forEach items="${limit.list}" var="user" varStatus="i"><tr><td><input type="checkbox" name="checks" value="${user.id}"/></td><td>${i.index+1}</td><td>${user.name}</td><td>${user.sex}</td><td>${user.age}</td><td>石家莊市</td><td>${user.phone}</td><td><a href="javaScript:;">修改</a> <a href="javaScript:;" onclick="del(${user.id})">刪除</a></td></tr></c:forEach><tr><td colspan="8"><c:if test="${limit.currentPage>1}"><a href="/userList?currentPage=${limit.currentPage-1}">上一頁</a></c:if><!--使用el表達式取出相對應的數值-->當前頁:${limit.currentPage}/${limit.totalPage}<c:if test="${limit.currentPage<limit.totalPage}"><a href="/userList?currentPage=${limit.currentPage+1}">下一頁</a></c:if>總數據:${limit.totalCount}<a href="/userList?currentPage=1">首頁</a><a href="/userList?currentPage=${limit.totalPage}">尾頁</a><button class="detele">全部刪除</button><button class="add">添加</button></td></tr> </table> </body> </html>總結
以上是生活随笔為你收集整理的制作分页工具类,实现分页操作JSP+Servlet+数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知乎,挣钱?果然具有长尾效应
- 下一篇: html5怎么获取当前星期几,javas