java欢迎页面说明_web页 Java Web- [页面功能]详细说明

分页简介

分页功能是网页中非常常见的功能,其功能是将数据分为多个页面以供显示。

当我们不使用分页功能时,我们将面临许多问题:

分页类别

分页的实现分为两种类型,即真正分页和错误分页,即物理分页和逻辑分页。

1.真实分页(物理分页):

2.假分页(逻辑分页):

传统分页方法

错误分页的实现非常简单。您只需要准备一个集合来保存从数据库中检索到的所有数据,然后根据当前页面的代码号,取出相应的数据范围并显示出来。这里我们是基于物理分页实现的。

分页原理

36018dba1ab10852551eb4de515a084e.png

可以发现需要通过SQL语句查询页面函数所需的两个数据:一个是页面上显示的数据列表,另一个是数据totalCount的总数,对应于以下内容两个分别的SQL语句:

通过计算获得的数据是:

用户传递的数据:

我们可以创建一个Page工具作为备份:

public class Page {

int start; // 开始数据的索引

int count; // 每一页的数量

int total; // 总共的数据量

/**

* 提供一个构造方法

* @param start

* @param count

*/

public Page(int start, int count) {

super();

this.start = start;

this.count = count;

}

/**

* 判断是否有上一页

* @return

*/

public boolean isHasPreviouse(){

if(start==0)

return false;

return true;

}

/**

* 判断是否有下一页

* @return

*/

public boolean isHasNext(){

if(start==getLast())

return false;

return true;

}

/**

* 计算得到总页数

* @return

*/

public int getTotalPage(){

int totalPage;

// 假设总数是50,是能够被5整除的,那么就有10页

if (0 == total % count)

totalPage = total /count;

// 假设总数是51,不能够被5整除的,那么就有11页

else

totalPage = total / count + 1;

if(0==totalPage)

totalPage = 1;

return totalPage;

}

/**

* 计算得到尾页

* @return

*/

public int getLast(){

int last;

// 假设总数是50,是能够被5整除的,那么最后一页的开始就是45

if (0 == total % count)

last = total - count;

// 假设总数是51,不能够被5整除的,那么最后一页的开始就是50

else

last = total - total % count;

last = last<0?0:last;

return last;

}

/* getter and setter */

}

前台的分页设计

首先,我们需要完成前台分页栏的设计。这里我们可以直接介绍Bootstrap来完成:

以上是使用Bootstrap实现分页栏的简单示例。如果您不熟悉童鞋,可以在新手教程中进行检查:单击此处

页面栏的简单版本

11b6bef269c1c11e706a762bdced0daf.png

为了便于理解,我们首先实现分页栏的简单版本:

页面栏的改进版本

1.写头和尾巴

.....

2.写«‹这两个功能按钮

11a98f8a39f74e0323bcc7cdfcb7c924.gif

使用标签增加边界判断,如果没有上一页,则将其设置为禁用状态

class="disabled">

«

class="disabled">

使用JavaScript代码完成禁用功能:

3.完成中间页码的书写

从0循环到page.totalPage-1,varStatus等效于循环变量

后台分页

主页在项目中引入了上述的Page工具类Axure教程,然后我们在DAO类中使用LIMIT关键字来查询数据库中的信息:

public Listlist() {

return list(0, Short.MAX_VALUE);

}

public Listlist(int start, int count) {

Liststudents = new ArrayList<>();

String sql = "SELECT * FROM student ORDER BY student_id desc limit ?,?";

try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql)) {

ps.setInt(1, start);

ps.setInt(2, count);

// 获取结果集...

} catch (SQLException e) {

e.printStackTrace();

}

return students;

}

在Servlet中获取分页参数web页,并使用页面参数获取显示在主页上的StudentList:

267f2c64eb13f0e7051b465ff11e2a1b.png

// 获取分页参数

int start = 0;

int count = 10;

try {

start = Integer.parseInt(req.getParameter("page.start"));

count = Integer.parseInt(req.getParameter("page.count"));

} catch (Exception e) {

}

Page page = new Page(start, count);

Liststudents = studentDAO.list(page.getStart(), page.getCount());

....

// 共享数据

req.setAttribute("page", page);

req.setAttribute("students", students);

以上可以完成分页功能电商后台原型,但这是基于Servlet的版本。该方法实际上在先前编写的项目(学生管理系统(简化版))中使用。如果您有兴趣,可以查看一下。

SSM中的分页

在SSM项目中web页,我们可以使用MyBatis:PageHelper的分页插件来帮助我们更轻松地完成分页需求,官方网站在这里:PageHelper

在这里,我们演示如何使用上述工具来重建我们之前编写的SSM项目-学生管理系统-SSM版本

第一步:添加相关的jar依赖项

PageHelper需要依赖两个jar包,我们直接在pom.xml中添加两个jar包依赖项:

com.github.pagehelper

pagehelper

5.1.2-beta

com.github.jsqlparser

jsqlparser

1.0

第2步:配置相关环境

在MyBatis的SessionFactory配置中添加新的属性名称插件配置:

8578e21d18557683bb888338b2b5e13e.png

第3步:重构项目

首先,让我们摆脱映射文件中的LIMIT关键字:

SELECT * FROM student ORDER BY student_id desc

然后注释掉查询数据总数的SQL语句:

修改Dao类和Service类中的相应位置:

然后在StudentController中修改方法:

@RequestMapping("/listStudent")

public String listStudent(HttpServletRequest request, HttpServletResponse response) {

// 获取分页参数

int start = 0;

int count = 10;

try {

start = Integer.parseInt(request.getParameter("page.start"));

count = Integer.parseInt(request.getParameter("page.count"));

} catch (Exception e) {

}

Page page = new Page(start, count);

// 使用 PageHelper 来设置分页

PageHelper.offsetPage(page.getStart(),page.getCount());

Liststudents = studentService.list();

// 使用 PageHelper 来获取总数

int total = (int) new PageInfo<>(students).getTotal();

page.setTotal(total);

request.setAttribute("students", students);

request.setAttribute("page", page);

return "listStudent";

}

重新启动服务器,您可以正确看到并使用分页功能。

摘要

实际上,我对该工具相对不敏感。因为它仅削弱了该功能的一小部分,所以它并不像我想象的那样“智能”,并且我还没有看到任何可以帮助我理解的优秀博客文章。 。希望所有认识的人都能无私分享measure,谢谢!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值