Spring Boot + Vue的网上商城之商品管理

Spring Boot + Vue的网上商城之商品管理

在网上商城中,商品管理是一个非常重要的功能。它涉及到商品的添加、编辑、删除和展示等操作。本文将介绍如何使用Spring Boot和Vue来实现一个简单的商品管理系统。
下面是一个实现Spring Boot + Vue的网上商城之商品管理的思路:

  1. 创建一个Spring Boot项目,使用Spring Initializr或手动创建。添加所需的依赖,如Spring Web、Spring Data JPA和H2数据库。

  2. 创建一个名为"Product"的实体类,表示商品。在该类中定义商品的属性,如id、名称、价格等,并使用JPA注解进行映射。

  3. 创建一个名为"ProductRepository"的接口,继承自JpaRepository,并使用@Repository注解标记。该接口将用于定义与商品数据的交互方法,如查询所有商品、添加商品、更新商品和删除商品等。

  4. 创建一个名为"ProductController"的类,使用@RestController注解标记。在该类中定义商品管理的API接口,如获取所有商品的接口、添加商品的接口、更新商品的接口和删除商品的接口等。在每个接口方法中,调用ProductRepository中定义的方法来实现具体的业务逻辑。

  5. 配置数据库连接信息,如数据库的URL、用户名和密码等。可以在application.properties或application.yml文件中进行配置。

  6. 运行Spring Boot应用程序,确保API接口能够正常工作,并能够通过Postman或浏览器访问。

  7. 创建一个Vue项目,使用Vue CLI或手动创建。安装所需的依赖,如vue-router和axios。

  8. 创建一个名为"ProductList"的组件,用于显示商品列表。在该组件中,使用axios库发送HTTP请求,调用商品管理的API接口,获取所有商品的数据,并在页面上展示出来。

  9. 创建一个名为"ProductForm"的组件,用于添加和编辑商品。在该组件中,使用axios库发送HTTP请求,调用商品管理的API接口,添加或更新商品的数据。

  10. 创建一个名为"ProductItem"的组件,用于显示单个商品的详细信息。在该组件中,使用axios库发送HTTP请求,调用商品管理的API接口,获取单个商品的数据,并在页面上展示出来。

  11. 配置路由,将ProductList、ProductForm和ProductItem组件与相应的URL路径进行关联。

  12. 运行Vue应用程序,确保页面能够正常显示,并能够通过添加、编辑和删除商品进行交互。

以上是一个实现Spring Boot + Vue的网上商城之商品管理的思路。根据这个思路,你可以按照步骤逐步实现整个项目。

技术栈

  • 后端:Spring Boot、Spring Data JPA、MySQL
  • 前端:Vue、Vue Router、Axios、Element UI

后端实现

创建Spring Boot项目

首先,我们需要创建一个Spring Boot项目。可以使用Spring Initializr(https://start.spring.io/)来快速生成项目骨架。

数据库设计

在MySQL数据库中创建一个名为"product"的表,用于存储商品信息。表结构如下:

CREATE TABLE product (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  price DECIMAL(10, 2) NOT NULL,
  description VARCHAR(255)
);

创建实体类和Repository

在Java代码中创建一个名为"Product"的实体类,用于映射数据库表。同时,创建一个名为"ProductRepository"的接口,用于访问数据库。

@Entity
@Table(name = "product")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private BigDecimal price;

    private String description;

    // 省略getter和setter方法
}

@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
}

创建商品管理API

在Spring Boot项目的控制器中创建商品管理的API。例如,创建一个名为"ProductController"的类,并实现以下接口:

  • 获取所有商品列表:GET /api/products
  • 添加商品:POST /api/products
  • 编辑商品:PUT /api/products/{id}
  • 删除商品:DELETE /api/products/{id}
@RestController
@RequestMapping("/api/products")
public class ProductController {
    @Autowired
    private ProductRepository productRepository;

    @GetMapping
    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    @PostMapping
    public Product addProduct(@RequestBody Product product) {
        return productRepository.save(product);
    }

    @PutMapping("/{id}")
    public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
        Product existingProduct = productRepository.findById(id).orElseThrow(() -> new RuntimeException("Product not found"));
        existingProduct.setName(product.getName());
        existingProduct.setPrice(product.getPrice());
        existingProduct.setDescription(product.getDescription());
        return productRepository.save(existingProduct);
    }

    @DeleteMapping("/{id}")
    public void deleteProduct(@PathVariable Long id) {
        productRepository.deleteById(id);
    }
}

运行后端服务

使用IDE工具(如IntelliJ IDEA)运行Spring Boot项目,后端服务将在默认端口(如8080)上启动。

前端实现

创建Vue项目

使用Vue CLI来创建一个新的Vue项目。打开命令行,并执行以下命令:

vue create product-management

安装依赖

进入项目目录,并安装所需的依赖:

cd product-management
npm install axios element-ui vue-router

创建组件

