需求:读取数据库的数据展现到前端页面

技术栈:后端有主要有SpringBoot,lombok,SpringData JPA,Swagger,跨域,前端有Vue和axios

不了解这些技术的可以去入门一下

lombok入门

swagger入门

SpringData JPA入门

配置:mysql 8.0.11,IntelliJ IDEA 2017.1.2,HBuilderX 1.9.3

首先创建一个Spring Boot项目,目录结构如下:

在pom.xml中加入如下依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-devtools</artifactId>
  9. <scope>runtime</scope>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.projectlombok</groupId>
  13. <artifactId>lombok</artifactId>
  14. <optional>true</optional>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-test</artifactId>
  19. <scope>test</scope>
  20. </dependency>
  21. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  22. <dependency>
  23. <groupId>mysql</groupId>
  24. <artifactId>mysql-connector-java</artifactId>
  25. <version>8.0.11</version>
  26. </dependency>
  27. <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-data-jpa</artifactId>
  31. <version>2.1.4.RELEASE</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>io.springfox</groupId>
  35. <artifactId>springfox-swagger2</artifactId>
  36. <version>2.7.0</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>io.springfox</groupId>
  40. <artifactId>springfox-swagger-ui</artifactId>
  41. <version>2.7.0</version>
  42. </dependency>
  43. </dependencies>

application.properties配置

  1. #端口
  2. server.port=8888
  3. #连接数据库的配置
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. spring.datasource.password=Panbing936@
  6. spring.datasource.username=root
  7. spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
  8. #SpringData JPA的配置
  9. spring.jpa.hibernate.ddl-auto=update
  10. spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect

实体类User.java

  1. @Entity
  2. @Data
  3. public class User{
  4. @Id
  5. @GeneratedValue(strategy = GenerationType.AUTO)
  6. private Integer id;
  7. @Column(length = 55)
  8. private String name;
  9. private String avatarURL;
  10. }

接口UserMapper.java继承JpaRepository

  1. public interface UserMapper extends JpaRepository<User,Integer> {
  2. }

Controller.java

  1. @RestController
  2. @RequestMapping(value = "/api",produces = APPLICATION_JSON_VALUE)
  3. @Api(description = "用户管理")
  4. public class UserController {
  5. @Autowired
  6. private UserMapper userMapper;
  7. @ApiOperation(value = "用户列表",notes = "查寻所有已注册过的用户信息")
  8. @RequestMapping(value = "getAll",method = RequestMethod.GET)
  9. public List<User> getAll()
  10. {
  11. return userMapper.findAll();
  12. }
  13. }

SwaggerConfig.java

  1. @Configuration
  2. @EnableSwagger2
  3. public class SwaggerConfig {
  4. @Bean
  5. public Docket createRestApi() {
  6. return new Docket(DocumentationType.SWAGGER_2)
  7. .apiInfo(apiInfo())
  8. .select()
  9. .apis(RequestHandlerSelectors.basePackage("cn.niit.controller"))
  10. .paths(PathSelectors.any())
  11. .build();
  12. }
  13. private ApiInfo apiInfo() {
  14. return new ApiInfoBuilder()
  15. .title("Spring Boot中使用Swagger2实现前后端分离开发")
  16. .description("此项目只是练习如何实现前后端分离开发的小Demo")
  17. .termsOfServiceUrl("https://www.jianshu.com/u/2f60beddf923")
  18. .contact("WEN")
  19. .version("1.0")
  20. .build();
  21. }
  22. }

WebConfig.java是实现跨域的配置,务必记得


  1. @Configuration
  2. class WebMvcConfigurer extends WebMvcConfigurerAdapter {
  3. //跨域配置
  4. @Bean
  5. public WebMvcConfigurer corsConfigurer() {
  6. return new WebMvcConfigurer() {
  7. @Override
  8. //重写父类提供的跨域请求处理的接口
  9. public void addCorsMappings(CorsRegistry registry) {
  10. //添加映射路径
  11. registry.addMapping("/**")
  12. //放行哪些原始域
  13. .allowedOrigins("*")
  14. //是否发送Cookie信息
  15. .allowCredentials(true)
  16. //放行哪些原始域(请求方式)
  17. .allowedMethods("GET", "POST", "PUT", "DELETE")
  18. //放行哪些原始域(头部信息)
  19. .allowedHeaders("*")
  20. //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
  21. .exposedHeaders("Header1", "Header2");
  22. }
  23. };
  24. }
  25. }

点击localhost:8888/swagger-ui.html查看生成的接口文档,测试一下



返回数据没有问题,接着可以根据文档开发前端代码了

