热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前后端分离初体验二:后端环境搭建+数据交互

上一篇:前后端分离初体验一:前端环境搭建 参考:https:www.bilibili.comvideoBV137411B7vBB站UP:楠哥教你学Java 框架:vue+sprin

上一篇:前后端分离初体验一:前端环境搭建

 

参考:https://www.bilibili.com/video/BV137411B7vB

B站UP:楠哥教你学Java

 

框架:vue + springboot

 

项目已上传至GitHub:

 

  前端:https://github.com/ownzyuan/vuetest_01

 

  后端:https://github.com/ownzyuan/springboot_vue_test_01/tree/master

 

 

后端

创建SpringBoot项目

  为方便测试,使用了 jpa 和 lombok

前后端分离初体验二:后端环境搭建+数据交互

 

配置application.yml

spring:
   datasource:
     #注意使用时区
     url: jdbc:mysql://localhost:3306/test?serverTimezOne=UTC&useUnicode=true&characterEncoding=UTF-8
     username: root
     password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver
   jpa:
     #打印Sql到控制台
     show-sql: true
     properties:
       hibernate:
         #format_sql:格式化打印出来的sql,不会一行全显示
         format_sql: true
 server:
   port: 8181

 

导入数据库+实体类

前后端分离初体验二:后端环境搭建+数据交互

 

Book

package com.zy.entity;
 ​
 import lombok.Data;
 ​
 import javax.persistence.Entity;
 import javax.persistence.Id;
 ​
 @Entity
 @Data
 public class Book {
 ​
     //指定id为主键
     @Id
     private Integer id;
     private String name;
     private String author;
 ​
 }

 

测试操作数据库

repository / BookRepository

  继承 JpaRepository, 其中泛型 ,Book是实体类,Integer是主键类型

package com.zy.repository;
 ​
 import com.zy.entity.Book;
 import org.springframework.data.jpa.repository.JpaRepository;
 ​
 public interface BookRepository extends JpaRepository {
 }

 

测试 

package com.zy.repository;
 ​
 import com.zy.entity.Book;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 ​
 import java.util.List;
 ​
 import static org.junit.jupiter.api.Assertions.*;
 @SpringBootTest
 class BookRepositoryTest {
 ​
     @Autowired
     private BookRepository bookRepository;
 ​
     @Test
     void testBook(){
         List bookList = bookRepository.findAll();
         bookList.forEach(System.out::println);
     }
 ​
 }

前后端分离初体验二:后端环境搭建+数据交互

 

输出到页面上

package com.zy.controller;
 ​
 import com.zy.entity.Book;
 import com.zy.repository.BookRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 ​
 import java.util.List;
 ​
 @ResponseBody
 @Controller
 @RequestMapping("/book")
 public class BookHandler {
 ​
     @Autowired
     private BookRepository bookRepository;
 ​
     @GetMapping("/findAll")
     public List findAll(){
         List bookList = bookRepository.findAll();
         return bookList;
     }
 }

前后端分离初体验二:后端环境搭建+数据交互

交互

1.前端:axios

  基于promise用于浏览器和node.js的http客户端

特点

  • 自动转换JSON数据

  • 支持浏览器和node.js

  • 支持promise

  • 能拦截请求和响应

  • 能转换请求和响应数据

  • 能取消请求

  • 浏览器端支持防止CSRF(跨站请求伪造)

 

安装 axios

  Terminal 中输入 vue add axios

安装完成

前后端分离初体验二:后端环境搭建+数据交互

 

2.后端:配置WebMvcConfig

package com.zy.config;
 ​
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 ​
 @Configuration
 public class CrosConfig implements WebMvcConfigurer {
     
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
                 .allowedOrigins("*")
                 .allowedMethods("GET","HEAD","POST","DELETE","OPTIONS")
                 .allowCredentials(true)
                 .maxAge(3600)
                 .allowedHeaders("*");
     }
     
 }

addCorsMappings 会与之后的拦截器发生冲突,但用于测试暂时使用

 

3.前端:配置Book.vue

created

  初始化操作,每当页面被加载,就会使用里面的方法

get( Url )

  请求类型,括号中写对应url

then()

  回调,括号中可以写方法

<template>
     <div>
         <table>
             <tr>
                 <td>编号td>
                 <td>书名td>
                 <td>作者td>
             tr>
             
             <tr v-for="item in books">
                 <td>{{item.id}}td>
                 <td>{{item.name}}td>
                 <td>{{item.author}}td>
             tr>
         table>
     div>
 template><script>
     export default {
         name: "Book",
 ​
         data() {
             return {
                 msg: 'Hello',
                 books: []
             }
         },
         //初始化操作,每当页面被加载,就会使用里面的方法
         created(){
             //get(Url):请求类型,括号中写对应url  then():回调,括号中可以写方法
             axios.get('http://localhost:8181/book/findAll').then(function (resp) {
                 console.log(resp)
             })
         }
 ​
     }
 script><style scoped>style>

 

4.同时启动测试

resp中已经能获得后端给的数据了

说明交互已经成功,就差输出到页面上

前后端分离初体验二:后端环境搭建+数据交互

 

5.数据输出到前端页面上

改进Book.vue

created() {
     axios.get('http://localhost:8181/book/findAll/').then(function (resp) {
         this.books = resp.data;
     })
 }

 

测试:books未定义

  因为这个this是在回调中的this,所以无法指向上面的books

前后端分离初体验二:后端环境搭建+数据交互

自定义this

created(){
     const _this = this;
     axios.get('http://localhost:8181/book/findAll').then(function (resp) {
         _this.books = resp.data;
     })
 }

前后端分离初体验二:后端环境搭建+数据交互

成功输出到页面上

 


推荐阅读
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
author-avatar
Gvyi_262
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有