SrpingMVC请求参数绑定基础

原生servlet接收参数

	// 接收年龄参数
	String ageStr = request.getParameter("age");
	Integer age = Integer.parseInt(ageStr);

说到底,SpringMVC是对servlet的封装,所以他简化了很多操作,就包括接收参数。SpringMVC在接收参数时,直接在handler方法中声明形参即可。比如同样的接收年龄参数:

	@RequestMapping("xxx")
	public String handle(Integer age) {
		System.out.println(age);
	}

默认支持servlet API作为参数

当需要使⽤HttpServletRequest、HttpServletResponse、HttpSession等原⽣servlet对象时,直接在handler⽅法中形参声明使⽤即可。
例如获取并使用HttpServletRequest对象:

	@RequestMapping("/handle02")
	public ModelAndView handle02(HttpServletRequest request,
		HttpServletResponse response,HttpSession session) {
 		String id = request.getParameter("id");
 	}

绑定简单类型参数

  • 入参直接声明即可,形参名称和请求传递进来的参数名称保持一致即可
  • 如果名称不一致,形参上使用@RequestParam注解映射,例如传入的参数名称是a,形参定义的名称是b(尽量不要这么用)
	@RequestMapping("/handle03")
	public ModelAndView handle03(@RequestParam("a") Integer b) {
		doSth();
 	}
  • 建议使用包装数据类型,因为请求传进来的参数可能没有值,简单数据类型不能是空,会报错
  • 注意布尔类型,传进来的值只能是true,false,0,1四种情况

绑定pojo类型参数

比较常用,比如填写一个报名表单,请求传进来一系列参数,服务端希望用一个pojo接收,又不想一个个去set,那直接定义一个pojo,只要里面的属性名称和请求传进来的参数名称一致,框架就会帮我们自动绑定上。
当pojo1中有pojo2的属性时,使用pojo2.xxx 来传递参数即可,xxx就是pojo2中属性的名称。
例如:定义一个Order,其中有User对象成员

	public class Order{
		String id;
		User user;
	}
	public class User{
		String name;
		int age;
	}

handeler入参类型是Order,则如下请求即可:

localhost:8080/handle?id=1&user.name=xiaoming&user.age=20

	@RequestMapping("/handle")
	public ModelAndView handle(Order order) {
 		dosth();
 }

日期类型绑定

日期类型比较特殊,这个需要自定义类型转换器来处理
请求:

localhost:8080/handle?day=2020-05-21

服务端handler方法:

@RequestMapping("/handle06")
public ModelAndView handle06(Date day) {
	doSth();
}

自定义类型转换器,需要实现Converter接口,两个泛型,第一个是源参数类型,第二个是目标参数类型

public class DateConverter implements Converter<String, Date> {
 	@Override
	 public Date convert(String source) {
	 	// 完成字符串向⽇期的转换
	 	SimpleDateFormat simpleDateFormat = new
		SimpleDateFormat("yyyy-MM-dd");
	 	try {
	 		Date parse = simpleDateFormat.parse(source);
	 		return parse;
	 	} catch (ParseException e) {
	 		e.printStackTrace();
	 	}
	 return null;
	 }
}

最后在spring的xml配置文件中注册上转换器即可

<mvc:annotation-driven conversionservice="conversionServiceBean"/>

<!--注册⾃定义类型转换器-->
<bean id="conversionServiceBean"
class="org.springframework.format.support.FormattingConversionServiceF
actoryBean">
 	<property name="converters">
 		<set>
 			<bean class="com.xxx.DateConverter"></bean>
 		</set>
 	</property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值