使用Servlet 3.0上传文件时,request.getParameter()是否仍然有效?

时间:2012-06-28 04:16:19

标签: java jsp tomcat servlets file-upload

我刚从BalusC阅读了this great answer关于如何使用3.0 Servlet API上传文件的信息。

我的问题是关于request.getParameter()用于常见字段的问题。例如,如果我的表单如下所示:

<form action="/upload" method="post" enctype="multipart/form-data">
    <fieldset>
        <label for="description">File description:</label>
        <input type="text" id="description" name="description" value="" />

        <label for="uploadedFile">File:</label>
        <input type="file" id="uploadedFile" name="uploadedFile" />

        <input type="submit" value="Send" />              
    </fieldset>
</form>

按照BalusC的解释,我应该操纵part.getInputStream()返回的InputStream来获取 description 字段的内容。这是为什么 ?我试着简单地调用request.getParameter("description"),它似乎工作正常。

我使用Tomcat 7.0.20。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

  

我试着简单地调用request.getParameter(“description”),它似乎工作正常。

实际上,这在Servlet 3.0规范中已经指定,但直到最近才在早期版本的Glassfish中使用,即使它是参考实现。这已被报告为Glassfish issue 16740,并已在3.1.2中修复,在第3.0版发布后超过2年。

答案 1 :(得分:3)

自Servlet 3.0本身起可用。所有Servlet 3.0容器都应通过HttpServletRequest.getParameter()使输入类型参数可用。

这是Servlet 3.0 Spec在第23页上所说的内容:

  

3.2文件上传

     

...

     

对于form-data作为Content-Disposition但没有getParameter的部分   filename,该部分的字符串值也可通过   getParameterValues上的HttpServletRequest / {{1}}方法,   使用部件的名称。