栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring MVC 数据绑定

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring MVC 数据绑定

在数据绑定过程中,Spring MVC 框架会通过数据绑定组件(DataBinder)将请求参数串的内容进行类型转换,然后将转换后的值赋给控制器类中方法的形参。
这样后台方式就可以正确绑定并获取客户端请求携带的参数。具体信息处理过程如下:

  1. Spring MVC 将 ServletRequest 对象传递给 DataBinder。
  2. 将处理方法的入参对象传递给 DataBinder
  3. DataBinder 调用 ConversionService 组件进行数据类型转换、数据格式化等工作,并将 ServletRequest 对象中的消息填充到参数对象中
  4. 调用 Validator 组件对已经绑定了请求消息数据的参数对象进行数据合法性校验
  5. 校验完成后会生成数据绑定结果 BindingResult 对象,Spring MVC 会将 BindingResult 对象中的内容赋给处理方法的相应参数。
绑定默认数据类型

当前端请求的参数比较简单时,可直接使用 Spring MVC 提供的默认参数类型进行数据绑定。
常用的默认参数类型如下:

  • HttpServletRequest:通过 request 对象获取请求消息
  • HttpServletResponse:通过 response 对象处理响应信息
  • HttpSession:通过 session 对象得到 session 中存储的对象
  • Model/ModelMap:Model 是一个接口,ModelMap 是一个接口实现,作用是将 Model 数据填充到 request 域。

在这里忽略配置文件

@Controller
public class UserController{
    @RequestMapping(value="/selectUser")
    public String selectUser(HttpServletRequest request){
        //获取请求地址中的参数id 的值
        String id = request.getParameter("id");
        System.out.println("id="+id);
        return "success";
    }
}

使用注解方式定义了一个控制器类,同时定义了方法的访问路径。在方法参数中使用了 HttpServletRequest 类型,并通过该对象的 getParameter() 方法获取了指定的参数。

绑定简单数据类型

简单数据类型的绑定指的是 Java 中几种基本数据类型的绑定,如 int、String、Double 等类型。
还是拿上面一个案例来进行说明。

 @RequestMapping(value="/selectUser")
    public String selectUser(Integer id){
        System.out.println("id="+id);
        return "success";
    }

该方法只是将 HTTPServletRequest 参数类型替换成了 Integer 类型。

有时前端请求中参数名和后台控制器类方法中的形参名不一样,就会导致后台无法正确绑定并接收到前端请求的参数。为此,Spring MVC 提供了@RequestParam注解来进行间接数据绑定。
@RequestParam注解主要用于定义请求中的参数,在使用时可以指定它的4个属性:

  • value:name 属性的别名,这里指参数的名字,即入参的请求参数名字,例如,value="user_id"表示请求的参数中名字为 user_id的参数的值将传入。如果只使用 value 属性,就可以省略 value 属性名。
  • name:指定请求头绑定的名称。
  • required:用于指定参数是否必须,默认是 true,表示请求中一定要有相应的参数。
  • defaultValue:默认值,表示如果请求中没有同名参数的默认值。
绑定 POJO 类型

在实际应用中,客户端请求可能会传递多个不同类型的参数数据,此时可以使用 POJO 类型进行数据绑定。
POJO 类型的数据绑定是将所有关联的请求参数封装在一个 POJO (对象)中,然后在方法中直接使用该 POJO 作为形参来完成数据绑定。

 @RequestMapping(value="/registerUser")
    public String selectUser(User user){
        String username = user.getUserName();
        String password = user.getPassword();
        System.out.println("username="+username);
        System.out.println("password="+password);
        return "success";
    }

注意:在使用 POJO 类型数据绑定时,前端请求的参数名必须与要绑定的 POJO 类中的属性名用于,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号