目录
正文
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)
然后默默取出值就行。