JSP开发环境下的数据分页技术探讨

2021-05-09 01:06潘国荣
现代信息科技 2021年20期
关键词:开发模式

摘  要:数据分页是用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—),男,汉族,江苏溧阳人,高级教师,高级程序员,本科,主要研究方向:计算机软件应用技术。

猜你喜欢
开发模式
鼓浪屿音乐旅游发展模式探析
浅谈乡村旅游的开发和利用
基于JSP技术的常用开发模式分析及运用
我国乡村旅游驱动机制与开发模式研究
非物质文化遗产的旅游开发模式与优化策略
邢台微营销市场前景与开发模式研究