1. 程式人生 > >分頁的第三種方式

分頁的第三種方式

優點: 1.通用性更好,給為頁碼寫一個類,更符合面向物件的思維 2.程式碼十分簡潔 缺點: 1.不能及使獲取資料庫中資料的變化 封裝進Dao物件,通過一個方法返回一個map,map裡有一個頁碼物件,還有一個頁面資料物件 public class FenyeService { private HibernateDao dao; public FenyeService() { dao = new HibernateDao(); } public Map getPageData(int page) { List products = null; try { products = dao.getProducts(page); } catch (Exception ex) { ex.printStackTrace(); } PageArgs pageArgs = dao.getPageArgs(); pageArgs.setPageNum(page); Map model = new HashMap(); model.put("list", products); model.put("pageArgs", pageArgs); return model; } } //頁碼類,省略了get/set方法 public class PageArgs { private int pageNum; private int pageSize; private long maxPage; private int prePage; private int nextPage; public void setPageNum(int pageNum) { this.pageNum = pageNum; prePage=pageNum-1<=1?1:pageNum-1; nextPage=(int) (pageNum + 1 >= maxPage ? maxPage : pageNum + 1); } } Servlet中封裝了service物件。 @WebServlet("/PageServlet") public class PageServlet extends HttpServlet { private FenyeService fenyeService; public PageServlet() { fenyeService = new FenyeService(); } //處理get或post請求 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); int page = ServletRequestUtils.getIntParameter(request, "page", 1); Map model = fenyeService.getPageData(page); request.setAttribute("model", model); request.getRequestDispatcher("page.jsp").forward(request, response); } } 一個工具類 ublic class ServletRequestUtils { public static double getDoubleParameter(HttpServletRequest request, String param, double defVal) { String val = request.getParameter(param); try { double num = Double.parseDouble(val); return num; } catch (NumberFormatException Exception) { return defVal; } } public static int getIntParameter(HttpServletRequest request, String param, int defVal) { String val = request.getParameter(param); try { int num = Integer.parseInt(val); return num; } catch (NumberFormatException Exception) { return defVal; } } } JSP頁面 <!--頁面資料顯示--> <c:forEach items="${model['list']}" var="rec"> <tr> <td height="27">${rec.id}</td> <td>${rec.productName}</td> <td>${rec.price}</td> <td>${rec.unit}</td> <td>${rec.num}</td> <td>${rec.inDate}</td> <td>${rec.baozhiTime}</td> </tr> </c:forEach> <!--頁碼顯示--> <a href="PageServlet?page=1">第一頁</a> <a href="PageServlet?page=${model['pageArgs'].prePage}">上一頁</a> &nbsp;${model['pageArgs'].pageNum}/${model['pageArgs'].maxPage}&nbsp; <a href="PageServlet?page=${model['pageArgs'].nextPage}">下一頁</a> <a href="PageServlet?page=${model['pageArgs'].maxPage}">尾頁</a>

相關推薦

方式

實現方式 優點 缺點 適用場景 subList 簡單、易用 效率低 無法按需批量獲取資料 SQL語句 簡單、直接、效率高 資料庫相容性差 不要求資料庫相容 Hibernate框架 面向物件,相容性強 複雜查詢效能低 相容不同資料庫 一.藉助

方式

優點: 1.通用性更好,給為頁碼寫一個類,更符合面向物件的思維 2.程式碼十分簡潔 缺點: 1.不能及使獲取資料庫中資料的變化 封裝進Dao物件,通過一個方法返回一個map,map裡有一個頁碼物件,還有一個頁面資料物件 public class FenyeService

django的兩方式

data number 數據返回 django 當前 star instance previous ref 第一種自定義分頁: def pageDemo(request): ‘‘‘ 自定義分頁] :param request: :return:

創建線程的方式——使用Callable接口

https err catch lse ble 兩個 tst time ID Callable是類似於Runnable的接口,實現Callable的類和實現Runnable的類都是可被其他線程執行的任務。 優點:有返回值 缺點:實現繁瑣 簡單實現: CallableAndF

SQLserver的四方式

