

摘? 要:數據分頁是用JSP開發Web應用程序時經常要用到的一種技術。在頁面上要展示從數據庫中取出的大量數據時,就需要對數據進行分頁處理,分頁處理主要涉及待分頁的記錄數據的獲取、記錄總數和總頁數的計算、每頁記錄數的設定、當前頁數據的存放等,這在不同的開發模式下處理過程是有區別的。文章對在JSP開發環境中三種不同開發模式下的數據分頁方法進行了探討。
關鍵詞:JSP;開發模式;數據分頁技術
中圖分類號:TP311? ? ? ? ? ? ? ? ? ? 文獻標識碼:A文章編號:2096-4706(2021)20-0033-03
Discussion on Data Paging Technology under JSP Development Environment
PAN Guorong
(Changzhou Liu Guojun Vocational Technology College, Changzhou? 213025, China)
Abstract: Data paging is a technology often used when developing Web applications with JSP. When you want to display a large amount of data taken from the database on the page, you need to page the data. The paging processing mainly involves the acquisition of the record data to be paged, the calculation of the total number of records and total pages, the setting of the number of records per page, the storage of the current page data, etc. the processing process is different under different development modes. This paper discusses the data paging methods under three different development modes in JSP development environment.
Keywords: JSP; development mode; data paging technology
0? 引? 言
JSP技術是現在常用的一種開發動態網站的技術,在開發實際應用程序時,經常要將數據庫中大量的數據取出后展示在頁面上,這就需要對數據進行分頁處理,否則頁面上要顯示的數據可能遠遠超出一個頁面范圍,應用程序界面對用戶來講就不太友好。本文根據本人開發的一個在教學中已實際使用的案例-學生成績基本信息維護系統為例,對基于不同的JSP開發模式下數據的分頁處理方法進行分析和論述。
1? 數據分頁處理概述
數據分頁就是將數據從后臺數據庫中查詢出來之后按用戶需要進行分頁顯示,每一頁上顯示一定數量的記錄數據,使得數據的展示更加符合用戶需要,清晰、美觀合理。這時,我們可以用分頁技術。下面我們以學生信息維護系統中學生數據的分頁為例進行說明。程序運行時頁面中數據分頁情況如圖1所示。
數據庫的設計比較簡單,只要在其中設計一張學生基本信息表即可,表名為studenttb,表結構如表1所示。
在進行分頁處理時,基本方法是先將要分頁的數據從數據庫表中取出,并存放至一個session范圍內的對象中,然后計算出總的記錄數,根據設定的每頁記錄數計算出總的頁數,按照要顯示的目標頁的頁碼計算出當第一條記錄的位置,取出目標頁上的記錄數據進行顯示,頁面數據行下面的“首頁”“上一頁”“下一頁”“末頁”超鏈接按具體記錄條數進行顯示或隱藏處理。
2? 三種開發模式下數據分頁的分析、設計及實現
2.1? JSP+JavaBean開發模式
在這種模式下,先編制一個用于存放學生信息的JavaBean實體類,屬性與表studenttb對應。分頁處理的主要代碼都是寫在一個頁面文件studentlistbypage.jsp中的,在頁面的開始處:
//從sStudent獲取要分頁的數據,存放至列表對象中
List sStudent=(List)session.getAttribute(“StudentList”);
int recordCount=0; //記錄總數
int pageSize=5; //設定的每頁記錄數
int pageCount=0; //總頁數
在表格的數據行之前,計算記錄總數、總頁數,把記錄指針移指當前頁第一條記錄之前,取出要顯示的目標頁的數據顯示在表格數據行中:
recordCount=sStudent.size();
if( recordCount % pageSize==0)
pageCount=recordCount / pageSize;
else
pageCount=recordCount/pageSize + 1;
int start=(currentPage-1)*pageSize;
int n=0;
//循環取出pageSize條記錄
for(int i = start;i < sStudent.size();i++)
{
Student student=(Student)sStudent.get(i);
……
在表格的數據行下面形成的Goto及翻頁的超鏈接:
out.print(“首頁? “);
out.print(“上一頁? “);
out.print(“下一頁? “);
out.print(“末頁");
2.2? JSP+JavaBean+Servlet開發模式
在這種模式下,可以將存放分頁的數據、當前頁記錄數據、記錄總數、總頁數等一些變量的定義單獨組織在一個常量類Constants中,重點是編制一個Servlet類PageServlet,用作控制器。在該類中先根據傳入的要分頁的記錄數據,計算出記錄總數、總頁數,分離出目標頁中的記錄數據,將這些數據保存起來,再轉至目標頁面;在頁面中,只要取出前面保存的數據,直接用循環顯示出來即可。PageServlet.java類的關鍵代碼如下:
……
public class PageServlet extends HttpServlet
{
//doPost方法
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
request.setCharacter Encoding(“utf-8”);
String strCurrentPage = request. getParameter (“currentPage”);
//計算記錄總數、總頁數,分離出目標頁中的記錄數據
……
//保存相關數據至session級變量中
session.setAttribute (Const- ants.PageList, pageList);
session.setAttribute(Const- ants.RecordCount, recordCount);
session.setAttribute(Const- ants.PageCount? ,pageCount);
session.setAttribute(Const- ants.CurrentPage ,currentPage);
response.sendRedirect(“stud- entlistbypage.jsp”);
}
在頁面文件studentlistbypage.jsp中,取出Servlet類中保存的session范圍內各變量的值,將當前頁的數據在數據行中顯示出來,表格的數據行下面形成的Goto及翻頁的超鏈接:
out.print(“首頁? “);
out.print(“上一頁? “);
out.print(“下一頁? “);
out.print(“末頁");
2.3? Struts框架模式
在這種模式下,主要是將Servlet類改成自定義動作類,用作控制器。自定義動作類PageAction的功能與PageServlet功能一致,編制時只需將PageServlet.java類文件中doPost()方法中的代碼復制至PageAction.java類文件中的execute()方法中進行修改,主要代碼如下:
……
public class PageAction extends Action
{
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
String strCurrentPage =request.getParameter (“currentPage”);
……
//保存相差數據至session級變量中
session.setAttribute(Constants.PageList, pageList);
session.setAttribute(Constants.RecordCount, recordCount);
session.setAttribute(Constants.PageCount? ,pageCount);
session.setAttribute(Constants.CurrentPage ,currentPage);
return? ?mapping.findForward(“ListByPage”);
}
}
將第二種模式中的頁面文件studentlistbypage.jsp修改,將面前面超鏈接中原來對Servlet的調用改成對自定義動作類的調用:
out.print(“首頁? “);
out.print(“上一頁? “);
out.print(“下一頁? “);
out.print(“末頁");
3? 結? 論
在用JSP開發Web應用程序時,對數據進行分頁處理是經常要用到的一種技術。本文通過學生基本信息數據進行分頁處理這樣一個實例,分析了在三種不同開發模式下數據分頁處理的方法及步驟,可以很方便地將其移植至其他JSP實際應用中,進一步簡化JSP的開發。
參考文獻:
[1] 馬建紅,李占波.JSP應用與開發技術 [M].北京:清華大學出版社,2016.
[2] 張國權,張凌子.Java Web程序設計實戰 [M].上海:上海交通大學出版社,2017.
[3] 張銀鶴,劉治國,張豪.JSP動態網站開發實踐教程 [M].北京:清華大學出版社,2009.
[4] 孫更新,賓晟,周峰.Struts框架結構的Java Web開發技術基礎與實踐教程 [M].北京:電子工業出版社,2008.
[5] 劉德山,金百東.Java程序設計 [M].北京:科學出版社,2012.
作者簡介:潘國榮(1966—),男,漢族,江蘇溧陽人,高級教師,高級程序員,本科,主要研究方向:計算機軟件應用技術。