在src目录下创建一个名为"components"的文件夹,并在其中创建以下组件:

  • ProductList.vue:用于展示商品列表
  • ProductForm.vue:用于添加和编辑商品
  • ProductItem.vue:用于展示单个商品

配置路由

在src目录下创建一个名为"router"的文件夹,并在其中创建一个名为"index.js"的文件。在该文件中配置路由:

import Vue from 'vue'
import VueRouter from 'vue-router'
import ProductList from '../components/ProductList.vue'
import ProductForm from '../components/ProductForm.vue'

Vue.use(VueRouter)

const routes = [
  { path: '/', component: ProductList },
  { path: '/add', component: ProductForm },
  { path: '/edit/:id', component: ProductForm }
]

const router = new VueRouter({
  mode: 'history',
  routes
})

export default router

创建API服务

在src目录下创建一个名为"services"的文件夹,并在其中创建一个名为"productService.js"的文件。在该文件中定义与后端API的交互:

import axios from 'axios'

const apiClient = axios.create({
  baseURL: '/api/products',
  headers: {
    'Content-Type': 'application/json'
  }
})

export default {
  getAllProducts() {
    return apiClient.get()
  },

  addProduct(product) {
    return apiClient.post('', product)
  },

  updateProduct(id, product) {
    return apiClient.put(`/${id}`, product)
  },

  deleteProduct(id) {
    return apiClient.delete(`/${id}`)
  }
}

编写组件代码

打开ProductList.vue文件,并编写以下代码:

<template>
  <div>
    <h1>商品列表</h1>
    <router-link to="/add" class="btn btn-primary">添加商品</router-link>
    <table class="table">
      <thead>
        <tr>
          <th>ID</th>
          <th>名称</th>
          <th>价格</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="product in products" :key="product.id">
          <td>{{ product.id }}</td>
          <td>{{ product.name }}</td>
          <td>{{ product.price }}</td>
          <td>
            <router-link :to="`/edit/${product.id}`" class="btn btn-primary">编辑</router-link>
            <button @click="deleteProduct(product.id)" class="btn btn-danger">删除</button>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
import productService from '../services/productService'

export default {
  data() {
    return {
      products: []
    }
  },
  methods: {
    deleteProduct(id) {
      if (confirm('确定要删除该商品吗?')) {
        productService.deleteProduct(id)
          .then(() => {
            this.getAllProducts()
          })
          .catch(error => {
            console.log(error)
          })
      }
    },
    getAllProducts() {
      productService.getAllProducts()
        .then(response => {
          this.products = response.data
        })
        .catch(error => {
          console.log(error)
        })
    }
  },
  mounted() {
    this.getAllProducts()
  }
}
</script>

类似地,编写ProductForm.vue和ProductItem.vue组件的代码。

配置入口文件

打开main.js文件,并添加以下代码:

import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

运行前端项目

在命令行中执行以下命令,启动前端项目:

npm run serve

前端项目将在默认端口(如8081)上启动。

测试

现在,打开浏览器并访问http://localhost:8081,你将看到一个简单的商品管理界面。你可以添加、编辑和删除商品,并查看商品列表。

结论

通过结合Spring Boot和Vue,我们成功地实现了一个简单的商品管理系统。这个系统具有良好的用户界面和用户体验,并且能够与后端进行数据交互。你可以根据实际需求对其进行扩展和优化。

以上是关于Spring Boot + Vue的网上商城之商品管理的详细介绍和代码案例。希望对你有所帮助!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring BootVue 是两个流行的开发框架,它们可以很好地结合起来进行权限管理。Spring Boot 是一个用于开发 Java 应用的框架,它提供了一些很好的安全性和权限管理的功能。而 Vue 是一个用于构建用户界面的 JavaScript 框架,它可以很方便地与后端Spring Boot 结合起来进行权限管理。 在使用 Spring BootVue 进行权限管理时,可以借助 Spring Security 这个强大的安全框架来进行用户认证和授权。Spring Security 提供了很多内置的功能,如用户登录、角色管理、权限控制等,可以很方便地进行配置和使用。同时,Vue 可以通过发送请求到后端Spring Boot 服务来获取用户信息和权限信息,并根据这些信息来进行页面的权限控制。 在前后端权限管理方面,可以使用 JWT(Json Web Token)来实现用户认证和授权。后端Spring Boot 可以生成 JWT Token 并返回给前端,前端可以在接收到 Token 后存储起来,并在每次请求时带上 Token,后端可以验证 Token 的有效性,并根据用户的权限来做出相应的响应。 总的来说,使用 Spring BootVue 进行权限管理需要后端和前端的配合,后端提供安全认证和授权的功能,前端根据后端返回的信息进行权限控制。同时,可通过 JWT 来实现跨域认证和授权。 Spring BootVue 都提供了很多现成的工具和库,可以很方便地实现权限管理的功能,开发人员只需按照官方文档进行配置和使用即可。因此,Spring BootVue 是一个很好的组合,用于权限管理的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹山全栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值