SpringMvc系列笔记二——获取请求参数

获取请求参数

前言

在 Servlet 中我们通过 request.getParameter(name)方法获取请求参数。该方式存在两个问题:

  • 请求参数较多时会出现代码冗余的显现
  • 与容器紧耦合

SpringMvc的改进

在 SpringMVC 中可以使用 HttpServletRequest 对象获取请求数据,同时还提供了参数注入的方式用于获取请求数据。
SpringMVC 参数注入的优点:

  • 简化参数接收形式(不需要调用任何方法。需要什么参数, 就在控制器方法中提供 什么参数)。
  • 参数类型不需要自己转换了。如果类型不符会抛出400异常
  • 可将参数自动封装为对象
  • 如果没有该参数对应的数据,可为该参数指定默认值

通过 HttpServletRequest 对象获取请求数据

@RequestMapping("/getData") 
public ModelAndView getRequestParameter(HttpServletRequest request){ 
	String username = request.getParameter("name"); 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("username",username); 
	return modelAndView; 
}

通过参数注入获取请求参数

@RequestMapping("/addUsers") 
public ModelAndView addUsers(String username,int userage){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("name",username); 
	modelAndView.addObject("age",userage); 
	return modelAndView; 
}

通过@RequestParam注解参数注入获取请求参数

@RequestParam:将请求参数绑定到控制器的方法参数上

  • value:参数名
  • required:是否包含该参数,默认为 true,表示该请求路径中必须包含该参数,如果不包含就报错
  • defaultValue:默认参数值,如果设置了该值,required=true 将失效,自动为 false,如果没有传该参数,就使用默认值
@RequestMapping("/addUsers") 
public ModelAndView addUsers(@RequestParam(value = "name",required = true,defaultValue = "lanh") String username,@RequestParam("age") int userage){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("name",username); 
	modelAndView.addObject("age",userage); 
	return modelAndView; 
}

注入集合参数

在 SpringMVC请求参数注入中,如果有多请求参数的 name 相同,那么可以使用 String[] 或 List 集合来接收请求参数。如果使用的 List 类型需要在该参数前添加@RequestParam注解,String[]则不需要

@RequestMapping("/addUsers") 
public ModelAndView addUsers(String username,@RequestParam List<String> userlike){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("name",username); 
	String temp = ""; 
	for(String str:userlike){ 
		temp+= str+" "; 
	}
	modelAndView.addObject("userlike",temp); 
	return modelAndView; 
}

注入对象参数

在 SpringMVC 的请求参数注入中,可以使用注入POJO方式来接收请求参数。要求:请 求参数的name必须与POJO的属性名相同

@RequestMapping("/addUsers") 
public ModelAndView addUsers(Users user){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("name",user.getUsername()); 
	String temp = ""; 
	for(String str:user.getUserlike()){ 
		temp+= str+" "; 
	}
	modelAndView.addObject("userlike",temp); 
	return modelAndView;
}

注入关联对象

SpringMVC 可以根据对象的关联关系实现请求参数的注入

@RequestMapping("/addUsers") 
public ModelAndView addUsers(Users user){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("user",user.toString()); 
	modelAndView.addObject("address",user.getAddress().toString()); 
	return modelAndView; 
}

向集合中注入对象

在 SpringMVC 中可以向一个集合属性中注入对象

@RequestMapping("/addUsers") 
public ModelAndView addUsers(Users user){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("user",user.toString()); 
	modelAndView.addObject("address",user.getAddressList()); 
	return modelAndView; 
}

向Map集合注入对象

@RequestMapping("/addUsers") 
public ModelAndView addUsers(Users user){ 
	ModelAndView modelAndView = new ModelAndView(); 
	modelAndView.setViewName("/index.jsp"); 
	modelAndView.addObject("user",user.toString()); 
	Set<Map.Entry<String,Address>> set = user.getAddressMap().entrySet(); 
	modelAndView.addObject("address",set); 
	return modelAndView;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿豆蛙给生活加点甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值