第一種:ROW_NUMBER() OVER()方式 select * from (     select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels   ) as b where RowI

實現執行緒的方式 實現Callable介面

package com.juc; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /**

SQL SERVER 的幾方式

背景: 在日常工作中,經常需要解決分頁的問題,這也是真分頁必須要做的一件事情。經常查詢,發現有很多的分頁方法,為了瞭解他們的分頁效率我做了一個實驗。當然,跟自己的伺服器效能也是有一定關係的。 準備: 1

Oracle資料庫方法

-- 不能對ROWNUM使用>(大於1的數值)、>=(大於或等於1的數值)、=(大於或等於1的數值),否則無結果-- 所以直接用只能從1開始-- rownum >10 沒有記錄,因為第一條不滿足去掉的話,第二條的rownum又成了1,所以永遠沒有滿足條件的記

建立執行緒的方式以及簡單使用

一、Callable介面   與繼承Thread和實現Runnable介面方式建立執行緒相比,有以下兩點不同: 可以有返回值,並且能夠獲取返回值 call()方法允許丟擲異常 二、簡單使用 package com.duchong.thread.callable; import j

Hibernate 的兩方式

第一種:hql分頁(不推薦)需要手動關閉session連線 //PageBean.java @SuppressWarnings("hiding") public class PageBean<

RecycleView 實現複雜首佈局方式

做過電商類應用的朋友可能都會遇到一個比較頭疼的問題:複雜的首頁佈局如何實現。參考百度糯米,美團,bilibili等應用,都會發現其首頁的佈局相對複雜,例如下圖bilibili的首頁(第二張是demo實現的效果圖),可以看到在同一個頁面中先是有列表佈局出現,然後出現了2列的網格

建立執行緒的方式:實現Callable介面

以前建立執行緒有兩種方式:一種是繼承Thread類,重寫run()方法;另一種就是實現runnable介面的run()方法。我們先來看看這兩種方式的實現。 1、繼承Thread類 package com.jdk8.Thread; public c

實現多執行緒的方式之Callable

中說過,實現多執行緒有兩種方式:一種是繼承Thread類,另一種是實現Runnable介面。這兩種方式中真正起作用的是run方法,不過run方法並沒有返回值。如果我們希望任務在完成時能夠有返回值,這時就

【我的Java筆記】多執行緒_多執行緒實現的方式(執行緒池)

Executors(工廠類) 方法:public static ExecutorService newFixedThreadPool(int nThreads)指定線上程池中多少條執行緒 注:此方法

啟動執行緒的方式之Callable

java中第三種啟動執行緒的方式是實現Callable介面package com.lyzx.juc; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException;

的幾方式(邏輯和物理

/** *//** * TestPageResultSetDAO.java * * Copyright 2008. All Rights Reserved. */package com.cosmow.pageresultset.dao;import java.sql.Connection;import jav

的第二方式

優點: 1.程式碼十分簡潔 缺點: 1.不能及時響應資料庫中變化 2.重複查詢較多,每獲取一個屬性(總頁數),都要查詢資料庫 將某一頁的資料直接封裝在此類中,調一個方法便可獲取資料。 public class fengye { // 查詢所有使用者 public Lis

建立執行緒的方式Callable和Future CompletionService

前面已經指出通過實現Runnable時,Thread類的作用就是將run()方法包裝成執行緒執行體,那麼是否可以直接把任意方法都包裝成執行緒執行體呢?Java目前不行,但其模仿者C#中是可以的. Callabel介面可以看成是Runnable介面的增強版,只不過其執行緒

java的兩方式

  方式其實都非常的簡單,一種是資料庫分頁用limit限制取出條數,一種是在業務邏輯裡面分頁,我用的是jdbc,所以每次遊標指定到一定的條數進行展示。   1資料庫分頁(關鍵字limit) 因為只是簡單的進行原理學習,所以並沒有對程式碼方面對嚴格的書寫,明白原理就好。 主

jqGrid 滾動載入 或者點選載入兩方式

public static < T > void sortByBeanFiled(List < T > list, String field, String order) {     logger.debug("sort list...");     Integer d = order