当前位置:首页 > VUE

vue和springboot实现搜索

2026-02-21 13:32:15VUE

Vue 和 Spring Boot 实现搜索功能

前端实现(Vue)

安装必要的依赖(如 axios 用于 HTTP 请求):

npm install axios

创建搜索组件(Search.vue):

<template>
  <div>
    <input v-model="keyword" @input="search" placeholder="输入关键词...">
    <ul>
      <li v-for="item in results" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      keyword: '',
      results: []
    };
  },
  methods: {
    search() {
      if (this.keyword.trim() === '') {
        this.results = [];
        return;
      }
      axios.get(`http://localhost:8080/api/search?keyword=${this.keyword}`)
        .then(response => {
          this.results = response.data;
        })
        .catch(error => {
          console.error('搜索失败:', error);
        });
    }
  }
};
</script>

后端实现(Spring Boot)

创建实体类(Item.java):

vue和springboot实现搜索

@Entity
public class Item {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    // 其他字段和 getter/setter
}

创建 Repository 接口(ItemRepository.java):

public interface ItemRepository extends JpaRepository<Item, Long> {
    List<Item> findByNameContaining(String keyword);
}

创建 Controller(SearchController.java):

vue和springboot实现搜索

@RestController
@RequestMapping("/api/search")
public class SearchController {
    @Autowired
    private ItemRepository itemRepository;

    @GetMapping
    public List<Item> search(@RequestParam String keyword) {
        return itemRepository.findByNameContaining(keyword);
    }
}

跨域配置(Spring Boot)

在 Spring Boot 应用中添加配置类:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/")
                .allowedOrigins("http://localhost:8081") // Vue 应用端口
                .allowedMethods("*");
    }
}

优化建议

实现防抖(Debounce)减少请求频率:

// 在 Vue 组件中
debouncedSearch: _.debounce(function() {
  this.search();
}, 500)

后端分页支持:

@GetMapping
public Page<Item> search(
    @RequestParam String keyword,
    @PageableDefault(size = 10) Pageable pageable) {
    return itemRepository.findByNameContaining(keyword, pageable);
}

部署注意事项

生产环境需要配置 HTTPS 和更严格的安全策略。前端打包后可以部署到 Nginx 或直接作为 Spring Boot 的静态资源。

标签: vuespringboot
分享给朋友:

相关文章

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.defineProp…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

实现 vue ssr

实现 vue ssr

Vue SSR 实现方法 Vue SSR(Server-Side Rendering)通过服务器端渲染 Vue 应用,提升首屏加载速度和 SEO 友好性。以下是核心实现方法: 基础配置 安装必要…

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景…