zoukankan      html  css  js  c++  java
  • SSM+ElementUI综合练习

    前后端分离介绍

    前后端分离web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web应用进行分离部署前后端之前使用HTTP或者其他协议进行交互请求。

    两个服务器 

    1搭建模块化

    1.1、 basic-uitl

    作为各项目的公共工具的抽取

    PageListtotal,rows

    AjaxResult:success,message

    1.2、 basic-core

    作为各项目的公共的抽取,依赖basic-utils模块

    BaseDomain

    BaseService

    BaseMapper

    BaseQuery

    1.3、 crm-common

    crm-common本模块作为一个项目三层的公共部分的抽取,依赖basic-core

    domain:

    query:

    1.4、 crm-mapper

    crm-dao本模块作为一个项目持久层,依赖crm-common和basic-core:

    包含mapper接口和映射;和持久层的配置

    1.5、 crm-service

    crm-service本模块作为一个项目业务层,依赖crm-mapper

    业务

    1.6、 crm-web-mavenweb项目

    crm-service本模块作为一个项目表现层,依赖crm-service

    Controller

    而现在我们的整体架构为前后端分离架构,所有的静态资源全部在前端项目中

    2

    2、 前后端分离后台实现-Crud

    接口就是提供数据东西.最简单实现接口的方式就是springmvc中controller,是通过restful协议暴露,通过json作为数据传输格式.

    restfull就是就是http协议的扩展,是以资源为核心,通过url定位资源,通过不同请求方式表示操作.(PUT-add,POST-update,DELET-del,GET-获取或查询,PATCH,HEAD,OPTION)

    package cn.itsource.crm.web.controller;
    
    import cn.itsource.AjaxResult;
    import cn.itsource.crm.domian.Department;
    import cn.itsource.crm.service.IDepartmentService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @Controller
    @RequestMapping("/dept")
    public class DepartmentCroller {
        @Autowired
        private IDepartmentService departmentService;
    
        /*@RequestMapping("/list")
        @ResponseBody
        public AjaxResult findall(){
            try {
                List<Department> list = departmentService.findAll();
                System.out.println("list"+list);
    
            } catch (Exception e) {
                return AjaxResult.getAjxRt().setMesg("失败").setSuccess(false);
            }
            return new AjaxResult();
        }*/
    
        //创建员工接口:url 参数,返回值
        //@RequestBody 在请求主体里面传递过,前端要传递json就用这种方式
        @RequestMapping(method = RequestMethod.PUT)
        @ResponseBody
        public AjaxResult add(@RequestBody Department department)
        {
            System.out.println("添加成功");
            return AjaxResult.getAjxRt();
        }
    
        //删除接口:url 参数,返回值
        // 前台传递del /employee/1
        @RequestMapping(value = "{id}",method = RequestMethod.DELETE)
        @ResponseBody
        public AjaxResult del(@PathVariable("id")Long id){
            System.out.println("删除成功"+id);
            return AjaxResult.getAjxRt();
        }
        //删除接口:url 参数,返回值
        // 前台传递del /employee/1
        @RequestMapping(value = "{id}",method = RequestMethod.POST)
        @ResponseBody
        public AjaxResult update(@PathVariable("id")Long id,@RequestBody Department department){
            System.out.println("修改成功"+id+department);
            return AjaxResult.getAjxRt();
        }
    
        //查询一个
        @ResponseBody
        @RequestMapping(value = "{id}",method = RequestMethod.GET)
        public  AjaxResult getById(@PathVariable("id") Long id){
            System.out.println("--------"+id);
            try {
                Department department = departmentService.loadById(id);
                System.out.println(department);
                System.out.println(AjaxResult.getAjxRt());
            } catch (Exception e) {
                e.printStackTrace();
                return AjaxResult.getAjxRt().setMesg("操作失败").setSuccess(false);
            }
            return  AjaxResult.getAjxRt();
        }
    
    
        //查询所有
        @ResponseBody
        @RequestMapping(method = RequestMethod.PATCH)
        public  List<Department> list(){
            List<Department> list = departmentService.findAll();
            for (Department department : list) {
                System.out.println("我是部门"+department);
            }
            return list;
        }
    
    
    //    // 高级查询
    //    @ResponseBody
    //    @RequestMapping(method = RequestMethod.GET)
    //    public PageList<Department> query(@RequestBody DepartmentQuery query){
    //        return new PageList<>();
    //    }
    
    }

    3.postman模拟前台发送restfull请求

    4、 接口规范swagger

    1.1、 为什么需要

    1) 接口测试人员要通过接口描述测试接口 黑盒测试

    2) 前端开发人员要通过接口描述使用接口.

    怎么描述?????

    1) 写接口doc文档

           直接罗列所有接口,每个接口有访问地址(访问方式),参数及返回值.

    2) 可以直接通过后端代码产生能够让前台开发或测试人员能够看懂就ok---swagger文档 json,yml,页面展示 采纳

    5.1、 swaggerAPI文档导入EasyMock

    (1)将我们的SwaggerAPI文档扩展名改为yml

        http://localhost/v2/api-docs  改为json

    2)在easyMock中点击“设置”选项卡

    3)SwaggerDocs API 选择Upload

    6、 前后端分离前台实现-crud

    1、 vue-element-admin

    1.1、 介绍

    vue-element-admin 是一个后台前端解决方案,它基于 vue-cli  element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。

    本项目的定位是后台集成方案,不太适合当基础模板来进行二次开发。因为本项目集成了很多你可能用不到的功能,会造成不少的代码冗余。如果你的项目不关注这方面的问题,也可以直接基于它进行二次开发。

    集成方案: vue-element-admin

    基础模板: vue-admin-template

    桌面终端: electron-vue-admin

    1.2、 安装

    1.2.1、 下载模板源代码

    Github地址:

    https://github.com/PanJiaChen/vue-element-admin

    我们直接使用今天resources目录中已经下载好模板

    1.2.2、 解压,启动项目

    npm install

    npm run dev

    做点小改

     

  • 相关阅读:
    iOS"伪后台"机制下如何保持APP一直运行在后台(转)(实践通过)
    weak和strong
    iOS webview 清除缓存
    iOS隐藏状态栏
    IOS 在一个应用里打开另一个应用 及其 两个应用互相调用
    ios 检查ios设备是否安装了qq,微信等应用
    【干货篇】步步为营,带你轻松掌握jQuery!
    【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass
    JS中有关分支结构、循环结构以及函数应用的一些简单练习
    万物皆对象的JavaScript
  • 原文地址:https://www.cnblogs.com/13438145925xiaozheng/p/11421567.html
Copyright © 2011-2022 走看看