想放松的博客

主页

我很独特,这个世界上只有一个我。

spring boot后端层次介绍

201946

有些项目我们可以采用“前端+后端”这种分离的方式进行开发。本篇博文,我将介绍我最近在用的spring boot后端的层次以及使用方法。

首先,我们使用的工具是IntelliJ IDEA,这里我们已经建立好了一个spring boot的工程,工程目录如下:

                

    application.yml中配置了与数据库的连接字符串,数据库的密码,系统日志保存的位置,文件上传目录,以及后端服务所运行的端口号。

    这里,我们有6个需要注意的文件夹,按照上图中的顺序从上到下依次是controllerdaoentityserviceimplmapper

    下面,我将分别介绍这6个重要的文件夹中所存放的文件的作用:

        entity

        实体层。这里写的是实体类的定义,数据表中的每个字段名都作为实体类中的一个成员变量,然后这里再实现每个成员变量的getset的方法。

          

 

        controller

         控制层。控制层中定义了提供给前端的接口的路径,前端使用本接口的方法(GET还是POST),以及需要传输的参数。前端发送来的请求首先传到“控制器”中,这里接受前端传来的请求,并将这个请求传到service层(调用了service层的接口)。

         例如下图所示,前端调用的路径是http://127.0.0.1:8088/mlusers/loginMlusers,使用的是POST方法,参数有两个,分别是usernamepassword。因为是@RequestParam,所以参数是通过url传输的,例如http://127.0.0.1:8088/mlusers/loginMlusers?username=admin&password=123456

        除了@RequestParam这种传递参数的方法外,还有@RequestBody,这种是在http包的body层传输,格式是JSON格式,好处是在url中看不到参数的值因而更安全。

        

      

       service

       服务层。该层定义了相关服务的接口,只是接口,实现接口的代码放在impl文件夹中。接受从控制层controller中传递过来的请求,然后将请求传递给DAO层。

           

 

    impl

    服务层service接口的实现。在这里调用了DAO接口,将需要操作数据库的请求传递给DAO层。

      

 

    dao

    数据库对后端服务的接口层。接受来自服务层service的请求,将请求传递给mapper

    这里@Param("username")中的username对应的是mapper层中#{}中的参数。

       

 

    mapper

    数据库操作层,这里写SQL语句,实现dao接口,接受dao接口传入的参数并执行SQL语句操作数据库。

 

 

      前面介绍了spring boot后端的层次结构,下面来简单说一下如何在前端调用后端的接口,也就是回答“前端和后端如何连接起来”的问题。

      我们拿react-native前端举例。这是@RequestParam的情况,body部分写的是“key=val”这样的形式,headers中的Content-Type要用application/x-www-form-urlencoded哦!

fetch('http://127.0.0.1:8088/mlusers/loginMlusers',{    

       method:'POST',

       headers:{

       'Accept': 'application/json',

       'Content-Type':'application/x-www-form-urlencoded'

      },

       body:"username=admin&password=123456",

}).then((response)=>response)  //解析数据

    .then((responseJson)=>{  //收到的数据

        let usrname = JSON.parse(responseJson._bodyText).loginname;

              let pwd = JSON.parse(responseJson._bodyText).loginpwd;

             alert("用户名:"+usrname+" 密码:"+pwd);

    }).catch((error)=>{  //错误处理

    alert("连接服务器失败!");

});

    如果是@RequestBody,那么将Content-Type改成application/json,然而body部分要写成形如这样的形式:

    body: JSON.stringify({loginname:"admin"}),

 

主页

浙ICP备 18034075   公网安备 33011802001497

想放松i