JSP+EXt2.0实现分页的方法

那么我们来详细讲解一下“JSP+Ext2.0实现分页的方法”的完整攻略。

1. 准备工作

首先,我们需要准备好以下工作:

  1. 安装数据库(例如MySQL)和Tomcat服务器。
  2. 创建数据库表并插入少量数据,以便进行分页。
  3. 下载并添加ExtJS 2.0的库文件到项目中。

2. 创建JSP页面和Servlet

接下来,我们需要创建一个JSP页面,以及一个Servlet来获取并处理数据。

下面是一个示例的JSP页面(假设文件名为data.jsp),其中包括一个显示数据的表格和一个分页栏:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>数据分页</title>
    <link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
    <script type="text/javascript" src="resources/js/ext-base.js"></script>
    <script type="text/javascript" src="resources/js/ext-all.js"></script>
    <script type="text/javascript" src="resources/js/ext-lang-zh_CN.js"></script>
    <script type="text/javascript" src="data.js"></script>
</head>
<body>
    <table id="dataGrid"></table>
    <div id="pagingBar"></div>
</body>
</html>

具体的实现细节在后面会有说明。

然后,我们需要创建一个Servlet(假设文件名为DataServlet.java),用来处理获取和分页操作:

package com.example;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONArray;
import org.json.JSONObject;

public class DataServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    // 模拟数据
    private List<User> userList = new ArrayList<>();
    {
        userList.add(new User(1, "张三", "男", 23));
        userList.add(new User(2, "李四", "男", 26));
        userList.add(new User(3, "王五", "女", 21));
        userList.add(new User(4, "赵六", "女", 28));
        userList.add(new User(5, "孙七", "男", 29));
        userList.add(new User(6, "周八", "女", 20));
        userList.add(new User(7, "吴九", "男", 24));
        userList.add(new User(8, "郑十", "女", 22));
    }

    public DataServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        int page = Integer.parseInt(request.getParameter("page"));
        int pageSize = Integer.parseInt(request.getParameter("limit"));
        List<User> data = getPageData(page, pageSize);
        JSONObject result = new JSONObject();
        result.put("code", 0);
        result.put("msg", "");
        result.put("count", userList.size());
        result.put("data", data);
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json");
        PrintWriter out = response.getWriter();
        out.print(result.toString());
        out.flush();
        out.close();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

    /**
     * 获取指定页码和每页数量的数据
     * @param page
     * @param pageSize
     * @return
     */
    private List<User> getPageData(int page, int pageSize) {
        int start = (page - 1) * pageSize;
        int end = start + pageSize;
        if (end > userList.size()) {
            end = userList.size();
        }
        return userList.subList(start, end);
    }

    /**
     * 用户类
     */
    private static class User {
        private int id;
        private String name;
        private String sex;
        private int age;

        public User(int id, String name, String sex, int age) {
            super();
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.age = age;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

    }
}

这里我们模拟了一个用户类,并使用了List作为数据源。在Servlet中,我们需要解析请求参数中的页码和每页数据数量,然后使用getPageData()方法获取数据,最后将返回结果封装为JSON格式返回给前端。

3. 前端实现

最后,我们需要使用ExtJS 2.0的相关组件来实现前端的数据显示和分页功能。

首先,我们需要编写一个data.js文件,其中包含以下代码:

Ext.onReady(function() {
    Ext.QuickTips.init();
    var pageSize = 3;
    var dataStore = new Ext.data.JsonStore({
        url: 'DataServlet',
        method: 'GET',
        root: 'data',
        fields: [{
            name: 'id',
            type: 'int'
        }, {
            name: 'name',
            type: 'string'
        }, {
            name: 'sex',
            type: 'string'
        }, {
            name: 'age',
            type: 'int'
        }],
        listeners: {
            'load': function(store, records, options) {
                var pagingBar = Ext.getCmp('pagingBar');
                if (!pagingBar) {
                    pagingBar = new Ext.PagingToolbar({
                        id: 'pagingBar',
                        pageSize: pageSize,
                        store: dataStore,
                        displayInfo: true,
                        displayMsg: '当前显示第{0}条到第{1}条记录,共{2}条记录',
                        emptyMsg: '没有记录'
                    });
                    pagingBar.doRefresh();
                } else {
                    pagingBar.store.loadData(store.reader.jsonData);
                }
            }
        },
        baseParams: {
            'page': '1',
            'limit': pageSize
        }
    });
    var columns = [{
        header: 'ID',
        dataIndex: 'id',
        width: 50
    }, {
        header: '姓名',
        dataIndex: 'name',
        width: 80
    }, {
        header: '性别',
        dataIndex: 'sex',
        width: 50
    }, {
        header: '年龄',
        dataIndex: 'age',
        width: 50
    }];
    var grid = new Ext.grid.GridPanel({
        title: '用户列表',
        store: dataStore,
        columns: columns,
        height: 200,
        renderTo: 'dataGrid'
    });
});

