跳到主要内容

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,要设置/*,不要只写成/