首页 > 其他分享 >Web项目中关于返回结果类和泛型以及vue中await的问题

Web项目中关于返回结果类和泛型以及vue中await的问题

时间:2023-02-23 20:26:16浏览次数:35  
标签:Web code return loginApi 类和泛 vue emp employee data

今天在学习web项目的时候发现需要自定义一个返回结果类用于处理前后端之间可能发生的各种情况。

public class R<T> {

    private Integer code; //编码:1成功,0和其它数字为失败

    private String msg; //错误信息

    private T data; //数据

    private Map map = new HashMap(); //动态数据

    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }

    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }

}

<T>代表一个未确定的类,也就是泛型。

R<T>代表R这个对象的类不确定,需要根据实例化时T的值才能确定。

其中,R的data属性由T进行定义。

关于泛型的静态方法需要在普通定义静态方法的语法基础上在前面多写一个泛型。


在研究前端html文件的时候发现下面一段代码

async handleLogin() {
  this.$refs.loginForm.validate(async (valid) => {
    if (valid) {
      this.loading = true
      let res = await loginApi(this.loginForm)
      if (String(res.code) === '1') {
        localStorage.setItem('userInfo',JSON.stringify(res.data))
        window.location.href= '/backend/index.html'
      } else {
        this.$message.error(res.msg)
        this.loading = false
      }
    }
  })
}

 发现res由loginApi赋值。而loginApi是由await修饰的,await只能在async中使用,可以在异步中实现同步。那么只有当loginApi函数执行完以后才会执行后面的语句。

function loginApi(data) {
  return $axios({
    'url': '/employee/login',
    'method': 'post',
    data
  })
}

 loginApi将this.loginform作为data发送至后端,后端的Controller根据url调用方法

public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) {
    //密码进行加密
    String password=employee.getPassword();
    password=DigestUtils.md5DigestAsHex(password.getBytes());
    //进入数据库按照用户名进行查询
    LambdaQueryWrapper<Employee> queryWrapper= new LambdaQueryWrapper<>();
    queryWrapper.eq(Employee::getUsername,employee.getUsername());
    Employee emp=employeeService.getOne(queryWrapper);
    //用户名查询不到
    if (emp==null){
        return R.error("登录失败");
    }
    //密码比对
    if (!emp.getPassword().equals(password)){
        return R.error("登录失败");
    }
    //查询员工状态
    if(emp.getStatus()==0){
        return R.error("账号已禁用");
    }
    request.getSession().setAttribute("employee",emp.getId());
    return R.success(emp);
}

 调用方法如果成功后返回R<Employee>,其中code赋值为1,所以在html文件中继续执行后面的语句对code进行判定。

 

 

 

 

 

 

 

标签:Web,code,return,loginApi,类和泛,vue,emp,employee,data
From: https://www.cnblogs.com/tarorat/p/17143456.html

相关文章

  • JAVAWEB-NOTE01-初识mysql
    目录JAVAWEB介绍数据库相关概念数据库数据库管理系统SQL常见的关系型数据库管理系统MySQL数据库安装配置登录、退出卸载数据模型JAVAWEB介绍数据库相关概念数据库数......
  • vue总结与整合(走过路过,千万不要错过,进来看看,全篇皆是精华)
    vue总结与整合vue简介 vue是一款用于构建用户界面的js框架,基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。......
  • vue判断当前项目环境 切换host
    varConfieBaseUrl="";if(location.hostname=='dev-autotest.xxx.cn'){//测试环境ConfieBaseUrl='https://dev-xxxx-test.xxxxx.cn/';}elseif(location......
  • asp.net core webapi之创建项目后切换http/https
    在项目调试过程中如果选择了https则会出现下面问题这时的解决方案为:项目-右键-属性-调试,把原先的https后的s删除即可  ......
  • 【Vue】大总结
    目录vue大回顾模板语法处理xss攻击Vue单页面组件ts泛型sass\less\css的区别...toRef()defineEmits练习根据分数显示颜色vue大回顾1前端发展史 -react,vue--》前端工程化......
  • asp.net core webapi初识
    1.建立webapi项目  2.把启用SSL取消勾选(取消https)  3.选择项目-右键-发布,进行发布信息设置,选择文件夹发布   4.打开IIS管理器,新建网站,物理路径选择刚刚......
  • Vue3 + echarts 统一封装
    1.新建echartsLib.js文件,统一导入需要的组件import*asechartsfrom"echarts/core";import{SVGRenderer,CanvasRenderer}from"echarts/renderers";import......
  • 每日一题之Vue的异步更新实现原理是怎样的?
    最近面试总是会被问到这么一个问题:在使用vue的时候,将for循环中声明的变量i从1增加到100,然后将i展示到页面上,页面上的i是从1跳到100,还是会怎样?答案当然是只会显示100,并不会......
  • webrtc QOS笔记二 音频buffer数据不足生成很多gap的问题
    webrtcQOS笔记二音频buffer数据不足生成很多gap的问题目录webrtcQOS笔记二音频buffer数据不足生成很多gap的问题记录个iusse.插入音频数据后,GetAudioInternal进......
  • vue-动态显示隐藏表格列
    在vue中想要实现动态展示表格项,可以写一个可扩展的组件  1:主要思路组件需要接受哪些数据:headerData表头数据(添加showHeader字段来控制列是否显示)data表格数据扩展......