这段代码中,我们使用了JsonStore来获取数据,并设置了分页、查询参数和监听器,以便实现数据分页展示。在监听器中,我们使用PagingToolbar来显示分页栏信息。

最后,在data.js文件的头部加载了必要的ExtJS库和CSS文件。

至此,我们实现了一个简单的JSP和ExtJS 2.0的分页实现。

4. 示例说明

我们可以通过在浏览器中访问data.jsp文件来查看效果,如下:

http://localhost:8080/YourProjectName/data.jsp

其中YourProjectName为你的项目名称。

可以根据需要调整示例代码中的分页数量和数据列表,以适应不同的应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP+EXt2.0实现分页的方法 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java将文件夹保留目录打包为 ZIP 压缩包并下载的教程详解

    下面是关于“Java将文件夹保留目录打包为 ZIP 压缩包并下载的教程详解”的完整攻略。 前言 在Java程序中,我们有时会需要将一个文件夹以及其中的文件打包成ZIP格式的压缩文件并下载。本文将介绍如何实现这个功能。 代码实现 Java提供了ZipOutputStream类和ZipEntry类,可以轻松地打包一个文件夹中的所有文件并生成ZIP文件。我们可以使…

    Java 2023年5月19日
    00
  • 解析SpringBoot项目开发之Gzip压缩过程

    下面详细解析SpringBoot项目开发中的Gzip压缩过程: 1. 什么是Gzip压缩 Gzip是一种文件压缩格式,用于减小文件大小,节省传输带宽,提高响应速度。在Web应用中,客户端可以通过发起支持Gzip压缩的请求,服务器返回经过Gzip压缩的响应,从而实现数据传输的优化。 2. SpringBoot中开启Gzip压缩 在SpringBoot中,可以通…

    Java 2023年5月19日
    00
  • jQuery实现标签子元素的添加和赋值方法

    jQuery是JavaScript库中一个非常流行的家族,包含很多提高编程效率的快捷语法和易用性。其中一个重要的应用场景就是页面元素的动态操作和数据交互。在标签子元素的添加和赋值方法中,jQuery的语法极易上手,而且可扩展性非常强。 准备工作 在开始学习jQuery添加和赋值标签子元素的方法前,你需要先了解以下知识: jQuery库文件的引入; HTML基…

    Java 2023年6月15日
    00
  • Spring\SpringBoot配置连接数据库的方法

    下面是Spring\SpringBoot配置连接数据库的方法的完整攻略。 1. Spring中配置连接数据库的方法 1.1 在Spring配置文件中配置 在Spring配置文件中配置连接数据库的方式是最常见的方法。 <!– 数据库连接信息 –> <bean id="dataSource" class="or…

    Java 2023年5月20日
    00
  • IntelliJ IDEA打开多个Maven的module且相互调用代码的方法

    IntelliJ IDEA是一款功能强大的Java开发工具,在开发过程中经常需要打开多个Maven的module且相互调用代码,下面将介绍具体操作步骤: 创建Maven module 首先,我们需要创建多个Maven module。 打开IntelliJ IDEA,点击File -> New -> Module,选择Maven,点击Next。 在…

    Java 2023年5月19日
    00
  • 你肯定能看懂的Java IO相关知识总结

    下面是详细的总结攻略。 Java IO 简介 Java IO(输入/输出) 是非常重要的一部分,在日常开发中我们经常需要读取文件或者网络数据。Java IO 可以帮助我们进行文件的读写、网络通讯等操作。我们可以通过 File、InputStream、OutputStream、Reader、Writer 等类来对IO进行操作。 Java IO 相关知识总结 下…

    Java 2023年5月19日
    00
  • Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    为了解决Java中FTPClient上传中文目录、中文文件名乱码问题,我们需要进行如下步骤: 步骤一:设置编码格式 Java中的FTPClient默认编码为ISO-8859-1,需要将其改为UTF-8,以支持中文目录和文件名的上传。 FTPClient ftpClient = new FTPClient(); ftpClient.setControlEnco…

    Java 2023年5月20日
    00
  • Java多线程 Producer and Consumer设计模式

    Java的Producer and Consumer设计模式是一种多线程编程的技术,用于在高并发的环境中协调生产者和消费者的工作流程,保证系统的高效稳定。该模式是基于两个不同的角色,分别是生产者(Producer)和消费者(Consumer)。生产者是负责生成数据的线程,而消费者则负责消费这些数据的线程。 以下是Java多线程Producer and Con…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部