Fork me on GitHub

SpringMVC-06-数据处理

6. 数据处理

处理提交数据

  1. 提交的域名称和处理方法的参数一致

    提交数据: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";
        }
    
  2. 提交的域名称和处理方法的参数名不一致

    提交数据: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";
        }
    
  3. 提交的是一个对象

    要求提交的表单域和对象的属性名一致,参数使用对象即可。

    1. 实体类

      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class User {
          private int id;
          private String name;
          private int age;
      
      }
      
    2. 提交数据:http://localhost:8080/user/t2?name=huba&id=1&age=15

    3. 处理方法:

      @GetMapping("/t2")
          public String test2(User user, Model model){
              System.out.println("接受到前端参数");
              model.addAttribute("msg",user.toString());
              return "test";
          }
      

      注意点:

      匹配对象中的字段名;名字一致必须一致,否则为null。

数据显示到前端

  1. 通过ModelAndView
  2. 通过ModelMap
  3. 通过Model

对比

对新手而言简单来说使用区别就是:

  • Model:只有寥寥几个方法,适合存储数据,简化版
  • ModelMap:继承了LinkedHashMap
  • ModelAndView:除了可以存储数据,也可以进行设置返回的逻辑视图,进行控制展示层的跳转。

乱码问题

测试步骤:

  1. 我们可以再首页编写一个提交的表单

    <form action="/e/t1" method="post">
        <input type="text" name="name">
        <input type="submit">
    </form>
    
  2. 后台编写对应的处理类

    @PostMapping("/e/t1")
    public String test1(String name, Model model){
    
        model.addAttribute("msg",name);
    
        return "test";
    }
    
  3. 输入中文测试,发现乱码

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>

posted @ 2020-09-06 15:09  CodeHuba  阅读(96)  评论(0编辑  收藏  举报