当前位置:首页 > VUE

Springboot整合vue实现分页

2026-02-24 04:50:36VUE

SpringBoot 整合 Vue 实现分页

后端实现 (SpringBoot)

  1. 创建分页查询接口 在 Controller 中定义一个接口,接收页码和每页大小参数,返回分页数据。

    @GetMapping("/api/users")
    public Page<User> getUsers(
            @RequestParam(defaultValue = "1") int page,
            @RequestParam(defaultValue = "10") int size) {
        Pageable pageable = PageRequest.of(page - 1, size);
        return userRepository.findAll(pageable);
    }
  2. 添加分页依赖 确保项目中包含 Spring Data JPA 依赖,用于支持分页功能。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
  3. 配置跨域支持 由于前端和后端可能运行在不同端口,需要配置跨域支持。

    @Configuration
    public class CorsConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/")
                    .allowedOrigins("*")
                    .allowedMethods("*");
        }
    }

前端实现 (Vue)

  1. 安装 axios 使用 axios 进行 HTTP 请求。

    npm install axios
  2. 创建分页组件 在 Vue 组件中实现分页逻辑和数据获取。

    <template>
      <div>
        <table>
          <tr v-for="user in users" :key="user.id">
            <td>{{ user.name }}</td>
          </tr>
        </table>
        <div>
          <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
          <span>第 {{ currentPage }} 页</span>
          <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
        </div>
      </div>
    </template>
    
    <script>
    import axios from 'axios';
    
    export default {
      data() {
        return {
          users: [],
          currentPage: 1,
          totalPages: 0,
          pageSize: 10
        };
      },
      methods: {
        fetchUsers() {
          axios.get(`/api/users?page=${this.currentPage}&size=${this.pageSize}`)
            .then(response => {
              this.users = response.data.content;
              this.totalPages = response.data.totalPages;
            });
        },
        prevPage() {
          if (this.currentPage > 1) {
            this.currentPage--;
            this.fetchUsers();
          }
        },
        nextPage() {
          if (this.currentPage < this.totalPages) {
            this.currentPage++;
            this.fetchUsers();
          }
        }
      },
      created() {
        this.fetchUsers();
      }
    };
    </script>
  3. 配置代理 在开发环境中配置代理,避免跨域问题。

    // vue.config.js
    module.exports = {
      devServer: {
        proxy: {
          '/api': {
            target: 'http://localhost:8080',
            changeOrigin: true
          }
        }
      }
    };

前后端联调

  1. 启动 SpringBoot 后端应用
  2. 启动 Vue 前端开发服务器
  3. 访问前端页面,测试分页功能是否正常工作

注意事项

  • 确保后端接口返回的数据格式与前端期望的一致
  • 分页参数传递时注意页码的偏移量(后端通常从0开始,前端通常从1开始)
  • 在生产环境中应移除宽松的跨域配置,改为精确的域名限制

Springboot整合vue实现分页

分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现分页功能代码

js实现分页功能代码

分页功能实现方法 客户端分页(前端处理数据) 适用于数据量较小且已全部加载到前端的情况。 // 示例数据 const data = Array.from({length: 100}, (_, i)…

vue router实现分页

vue router实现分页

使用 Vue Router 实现分页 在 Vue.js 项目中,可以通过 Vue Router 结合分页组件实现分页功能。以下是实现分页的几种方法: 使用路由参数传递页码 在路由配置中定义一个动态…

vue前端实现分页

vue前端实现分页

实现分页的基本思路 在Vue中实现分页通常需要结合后端API返回的数据和前端的分页组件。核心逻辑包括计算总页数、处理当前页码变化以及动态加载数据。 使用Element UI的分页组件 Element…

vue实现搜索分页

vue实现搜索分页

实现搜索分页的基本思路 在Vue中实现搜索分页功能通常需要结合以下几个关键点:数据绑定、搜索过滤、分页逻辑处理。以下是一个完整的实现方案。 数据准备与绑定 定义数据列表和分页相关变量,通常包括当前…

vue实现滚动分页

vue实现滚动分页

实现滚动分页的基本思路 滚动分页(Infinite Scroll)是一种常见的前端分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 结合现代前端工具可以轻松实现这一功能。 监听滚动事…