美文网首页
前后端分离开发

前后端分离开发

作者: 朱芮林 | 来源:发表于2019-03-15 14:32 被阅读0次

1.根据需求,分析数据库、建库、建表、准备数据


8.png 9.png

2.建立web模块 webapp类型的maven项目


1.png 2.png

maven默认路径要与实际路径一致,否则添加依赖时会出现错误


3.png 4.png

3.手动创建是src{(蓝)、resource(橙)、test(绿)目录


图例

4.建立package,entity dao service controller


图例

5.pom依赖 : web模块依赖 webmvc模块依赖 jackson相关依赖

<jackson.version>2.9.8</jackson.version>
<jackson-mapper.version>1.9.13</jackson-mapper.version>

 <!--spring-web依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--spring-webmvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
 <!--jackson相关依赖-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>${jackson-mapper.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5-20081211</version>
    </dependency>

6.entity实体类


entity

7.dao接口,增加自定义的复杂关联查询(注解)


dao

8.service接口,注入dao,调用相应方法


service

9.用JUnit对service做单元测试
10.controller,使用RESTful风格请求,完成控制层


13.png

11.用postman对controller进行测试,杜绝一切404,500

github具体代码
web.xml也需调试代码

tomcat配制

选中Module按F4


14.png 15.png

将Name改为web。


16.png 17.png 18.png 19.png 20.png

运行test,然后打开postman


21.png

运行结果在下方。

调试前端:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Vue.js-访问API接口数据-蓝墨云班课练习</title>
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <!-- 通过CDN引入Vue.js -->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <!-- 通过CDN引入axios -->
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <style type="text/css">
            body {
                background-color: white;
            }
            .top {
                width: 80%;
                margin: 0 auto;
                display: flex;
                justify-content: space-between;
            }
            hr{
                width: 80%;
                color: #efefef;
            }
            .container {
                width: 80%;
                margin: 0 auto;
                display: flex;
                flex-wrap: wrap;
                padding-left: 20px;
                padding-top: 10px;
                
            }
            .container2 {
                width: 80%;
                margin: 0 auto;
                display: flex;
                flex-wrap: wrap;
                padding-left: 20px;
                padding-top: 10px;
                
            }
            .card {
                width: 190px;
                display: flex;
                flex-direction: column;
                border: 1px solid #eee;
                margin-right: 20px;
                margin-bottom: 10px;
                background-color: #fff;
                justify-content: center;
                padding-left: 5px;
                padding-right: 5px;
                padding-top: 5px;
                border-radius: 20px;
            }
            .card img {
                width: 100%;
            }
            p {
                font-size: 12px;
                margin-bottom: 5px;
            }
            .teacher {
                display: flex;
                justify-content: space-between;
            }
            .left {
                display: flex;
            }
            .avatar img {
                width: 30px;
                height: 30px;
                border-radius: 50%;
                margin-right: 5px;
            }
            .code {
                color: #00BBDD;
                margin-top: 5px;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <div class="top">
                <p>进行中的班课</p>
                <p>{{courses.length}}个进行中的班课</p>
            </div>
            <hr>
            <div class="container">
                <div class="card" v-for="(course, index) in courses" :key="index">
                    <div class="cover">
                        <img :src="'img/'+course.cover">
                    </div>
                    <div class="course-class">
                        <p>{{course.courseClass}}</p>
                    </div>
                    <div class="course-name">
                        <p>{{course.courseName}}</p>
                    </div>
                    <div class="teacher">
                        <div class="left">
                            <div class="avatar">
                                <img :src="'img/'+course.avatar">
                            </div>
                            <div class="username">
                                <p class="code">{{course.username}}</p>
                            </div>
                        </div>
                        <div class="course-code">
                            <p class="code" v-if="loginUserId === course.userId">{{course.courseCode}}</p>
                        </div>
                    </div>
                </div>

            </div>
            
        </div>
        <script type="text/javascript">
            var app = new Vue({
                el: '#app',
                data: {
                    loginUserId: 1,
                    courses: []
                },
                created: function() {
                    var _this = this;
                    axios.get('http://127.0.0.1:8080/web/courses')
                        .then(function(response) {
                            console.log(response.data);
                            _this.courses = response.data;
                        })
                }
            })
        </script>
    </body>
</html>

效果如图:


最终结果

这是一个动态结果 在数据库中修改数据可以直接反应到前端。

相关文章

  • 前端如何高效的与后端协作开发

    前端如何高效的与后端协作开发 1. 前后端分离 前端与后端的分离,能使前端的开发脱离后端的开发模式,拥有更大的自由...

  • Vue基础

    相关概念 混合开发和前后端分离 混合开发(服务器端渲染) 前后端分离后端提供接口,前端开发界面效果(专注于用户的交...

  • 《十次方》01、需求分析

    需求分析 首先,该项目工程采用的是前后端分离的开发形式。为什么要采用前后端分离的开发形式呢? 前后端分离的优点和必...

  • 前后端分离的优缺点和restful api

    前后端分离优缺点 为什么要前后端分离 pc、app、pad多端适应 SPA开发模式开始流行 前后端开发职责不清 开...

  • WEB开发中前后端分离的好处与区别

    什么是前后端分离 程序开发的时候,前后端开发以数据为交互导向的开发方式,同时也是一种架构方式。 前后端分离的好处 ...

  • 前后端分离开发

    含义 前后端分离开发顾名思义,就是将前端后端分离可以同时进行开发.前端就只管前端的事,后端就只管后端的事,比起传统...

  • 小程序开发心得

    通过三周的时间,经历了一次完整的前后端分离的开发过程,下面说说我对小程序新的理解和一些前后端分离的看法。 开发前准...

  • ibase2.0规范文档-01:OpenAPI在eclipse的

    前后端分离的契约(http接口文档) 在做前后端分离开发时,后端开发的服务需要有帮助说明。目前我们选用的是apid...

  • 深入解析Vue CLI 3.0脚手架如何mock数据

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的...

  • 详解Vue CLI 3.0脚手架如何mock数据

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的...

网友评论

      本文标题:前后端分离开发

      本文链接:https://www.haomeiwen.com/subject/jtrxmqtx.html