深圳幻海软件技术有限公司 欢迎您!

Springboot实现HTML表单from简单的接收信息

2023-03-02

HTML<from>元素from可向Web服务器提交请求普遍格式:<fromaction="服务器地址"method="请求方式"enctype="数据格式"><inputtype="submit"value="Test按钮"></from>metho

HTML< from >元素

from可向Web服务器提交请求


普遍格式:

  <from action="服务器地址" method="请求方式" enctype="数据格式">
      <input type="submit" value="Test按钮">
  </from>
  • method请求方式有:
    • get(默认)提交时,数据跟在URL之后
    • post提交时,数据在请求体内
  • enctype在post请求时,指定数据的格式
    • application/w-www-form-urlencoded(默认)
    • multipar/from-data

主要实现

 <form action="http://localhost:8080/test"
        method="post" enctype="multipart/form-data">
        <!-- 隐藏框 -->
        <input type="hidden" value="1" name="id">
        <!-- 常态下输入 --> <hr>
        <input type="text" name="username">
        <!-- 密码 --><hr>
        <input type="possword" name="password">
        <!-- 日期 --><hr>   <!-- 注意日期格式 yyyy-mm-dd,Date默认格式为yyyy/mm/dd -->
        <input type="date" name="birthday" >
        <!-- 单选 --><hr><input type="radio" name="sex" value="男" checked><input type="radio" name="sex" value="女" >
        <!-- 多选 --><hr>
        唱歌    <input type="checkbox" name="fav" value="唱歌">
        rep    <input type="checkbox" name="fav" value="rep">
        篮球    <input type="checkbox" name="fav" value="篮球">
        <!-- 文件 --><hr>
        <input type="file" name="file">
        <hr>
        <input type="submit" value="提交" >
    </form>

Pojo类层代码
需要注意的是,定义的属性要和input中的name名称一一对应

点击查看代码
public class User{
        private Integer id;
        private String username;
        private String password;
        private String sex;
        // 转换日期格式
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date birthday;
        private List<String> fav;


        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public Date getBirthday() {
            return birthday;
        }

        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }

        public List<String> getFav() {
            return fav;
        }

        public void setFav(List<String> fav) {
            this.fav = fav;
        }
        
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", sex='" + sex + '\'' +
                    ", birthday=" + birthday +
                    ", fav=" + fav +
                    '}';
        }
    }

Controller层代码

点击查看代码
@RestController
public class TestController {

    @RequestMapping("/test")
    public String test(User user, MultipartFile file){
        System.out.println("user:" + user);
        System.out.println("file:" + file.getOriginalFilename());
        return "success! ";
    }
}

数据格式

客户端发送

  • 编码
    • application/x-www-form-urlencoded : url编码
    • application/json : json编码
    • mutipart/form-data : 每部分编码可用不同
  • from表单只能支持application/x-www-form-urlencodedmutipart/form-data格式发送
  • 文件上传用mutipart/form-data格式
  • js代码可用支持任意格式发送

服务端接受

  • application/x-www-form-urlencodedmutipart/form-data格式的数据,Spring接收方式统一,只需要用java bean的属性名一一对应请求参数名即可
  • 对于application/json格式的数据,Spring接收需要使用@RequestBody + java bean的方式

运行结果

参考:https://space.bilibili.com/37974444