(2019.7)springMVC——参数绑定
所谓参数绑定就是将请求传过来的参数进行相关的处理,这是前后端进行数据交互很重要的一部分。
# # 首先是简单的参数传递
比方说我发这这样的请求:http://localhost:8080/user/paramTest?username=zhangshan&password=123456
可以看到的是我传了两个参数,分别是username和password,如果我的controller想要获取参数只需要:
这样只能满足接受零散的请求参数,一个两个都ok,但是我们知道参数列表是要尽量少的。
# # 复杂的参数传递
比方说是提交一个表单,我们肯定不会一个参数一个参数的传递的,这显然很麻烦,我们一般采用将数据封装到一个 javaBean中去的方式。
来个demo
只需要提供一个实体类,然后属性和我们要提交的参数对应起来,才处理的controller上,框架就会帮我们自动的封装到实体类中去。同时这个实体类,还可以有引用类型的属性
[code]public class Account implements Serializable { private String username; private String password; private double money; //一个引用类型的属性 private Student student; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } @Override public String toString() { return "Account{" + "username='" + username + '\'' + ", password='" + password + '\'' + ", money=" + money + ", student=" + student + '}'; } }
前端页面:
[code]<%@page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <h2>Hello World!</h2> <form action="/user/paramTest"method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 缴费:<input type="text" name="money"><br> 学生姓名:<input type="text" name="student.name"> 学会年龄:<input type="text" name="student.age"> <input type="submit" value="提交"> </form> </body> </html>
这里就应该注意一下了,input框的name属性的值都是我们定义好的实体类的属性的值,名字对应起来。实体类提供set get 方法,就能够将前端页面行的数据存储在对象里边,传递到后台,即使是引用类型,就像student.age,这样对应起来,依然能够传递。
最后后端想要将数据取出来,也很简单,只需要传参数传入一个实体类对象就可以了:
[code] @RequestMapping("paramTest") public String paramTest(Account account){ System.out.println(account.getUsername()); System.out.println(account.getPassword()); System.out.println(account.getMoney()); System.out.println(account.getStudent().getName()); System.out.println(account.getStudent().getAge()); return "success"; }
# # 这里有一个神奇的情况, 就是前端向后台提交数据的时候,框架会给我们自动类型转换,比方说是自动将 字符串类型给我们装转成了Integer类型的。 这是框架自定义好的类型转换器。我们用起来,基本上不用自己再写,但是肯定会会有自动转换不了 的情况,这就需要我们自定义类型转换器了。
自定义的类型转化器如下:
[code]package com.angus.utils; import org.springframework.core.convert.converter.Converter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class StringToDateConverter implements Converter<String, Date> { public Date convert(String source) { if (source == null) { throw new RuntimeException("请传入非空的参数"); } DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { return dateFormat.parse(source); } catch (Exception e) { throw new RuntimeException("转换出错"); } } }
这就相当于是自己定义了一个组件,那想要它生效,就要自己去配置它:这个如果整合SSM就放在applicationContext.xml中
如果只是使用spring 的话,就放在springMVC的配置文件中去。
[code]<!-- 自定义类型转化器 --> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.angus.utils.StringToDateConverter"/> </set> </property> </bean>
- springmvc第四讲:参数绑定
- SpringMVC详解(五)------参数绑定
- springMVC绑定json参数之二(2.2.2)
- SpringMVC的各种参数绑定方式
- springMVC中使用List和Map绑定对象作为参数的使用方法
- 关于springMVC参数的绑定
- SpringMVC参数绑定注解概析
- [转载]SpringMVC的Model参数绑定方式
- 从springmvc源码看方法参数绑定的注解和返回值处理
- 【SpringMVC学习05】SpringMVC中的参数绑定总结
- springmvc 的参数绑定
- SpringMVC提交参数绑定list时,默认配置如果list大小超过256,就会报错
- 【SpringMVC学习05】SpringMVC中的参数绑定总结
- springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定
- [Spring MVC] - SpringMVC的各种参数绑定方式
- SpringMVC_03参数绑定
- springMVC参数绑定失败的原因有以下2种
- SpringMVC中的参数绑定总结
- springmvc中的参数绑定
- SpringMVC【参数绑定、数据回显、文件上传】