SpringMVC-06-数据处理
6. 数据处理
处理提交数据
-
提交的域名称和处理方法的参数一致
提交数据:http://localhost:8080/user/t1?name=huba
处理方法:
public String test1(String name, Model model){ //1.接受前端参数 System.out.println("接受到前端参数"); //2.将返回结果传递给前端 model.addAttribute("msg",name); //3.页面跳转 return "test"; }
-
提交的域名称和处理方法的参数名不一致
提交数据:http://localhost:8080/user/t1?username=huba
处理方法:
//@RequestParam("username"):username 域名称 @GetMapping("/t1") public String test1(@RequestParam("username") String name, Model model){ //1.接受前端参数 System.out.println("接受到前端参数"); //2.将返回结果传递给前端 model.addAttribute("msg",name); //3.页面跳转 return "test"; }
-
提交的是一个对象
要求提交的表单域和对象的属性名一致,参数使用对象即可。
-
实体类
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private int age; }
-
处理方法:
@GetMapping("/t2") public String test2(User user, Model model){ System.out.println("接受到前端参数"); model.addAttribute("msg",user.toString()); return "test"; }
注意点:
匹配对象中的字段名;名字一致必须一致,否则为null。
-
数据显示到前端
- 通过ModelAndView
- 通过ModelMap
- 通过Model
对比
对新手而言简单来说使用区别就是:
- Model:只有寥寥几个方法,适合存储数据,简化版
- ModelMap:继承了LinkedHashMap
- ModelAndView:除了可以存储数据,也可以进行设置返回的逻辑视图,进行控制展示层的跳转。
乱码问题
测试步骤:
-
我们可以再首页编写一个提交的表单
<form action="/e/t1" method="post"> <input type="text" name="name"> <input type="submit"> </form>
-
后台编写对应的处理类
@PostMapping("/e/t1") public String test1(String name, Model model){ model.addAttribute("msg",name); return "test"; }
-
输入中文测试,发现乱码
SpringMVC给我们提供了一个过滤器,可以在web.xml中配置,修改了xml文件需要重启服务器!
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>