1、HTML中一个关键属性:编码格式enctype。
1.1、默认编码方式:application/x-www-form-urlencoded,编码后的结果通常是:name=aaa&age=11格式。
可以用servletRequest中的getParameter()方法获取表单中的字段和数据。
1.2、对于传输大块二进制数据,采用multipart/form-data编码格式,将表单中的数据和文件一起发送。
需要定义一个不可能在数据中出现的字符串作为分界符,将各个数据段分开。
用getInputStream()或getReader()获取数据
getQueryString()获取请求url?后面的参数串
例:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
ServletInputStream in = req.getInputStream();
int len = req.getContentLength();
byte[] buffer = new byte[len];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = in.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
System.out.println(new String(bos.toByteArray()));
}
----------------------------285290702351777660658926
Content-Disposition: form-data; name="aa"
aaa1
----------------------------285290702351777660658926
Content-Disposition: form-data; name="file"; filename="mvc.txt"
Content-Type: text/plain
你好啊
兄弟
----------------------------285290702351777660658926
Content-Disposition: form-data; name="cc"
cc1
----------------------------285290702351777660658926--
1.3、请求头信息获取
Enumeration headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()) {
String name=(String)headerNames.nextElement();
String value=req.getHeader(name);
System.out.println(name+" "+value);
}