用HBuilderX新建一个test.html页面,具体代码如下

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Vue.js-访问API接口数据-蓝墨云班课练习</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <!-- 通过CDN引入Vue.js -->
  9. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  10. <!-- 通过CDN引入axios -->
  11. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  12. <style type="text/css">
  13. .container{
  14. display: flex;
  15. flex-direction: column;
  16. }
  17. .card{
  18. display: flex;
  19. margin-bottom: 10px;
  20. }
  21. .cover{
  22. width: 100px;
  23. height: 100px;
  24. }
  25. .cover img{
  26. width: 100%;
  27. height: 100%;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div id="app">
  33. <div class="top">
  34. <p>{{users.length}}个人在线</p>
  35. </div>
  36. <hr>
  37. <div class="container">
  38. <div class="card" v-for="user in users">
  39. <div class="cover">
  40. <img :src="'img/'+user.avatarURL">
  41. </div>
  42. <div class="">
  43. <p>{{user.id}}</p>
  44. </div>
  45. <div class="">
  46. <p>{{user.name}}</p>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. <script type="text/javascript">
  52. var app = new Vue({
  53. el: '#app',
  54. data: {
  55. users: []
  56. },
  57. created: function() {
  58. var _this = this;
  59. axios.get('http://localhost:8888/api/getAll')
  60. .then(function(response) {
  61. _this.users = response.data;
  62. })
  63. }
  64. })
  65. </script>
  66. </body>
  67. </html>

目录结构和运行结果如下

完美收官!!!!!!!

github代码

个人网站

SpringBoot,Vue前后端分离开发首秀的更多相关文章

  1. beego-vue URL重定向(beego和vue前后端分离开发,beego承载vue前端分离页面部署)

    具体过程就不说,是搞这个的自然会动,只把关键代码贴出来. beego和vue前后端分离开发,beego承载vue前端分离页面部署 // landv.cnblogs.com //没有授权转载我的内容,再 ...

  2. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题

    原文链接:https://segmentfault.com/a/1190000012879279 当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异.笔者前几天刚好在负责一个项目的权限管理 ...

  3. Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案

    因为我们做的是前后端分离项目 无法采用response.write直接将文件流写出 我们采用阿里云oss 进行保存 再返回的结果对象里面保存我们的文件地址 废话不多说,上代码 Springboot 第 ...

  4. Jeecg-Boot 2.0 版本发布,基于Springboot+Vue 前后端分离快速开发平台

    目录 Jeecg-Boot项目简介 源码下载 升级日志 Issues解决 v1.1升级到v2.0不兼容地方 系统截图 Jeecg-Boot项目简介 Jeecg-boot 是一款基于代码生成器的智能开发 ...

  5. Spring Boot + Vue 前后端分离开发,权限管理的一点思路

    在传统的前后端不分的开发中,权限管理主要通过过滤器或者拦截器来进行(权限管理框架本身也是通过过滤器来实现功能),如果用户不具备某一个角色或者某一个权限,则无法访问某一个页面. 但是在前后端分离中,页面 ...

  6. SpringBoot+Vue前后端分离项目,maven package自动打包整合

    起因:看过Dubbo管控台的都知道,人家是个前后端分离的项目,可是一条打包命令能让两个项目整合在一起,我早想这样玩玩了. 1. 建立个maven父项目 next 这个作为父工程,next Finish ...

  7. SpringBoot +Vue 前后端分离实例

    今天下了Vue,想试一试前后端分离的实现,没想到坑还不少,这里就记录一下我遇到的坑和我的代码: 一.Vue的下载安装:从网上找就好了,没什么问题,除了下载以后,要把镜像库改成淘宝的,要不然太慢了. 二 ...

  8. Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置

    前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个 ...

  9. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)

    当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异. 笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方 ...

随机推荐

  1. C# 简单反射实现winform左侧树形导航,右侧切换内容

    先看看效果: 核心代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syst ...

  2. WPF 内存泄漏优化经历

    最近公司有个CS客户端程序,有个登录界面,有个程序的主界面,程序支持注销功能,但是在注销后,客户端的内存一直以40M-50M的速度递增,因此猜测,应该是WPF程序出现了内存泄漏.下面主要记录优化内存泄 ...

  3. NPOI 操作笔记

    public static class ExcelUtil { // Methods public static DataTable GetDataTable(Stream stream) { HSS ...

  4. Django 实现第三方账号登录网站

    这里我们使用 django-allauth 模块来实现第三方账号验证登录,官方文档如下:https://django-allauth.readthedocs.io/en/latest/ . 安装 dj ...

  5. 「PKUSC2018」星际穿越(倍增)

    倍增好题啊! 我们我们预处理 \(f[x][i]\) 表示 \(x\) 点最左到达的端点,\(sum[x][i]\) 表示 \(x\) 点最左到达的端点时 \(f[x][i]\sim x\) 的答案, ...

  6. Flask中的before_request和after_request

    1.@app.before_request 在请求(request)之前做出响应 @app.before_request 也是一个装饰器,他所装饰的函数,都会在请求进入视图函数之前执行 2.@app. ...

  7. 【xsy2194】Philosopher set+线段树合并

    题目大意:给你一个长度为$n$的序列,有$m$次操作,每次操作是以下两种之一: 对某个区间内的数按照升序/降序排序,询问某个区间内数的积在十进制下首位数字是多少. 数据范围:$n,m≤2\times ...

  8. python 相关模块安装 国内镜像地址

    python 相关模块安装 国内镜像地址 pipy国内镜像目前有: http://pypi.douban.com/  豆瓣 http://pypi.hustunique.com/  华中理工大学 ht ...

  9. SQL Server 跨域访问

    # SQL Server 跨服务器访问数据 参考链接: [sp_addlinkedserver](https://msdn.microsoft.com/zh-cn/library/ms190479.a ...

  10. 公共技术点( View 绘制流程)

    转载地址:http://p.codekk.com/blogs/detail/54cfab086c4761e5001b253f 本文为 Android 开源项目源码解析 公共技术点中的 View 绘制流 ...