request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
1.遇到问题:使用s2sh框架的时候再通过url访问某个action的时候调用 request.getReader() ,通过这个方法得不到数据流。但是request的parametermap中却又url参数。
2.解决问题:通过在网上查找内容,但是我也不知道该怎么搜。最终还是搜到一份答案,我认为还算合理的。现在总结如下。
1)form表单提交数据是的编码不同,可以有多种如 enctype=application/x- www-form-urlencoded,这种编码方式是默认的编码方式。这种编码方式( application/x-www-form-urlencoded )虽然简单,但对于传输大块的二进制数据显得力不从心。
对于传输大块的二进制数这类数据,浏览器采用了另一种编码方式,即 "multipart/form-data" 的编码方式:浏览器可以很容易将表单内的数据和文件放在一起发送。这种编码方式先定义好一个不可能在数据中出现的字符串作为 分界符,然后用它将各个数据段分开,而对于每个数据段都对应着 HTML 页面表单中的一个Input 区,包括一个 content-disposition 属性,说明了这个数据段的一些信息,如果这个数据段的内容是一个文件,还会有 Content-Type 属性,然后就是数据本身,如果以这种方式提交数据就要用request.getInputStream()或request.getReader()得到 提交的数据,用 request.getParameter()是得不到提交的数据的。
3.问题总结:
关于web应用还有很深的东西没有了解过,需要彻底了解。今天发现一个问题就是enctype与HttpServletRequest的关系,不同的enctype对应HttpServletRequest中封装的数据也有不同。后期继续更新,敬请期待
来源:oschina
链接:https://my.oschina.net/u/218567/blog/182878