spring boot前后端数据交互

目录

1 前后端联系

2 获取前端参数的方式

2.1 HttpServletRequest方法

2.2 参数对应法

2.3 javabean接受法

2.4 混合型


正文

1 前后端联系

前端是提交的表单,在action里指定访问的控制器域名。如下所示,在form标签指定了,userAdd的动作,提交方式为post。

<form action="/userAdd" method="post">

之后,在后台的控制层里,因为Spring Boot的一个好处就是通过注解就可以进行匹配,找到用户登录的代码块,使用@RequestMapping进行标记既可。

    @ResponseBody
    @RequestMapping("/userAdd")

这里看到@ResponseBody,很多人分不清楚。因为这注解可以很@controller进行融合成为@RestController,其实为了区分,尽量不要进行融合。这里做个解释如下
在使用注解开发时,需要用到2个重要的JSON格式转换注解,分别为@Request和@ResponseBody,关于这两个注解的说明如下表所示:

注解说明
@RequestBody用于将请求体中的数据绑定到方法的形参中。该注解用在方法的形参上
@ResponseBody用于直接返回return对象,该注解用在方法上

2 获取前端参数的方式

2.1 HttpServletRequest方法

很古老的方法,简单来说就是通过调用request的getParameter方法来获取参数,不建议使用

    @RequestMapping("/test2")
    @ResponseBody
    public String test2(HttpServletRequest request){
        String firstName=request.getParameter("firstName");
        String lastName=request.getParameter("lastName");
        return firstName+lastName;
    }

2.2 参数对应法

若传入的数据量很小,就几个基础参数。可以在这里直接指定变量来接受既可,比如登录的时候,前端就提交了两个String变量的登录账户和登录密码,后台接受如下:

    @RequestMapping("/test1")
    @ResponseBody
    public String test1(String name,String pwd){
        String s1=name;
        String s2=pwd;
        return  s1+s2;
    }

2.3 javabean接受法

这是后台很常用的接受方式,因为大多数系统后台是根据数据库表来建立了对应的实体类型(也就是常见的entity或POJO),而前端提交的数据几乎都与这些实体类里的成员相关。所以在进行数据操作时,很多后台都是直接接受对应的实体对象,然后在从接受的实体对象中取出对应的值。如下:

    @RequestMapping("/test3")
    @ResponseBody
    public String test3(Student student){
        String firstName=student.getFirstName();
        String lastName=student.getLastName();
        return  firstName+lastName;
    }
对应的javaBean对象
public  class Student{
    private String firstName;
    private String lastName;
    //省略setters和getters
}

但是,使用这种办法必须值得提醒的是:前端页面里的数据名字必须和实体成员的名字一样!!!否则无法对应
比如:前端是name="userAcount"

登录账户:<input type="text" name="userAcount" /></br>

实体中的成员名字必须是:userAcount

public class User {

    private String userAcount;

2.4 混合型

当然,这种情况也非常多。因为后台操作会用到非常多的数据联表操作,可能从前端接受的不止是一个实体对象中的成员,可能有其他实体对象中的成员,也可能还有其余的基础成员。
这个时候,为了方便SQL数据的取出,就会创建一个新的POJO类来包含以上所有的实体成员,出现了一个大的POJO类里还有其余POJO类的情况。
比如以下,就是一个userAll类继承了User,此外还有一个UserLove(用户爱好)的POJO类

public class userAll extends User{`
    private UserLove userLove;

这个时候,前端传入的参数里既有User的成员信息,也有UserLove里的成员信息,我们不能在后台直接使用userAll来接受。

public String addUser(userAll userAll)//错误的方法

因为,后台接受不了UserLove里某个成员的信息,比如UserLove里有个loveSport成员,前端的传入loveSport的值为football,后台是接收不了这个loveSport的值。除非前端传入整个UserLove类,但是前端一般不会传入数据组的。

这个时候,还是老老实实的接受多个POJO类既可。如:

public String addUser(User user,UserLove userLove)

然后默默取出值就行。

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值