springboot vue完成编辑页面发送接口请求功能

yizhihongxing
  1. 准备工作
    首先,需要准备好以下环境和工具:

  2. JDK 1.8及以上版本

  3. Maven
  4. Node.js
  5. Vue CLI:可以通过npm安装:npm install -g vue-cli

  6. 创建项目
    使用Vue CLI来创建一个基础的Vue.js项目:

vue init webpack vue-project

执行上述命令会创建一个名为“vue-project”的Vue.js项目。完成后,进入项目的根目录,通过命令行方式启动服务:

npm run dev
  1. 编写前端页面
    在“vue-project”的src目录下新建一个“views”目录,在该目录下新建一个“edit.vue”文件。编写前端编辑页面的代码。
<template>
  <div>
    <div>
      <label>标题:</label>
      <input type="text" v-model="title" placeholder="请输入标题"/>
    </div>
    <div>
      <label>内容:</label>
      <textarea v-model="content" placeholder="请输入内容"></textarea>
    </div>
    <div>
      <button @click="submit">提交</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: '',
      content: ''
    }
  },
  methods: {
    submit() {
      let params = {
        title: this.title,
        content: this.content
      }
      this.$http.post('/api/save', params).then(res => {
        console.log(res.data);
      });
    }
  }
}
</script>
  1. 编写后端接口
    使用Spring Boot框架来编写后端接口。在Spring Boot项目中引入以下依赖:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.7</version>
</dependency>

在Spring Boot项目中编写一个Controller来处理请求:

@RestController
@RequestMapping("/api")
public class ApiController {
  @PostMapping("/save")
  public String save(@RequestBody Map<String, String> params) {
    String title = params.get("title");
    String content = params.get("content");
    // TODO:保存数据到数据库
    return "保存成功";
  }
}
  1. 配置跨域访问
    由于前后端分离,前端代码会跑在不同的端口上,因此需要配置跨域访问。在Spring Boot的启动类上添加如下配置:
@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  @Bean
  public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
          .allowedOrigins("*")
          .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
          .allowedHeaders("*");
      }
    };
  }
}
  1. 启动应用程序
    在命令行中,进入Spring Boot项目的根目录,执行以下命令:
mvn clean package

执行以上命令会编译打包程序,完成后,通过以下命令启动程序:

java -jar target/{project_name}.jar

其中{project_name}为项目的名称。

  1. 测试
    在浏览器中访问http://localhost:8080/,即可访问前端页面,尝试在前端页面中输入内容,点击“提交”按钮,发送POST请求到后端,后端会返回一个“保存成功”的字符串,表示数据保存完成。

示例1:使用session来模拟数据保存。
下面的示例中,仅在后端使用session模拟了一个简单的保存流程,用于说明整个系统的工作流程。

@RestController
@RequestMapping("/api")
public class ApiController {
  @Autowired
  private HttpSession httpSession;

  @PostMapping("/save")
  public String save(@RequestBody Map<String, String> params) {
    String title = params.get("title");
    String content = params.get("content");
    // TODO:保存数据到数据库
    httpSession.setAttribute("title", title);
    httpSession.setAttribute("content", content);
    return "保存成功";
  }

  @GetMapping("/get")
  public Map<String, String> get() {
    Map<String, String> result = new HashMap<>();
    result.put("title", (String) httpSession.getAttribute("title"));
    result.put("content", (String) httpSession.getAttribute("content"));
    return result;
  }
}

示例2:使用Spring Data JPA来保存数据。
下面的示例中,使用了Spring Data JPA来将数据保存到Mysql数据库。

<!-- pom.xml -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>
// application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
// Post.java
@Entity
public class Post {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String title;
  private String content;

  // 省略Getter/Setter

  public Post(String title, String content) {
    this.title = title;
    this.content = content;
  }
}
// PostRepository.java
public interface PostRepository extends CrudRepository<Post, Long> {
}
// ApiController.java
@RestController
@RequestMapping("/api")
public class ApiController {
  @Autowired
  private PostRepository postRepository;

  @PostMapping("/save")
  public String save(@RequestBody Map<String, String> params) {
    String title = params.get("title");
    String content = params.get("content");
    Post post = new Post(title, content);
    postRepository.save(post);
    return "保存成功";
  }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot vue完成编辑页面发送接口请求功能 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue实现水波涟漪效果的点击反馈指令

