java - HttpServletRequest 不返回 null?

标签 java forms tomcat

我有一个表格:

<form action='?hasScenario=1' method='post' enctype='multipart/form-data'>
 <input type='file' name='file'/>
 <input type='submit' />
</form>

在 tomcat 8.0 中我想做的事:

private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException {
    Part filePart = request.getPart("file");
    ....
}

documentation 我看到如果用户没有输入任何值我应该得到 null。我没有(有意地)为 web.xml 或服务器中的多部分/文件上传配置任何特殊内容。但是我得到的不是 null: java.lang.IllegalStateException:由于未提供多部分配置,无法处理部分

我想很好地处理一些情况,当没有提供某些参数时,该怎么做?在 IllegalStateException 上捕获并什么都不做对我来说不是好方法 - 如果没有参数,我想向用户询问文件而不是用“错误/警告”词来吓唬他。

最佳答案

这是自己寻找答案的好方法 - 只需向其他人提问 :)

web.xml 中的 multipart-config 是必须的。所以我的 servlet 部分目前看起来像:

<servlet>
 <description>Scenario</description>
 <servlet-name>Scenario</servlet-name>
 <servlet-class>path-to-the-servlet</servlet-class>
 <multipart-config>
  <max-file-size>3145728</max-file-size>
  <max-request-size>5242880</max-request-size>
 </multipart-config>
</servlet>
<servlet-mapping>
 <servlet-name>Scenario</servlet-name>
 <url-pattern>/scenario</url-pattern>
</servlet-mapping>

在调用 getPart 之前,检查是否有任何数据很重要,例如:

if (request.getContentType() != null)
    Part filePart = request.getPart("file");
    ...

最后 filePart 为 null 或有效变量

我仍然不明白他们是如何让 getParameter 在这篇文章中工作的 How to upload files to server using JSP/Servlet?但这是不同的故事:)

关于java - HttpServletRequest 不返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032878/

相关文章:

java - 在整数、字符串的采访中使用的好散列函数?

java - MSAccess 上返回 ID 且数据类型为 AutoNumber(java)

php - 简短的 if 语句不显示任何输出

model-view-controller - 表单处理逻辑在 MVC Web 应用程序中属于什么位置?

tomcat - 无法在 AMD 64 位平台上加载 IA 64 位 .dll

spring - 如何在 Tomcat 中部署 Spring Integration 应用程序?

Java getText JTextField

jquery - 想法 - 最好让所有元素都在表格中或一秒钟后将它们添加到那里?

java - 当我运行 java servlet 查看 JSON 结果时——它弹出文件下载而不是 http ://localhost:8080/

java - 方法不起作用时的 Mockito