• Java苍穹外卖01-开发环境搭建(Git、nginx)-Swagger-员工管理


    一、开发环境搭建

    1.项目架构

    2.Git版本管理

    在IDEA中可以一键搭建并commit,当Git远程仓库搭建后就可以push

    3.前后端联调

    Builder注解:

    加了注解后就可以通过这样的方式创建对象

    接收传入的是dto对象,传出去的对象为vo对象

    4.nginx反向代理

    对于第一条:请求nginx的时候,在nginx可以作缓存,如果请求同样接口地址,就无需再请求真正后端程序,在nginx处就将缓存数据返回给前端。

    对于第二条:当有大量请求的时候nginx就可以将请求分配到多台服务器上。

    对于第三条:前端不直接访问到后端服务器,可以保证安全

    配置:(nginx.conf)

    upstream中配置的就是集群中服务器的ip

    负载均衡有不同策略,不指定就是默认轮询

    5.完善登录功能

    只能从左到右,不能解码,想要比对需要将密码再次MD5加密后进行比对

    二、导入接口文档

    1.前后端分离流程

    2.Swagger

    使用方式:

    配置是在server模块中的config包中

    basePackage是扫描接口的包有哪些,不能写错了

    没有设置静态资源映射,网页就会以为是动态请求某个controller

    运行后,可以登录localhost:8080/doc.html,可以查看接口文档

    常用注解:

    加上注解信息会在swagger静态页面打开后会有相应的信息便于查看接口文档

    三、新增员工

    1.需求分析

    登录后进行密码修改

    admin是来区分管理端和用户端

    2.代码开发

    controller:

    service:

    mapper:

    3.测试:

    在接口文档测试:
    记得新增token的全局参数,不然报错

    4.代码完善

    当新增员工已存在时:报下面的错误,要给前端抛出相应的信息

    在异常处理器中要捕获异常处理:

    第二个问题:

    如何动态获得登录用户的ID

    登录后会生成JWT令牌给前端,在后续请求中token会携带JWT令牌,在拦截器中会进行拦截,如何传递JWT令牌

    ThreadLocal

    一次请求就是一个线程,可以有一个空间,存储需要的值

    定义一个含ThreadLocal成员变量的静态方法类:

    四、员工分页查询

    1.需求分析

    2.代码开发:

    controller:

    service:

    注意这里的:PageHelper插件可以让在写SQL语句的时候不用加limit关键字语句。
    实现原理:它的startPage方法将传入的页码和每页记录数传进去,其中有个setLocalPage会将这些信息存储到一个ThreadLocal对象中去,然后在分页查询之前通过这个对象将页码记录数取出来并动态把limit关键字拼进去,将页码和每页记录数算出来拼进去。

    mapper:

    xml文件:

    3.功能测试

    操作时间格式不太对

    4.代码完善-消息转换器

    SpringMVC是SSM框架中整个应用程序与用户交互的前端接口,可以接受用户请求并根据配置映射到相应的controller中去;可以将请求参数绑定到Java对象中去,使用消息转换器可以将不同文件序列化成Java对象;其还有着拦截器和全局异常处理器的作用

    通过继承WebMvcConfigurationSupport这个类,就可以自定义MVC中的一些配置。在这里就创建了消息转化器对象并为其添加了对象转换器,其中包含了对LocaDateTime,LocalDate,LocalTime数据的格式。然后添加到converts中的0位置后就可以统一使用这些格式返回给前端。

    五、启用禁用员工账号

    1.需求分析

    2.代码开发

    对于对数据进行操作的请求不需要返回Result的泛型,而查询类似的需要返回

    controller:

    service:

    这里可以使用builder方法构造对象。

    mapper:

    xml映射文件:

    注意呀:大括号以及,动态会自动删除,

    parameterType是指传入的参数类型,resultType指的是传出的参数类型,这里是传入employee Java对象然后对其指进行提取所以是parameterType。貌似可以不设置,会自动判断。

    这里使用动态SQL的原因在于,虽然这里只需要修改status可以通过注解,但是以后如果涉及到修改员工属性的操作可以直接使用这个方法,动态要修改的值。

    六、编辑员工

    1.需求分析

    编辑员工需要回显员工信息,之后填写新信息后进行信息的修改所以需要两步

    2.代码开发

    根据id查询员工:

    controller:

    service:

     

    这里设置密码为****是因为编辑员工信息不需要密码,进一步保护

    mapper:

    修改员工信息:
    controller:

    service:

    mapper:
    调用启用禁用员工账号中编写的update方法,因为其采用了动态SQL就可以只要涉及修改都可以使用。

  • 相关阅读:
    【Q1—45min】
    扩展:文件属性chattr,隐藏权限主要用来防止root误删除
    前端使用 Konva 实现可视化设计器(3)- 单选、多选、选择框
    fabic.js Stickman应用》》元素关联设置/拓扑图
    猿人学 第一题
    # 杂谈偶感 × 如何引用参考文献
    CDH 12Cloudera Manager Console freeIPA&&Kerberos(markdown新版)
    18_Nginx_rewrite阶段_rewrite模块
    顺序栈(数组模拟)
    【环形链表】
  • 原文地址:https://blog.csdn.net/qq_52439738/article/details/138090775