    Vue 是一个流行的现代 JavaScript 框架,它提供了丰富的动画和效果特性,其中之一就是在用户点击元素时显示水波涟漪效果。本攻略将介绍如何在 Vue 中实现这一效果。 步骤一:安装依赖 要实现水波涟漪效果,我们需要使用一个名为 Vuetify 的 UI 框架,它已经包含了这一特性。因此,安装 Vuetify 是必要的。 首先,我们需要安装 Vueti…

    Vue 2023年5月28日
    00
  • 详解Vue中一种简易路由传参办法

    当我们使用Vue进行开发时,经常需要进行路由跳转和传参。路由传参可以方便我们在不同页面之间传递数据,实现页面之间的交互和通讯。本文将介绍一种简易的Vue路由传参方法,仅需使用Vue的内置方法即可实现。 一、Vue内置方法$router.push() Vue内置了一个$router方法,可以用于进行路由跳转。在进行页面跳转的时候,我们可以利用这个方法进行路由参…

    Vue 2023年5月27日
    00
  • TSX常见简单入门用法之Vue3+Vite

    TSX是指将JSX语法与Typescript结合起来使用的技术。TSX通常用于开发React和Vue等现代Web框架。下面我将详细讲解如何使用TSX开发Vue3项目,基于Vite打包工具。整个过程包含以下几步: 安装所需依赖 在开始使用TSX开发Vue3之前,我们需要安装相关的依赖包。在我们的项目中先安装vue和@vue/compiler-sfc两个依赖。 …

    Vue 2023年5月28日
    00
  • 浅谈Vue的双向绑定和单向数据流冲突吗

    浅谈Vue的双向绑定和单向数据流冲突吗 双向绑定 Vue中的双向绑定是指数据的变化可以同时影响到视图和模型,即视图上的数据变化可以同步到模型中,模型中的数据变化也可以同步到视图中。双向绑定可以双方互相通讯,使得开发者更加方便地处理数据和界面。 双向绑定的实现原理是借助了 Object.defineProperty() 方法,将 data 中的数据属性由原本的…

    Vue 2023年5月27日
    00
  • vue axios基于常见业务场景的二次封装的实现

    为了更好地在Vue项目中使用axios库,我们可以通过二次封装的方式对axios进行自定义处理,使其更加符合我们项目的实际需求。下面是基于常见业务场景的二次封装步骤及示例说明: 一、安装axios和qs 在使用axios之前,我们需要安装axios和qs两个依赖。axios是一种基于Promise的HTTP客户端,可以用于浏览器和node.js。而qs是一个…

    Vue 2023年5月27日
    00
  • 详解iOS App中调用AVAudioPlayer播放音频文件的用法

    详解iOS App中调用AVAudioPlayer播放音频文件的用法 在iOS应用中,我们经常需要用到播放音频文件的功能。AVAudioPlayer是iOS中一个非常好用的播放音频文件的类,提供了一系列播放、管理音频、控制播放速率和音量等方法,使得我们能够非常方便的实现音频处理的功能。 1.准备工作 在使用AVAudioPlayer播放音频文件前,需要完成如…

    Vue 2023年5月28日
    00
  • 带你一文了解Vue生命周期钩子

    带你一文了解Vue生命周期钩子 Vue生命周期钩子是指Vue在组件实例化、数据更新、渲染页面等不同阶段执行的方法。这些钩子函数对于理解Vue的生命周期非常重要,因为他们使得我们有机会在特定时间节点执行自己的代码。 Vue生命周期的三个阶段 Vue的生命周期可以分为三个主要的阶段: 创建阶段(Creation):在这个阶段Vue实例化组件、设置数据观测、初始化…

    Vue 2023年5月27日
    00
  • 理解Proxy及使用Proxy实现vue数据双向绑定操作

    理解 Proxy 在 JavaScript 中,对象是一种引用类型,对象的属性只是指向变量的一个指针。因为这个特性,我们可以获得代理模式的能力:在对象创建之后,可以创建一个代理来控制对象的访问或操作。 Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。这样,我们可以在读取或修改对象属性时插入其他逻辑,例如数据绑定。 在使用 …

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