7. 接收请求参数及数据回显
接收请求参数:
方法中定义形参来接收前端的请求参数:
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("t1")
public String test(String name,Model model) {
//1. 接收前端参数
System.out.println(name);
//2. 将接收到的结果传递给前端
model.addAttribute("msg",name);
return "test1";
}
}
请求URL:http://localhost:8080/springmvc_04_controller/user/t1?name=zhangsan
如果请求参数与控制器中方法的形参不一致,可以在方法形参前加@RequestParam
注解:
尽量在需要接收的前端参数前加上这个注解
public String test(@RequestParam("username") String name, Model model) {
也可以接收对象:
@GetMapping("/t2")
public String test2(User user,Model model) {
String jsonString = JSON.toJSONString(user);
model.addAttribute("msg",jsonString);
return "test1";
}
请求URL:http://localhost:8080/springmvc_04_controller/user/t2?id=1001&name=zhangsan&age=25
说明:
接收前端传递的参数时,如果前端的请求参数名与方法形参的参数名一直,则可以直接接收
如果方法形参使用对象接收,则会匹配请求参数名与对象的属性名。如果匹配一致,则可以正常接收;如果属性名匹配不一致,则接收到的是null
例如,把请求参数中的name改成username:
http://localhost:8080/springmvc_04_controller/user/t2?id=1001&username=zhangsan&age=25
则后端接收到的User对象就是:
User(id=1001, name=null, age=25)
数据显示到前端
方式一:通过ModelAndView
方式二:通过ModelMap 继承了LinkedHashMap
方式三:通过Model
前端提交乱码问题
可以通过过滤器解决,使用SpringMVC提供的过滤器或者自定义过滤器
注意:过滤器url-pattern,要设置/*
,不要只写成/