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

yizhihongxing

那么我们来详细讲解一下“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日

相关文章

  • 后端将数据转化为json字符串传输的方法详解

    后端将数据转化为JSON字符串传输的方法详解 什么是JSON JSON是一种轻量级的数据交换格式。它由Douglas Crockford在2001年创造。JSON的全称是JavaScript Object Notation,它是一种文本格式,可以轻松地在各种平台之间传递数据。JSON通常用于前端与后端之间的数据交互。在后端,我们可以使用许多语言来处理JSON…

    Java 2023年5月26日
    00
  • java连接mysql数据库及测试是否连接成功的方法

    下面是Java连接MySQL数据库及测试是否连接成功的方法的完整攻略: 1. 准备工作 在开始操作前,需要先安装好MySQL数据库,并在其中创建好要使用的数据库以及相应的表。 此外,还需下载并安装Java的JDBC驱动程序,如MySQL官网提供的Connector/J驱动,下载地址:https://dev.mysql.com/downloads/connec…

    Java 2023年5月20日
    00
  • SpringBoot详细讲解视图整合引擎thymeleaf

    让我来详细讲解一下“SpringBoot详细讲解视图整合引擎thymeleaf”的完整攻略。 1. 什么是Thymeleaf Thymeleaf是一种现代化的服务器端模板引擎,可支持HTML、CSS、XML、JavaScript等文档类型。它的语法十分简单且灵活,可以通过简单而自然的模板表达式快速地构建出动态内容渲染的视图。 2. 如何整合Thymeleaf…

    Java 2023年5月19日
    00
  • 什么是Java对象关系映射(ORM)?

    Java对象关系映射(ORM)是一种理念,它将数据库中的关系数据模型转换为Java对象模型,并且提供了一种交互式的方式,使得Java程序可以访问和操作数据库,而不必使用SQL语言。ORM的使用可以大幅度减少代码的重复性,提高开发效率。 下面是一个基于ORM实现的小型Java Web应用的开发过程: 首先,我们需要选择一款Java ORM框架,常见的有Hibe…

    Java 2023年5月11日
    00
  • MVC+DAO设计模式下的设计流程详解

    MVC+DAO 是一种常用的设计模式,用于规范化代码的开发和维护,它能够分层,直观地体现出每一层的职责。下面是基于 MVC+DAO 设计模式的完整攻略: 1. MVC设计模式 MVC 分为 Model、View、Controller 三个部分。其中: Model:负责数据的存储和管理,不关心具体的业务逻辑,同样也不关心将数据如何展示给用户。 Controll…

    Java 2023年6月16日
    00
  • 什么是线程安全的单例模式?

    以下是关于线程安全的单例模式的完整使用攻略: 什么是线程安全的单例模式? 线程安全的单例模式是指在多线程环境,保证只有一个实例对象被创建,并且多个线程可以同时访问该实例对象,而不会出现数据不一致或程序崩溃等问题。在多线程编程中,线程安全的单例模式是非常重要的,因为多个线程同时访问单例对象,可能会出现线程间争用的问题,导致数据不致或程序崩溃。 如何实现线程安全…

    Java 2023年5月12日
    00
  • Eclipse使用maven搭建spring mvc图文教程

    下面是关于Eclipse使用Maven搭建Spring MVC的完整攻略,包含两个示例说明。 Eclipse使用Maven搭建Spring MVC图文教程 Spring MVC是一个流行的Java Web框架,它可以帮助我们快速构建Web应用程序。在本文中,我们将介绍如何使用Eclipse和Maven搭建Spring MVC应用程序。 步骤1:创建Maven…

    Java 2023年5月17日
    00
  • java实现构造无限层级树形菜单

    Java实现构造无限层级树形菜单的攻略 背景 在Web开发中,经常会用到树形菜单,这种菜单常常存在多级目录结构,是一种比较典型和重要的web组件。如何实现树形菜单呢? 算法 实现树形菜单的算法其实比较简单,一般情况下采用递归的方式实现。基本思路是:先找到父节点,再找到其下面的子节点,然后再利用递归进行处理,以此达到构造完整的树形结构。 代码示例 下面给出一个…

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