Spring Boot:application/x-www-form-urlencoded;char - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

Spring Boot:application/x-www-form-urlencoded;char

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:73

Spring -Boot:Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported]

问题的出现是如许的,我早年端界面提交数据信息,然后在controller层以对象的情势吸法术据

前端界面:

    <form action="/user/saveuser" method="post">
        用户ID:<input name="id" type="text"><br>
        用户姓名:<input type="text" name="username"><br>
        用户年纪:<input type="text" name="age"><br>
        账户金额:<input type="text" name="price"><br>
        <input type="submit" value="提交">
    </form>

controller层

    @RequestMapping(value = "saveuser",method=RequestMethod.POST)
    public String saveUser(@RequestBody User user){
        System.out.println("user"+user);
        userMapper.save(user);
        return "redirect:/user/findAll";
    }

mapper:

    @Override
    public void save(User user) {
         jdbcTemplate.update("insert into user values (?,?,?,?)",user.getId(),user.getUsername(),user.getAge(),user.getPrice());

    }

pojo:

@Data
public class User {
    @NotNull(message = "id不克不及为空")
    private int id;
    @NotEmpty(message = "姓名不克不及为空")
    @Length(min = 2,message = "字符串长度不克不及小于二")
    private String username;
    private int age;
    @Min(value = 60,message = "价格必须大年夜于60")
    private double price;
}

本认为这个小demo会毫无悬念的运行成功,结不雅报了上述缺点,一脸懵逼,因为没有碰见过,作为一个新手,毫不迟疑的就直接搜百度搜谷歌了,乍一看,总结一下本来说到底是编码或者json的问题导致的,这个就R单了。可是歧视仇敌你就错了,网上的解答很具体,然则我的问题对他们全部免疫,我大年夜懵逼到加倍懵逼。

第一个解答是说传json时,设置content-type,肯定跟Ajax相干,然则我又没写Ajax,只是通俗的form表单,但我照样测验测验了一下,我用了@RequestBody,在我前端传过来的数据会主动与实体类对象进行匹配,然则数据完全过不来,所以我改用了@RequestParam,然后直接用String类型进行接收打印到控制台,看看到底是怎么回事
更改后:

    @RequestMapping(value = "saveuser",method=RequestMethod.POST)
    public String saveUser(@RequestParam String user){
        System.out.println("user"+user);
//        userMapper.save(user);
        return "redirect:/user/findAll";

结不雅打印台出现一段乱码,且打印在控制滔喔赡并不是以{ }情势的,所以我肯定了传过来的数据不是json格局。那么就是乱码了。

开端查乱码,然后就有了我在yml中写了一堆编码的器械

  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    encoding: UTF-8
    mode: HTML5
  http:
    encoding:
      charset: UTF-8
      enabled: true
      force: true
  messages:
    encoding: UTF-8
server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

然后就是前端界面直接以记事本的情势打开改编码,但都无济于事。
然后归去从新看了spring mvc,针对前端基于对象添加的相干属性,到了controller层是直接进行匹配的,而我传过来的也不是json格局,所以我直接就把@RequestBody给删掉落,我丢,给网膳绫钦底绕晕了(不怪网上怪本身),想想这么简单的问题(做出来才简单)搞了这么久,浪费这么长时光,还浪费这么长时光记录这么简单的问题,没缺点。
下次碰着问题,第一个想着本身先解试一下,不要一味的依附网上的解答,有时刻也可能事倍功半,就像我浪费的时光!

相关案例查看更多