表单提交补充

日期类型数据处理

页面端:

<form action="user">
  <input type="hidden" name="op" value="reg" />
  <label for="birth">出生年月:</label>
  <input type="date" name="birth" id="birth" />
  <button type="submit">提交</button>
</form>

[](data:image/svg+xml;base64,PHN2ZyBkYXRhLXYtNWRjMzE1NjggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdib3g9IjAgMCAyNCAyNCIgY2xhc3M9ImhvdmVyIiBzdHlsZT0iYm90dG9tOiA3LjVweDsiPjxwYXRoIGRhdGEtdi01ZGMzMTU2OCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiAvPjxwYXRoIGRhdGEtdi01ZGMzMTU2OCBmaWxsPSIjMjdiMWZmIiBkPSJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptLTEgNGw2IDZ2MTBjMCAxLjEtLjkgMi0yIDJINy45OUM2Ljg5IDIzIDYgMjIuMSA2IDIxbC4wMS0xNGMwLTEuMS44OS0yIDEuOTktMmg3em0tMSA3aDUuNUwxNCA2LjVWMTJ6IiAvPjwvc3ZnPg==)

servlet:

private void reg(HttpServletRequest request, HttpServletResponse response){
    //获取前端数据只能是字符串
    String birth = request.getParameter("birth");
    try {
        Date birthday = DateFormat.getDateInstance().parse(birth);
        System.out.println("生日--->"+birthday);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

[](data:image/svg+xml;base64,PHN2ZyBkYXRhLXYtNWRjMzE1NjggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdib3g9IjAgMCAyNCAyNCIgY2xhc3M9ImhvdmVyIiBzdHlsZT0iYm90dG9tOiA3LjVweDsiPjxwYXRoIGRhdGEtdi01ZGMzMTU2OCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiAvPjxwYXRoIGRhdGEtdi01ZGMzMTU2OCBmaWxsPSIjMjdiMWZmIiBkPSJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptLTEgNGw2IDZ2MTBjMCAxLjEtLjkgMi0yIDJINy45OUM2Ljg5IDIzIDYgMjIuMSA2IDIxbC4wMS0xNGMwLTEuMS44OS0yIDEuOTktMmg3em0tMSA3aDUuNUwxNCA2LjVWMTJ6IiAvPjwvc3ZnPg==)

文件上传

之前表单提交到后台的数据都是普通的文本信息,即便是数值或者日期,在后端都可以通过 java 相关 API 进行转换,但是如果表单提交到后台数据不是一个文本而是文件(图片,视频,音频等附件),Servlet 又该如何处理:

在 Servlet 支持文件上传的技术,解决方案有很多,只需要将前端提交的数据以流形式读取即可,后端有以下解决方法:

使用方式

  1. 表单提交方式必须设置为method="post"
  2. 表单的 enctype 必须设置为multipart/form-data