使用servlet处理多部分和普通请求

时间:2013-05-16 17:48:47

标签: java servlets parameters tomcat7 multipartform-data

我正在使用servlet API 3.0和AJAX开发Web应用程序。我在本地开发和测试(在Eclipse中使用run-jetty-run),它似乎工作正常。但是,当我部署到我的Tomcat7实例时,我通过调用NullPointerException得到getPart()

我的设置如下:

我有一个mill servlet的运行(没有@MultipartConfig注释)。

在我的doPost()中,我正在检查一个“activity”参数,该参数告诉servlet用户尝试做什么并确定下一步行动。据我所知,在multipart / form-data请求中,这些请求作为流的一部分存在,所以我编写了一个帮助方法来抽象它。简而言之,它试图将它作为参数,如果它没有找到它,则假定它是一个多部分请求,因此它调用getPart("activity")来获取该部分,并从部件的InputStream中读取值。 / p>

现在,在本地RJR上,我执行此代码没有问题。 servlet能够在正常请求和多部分请求中接收“活动”参数。然后,我远程部署到Tomcat7实例。在测试应用程序之后,正常请求会起作用,但是当多部分请求到达时,当我调用req.getPart("activity").getInputStream();时,它们会抛出空指针异常

我想我的问题的症结归结为是否可以在同一个servlet中正确接收multipart / form-data和普通请求。

此外,这不应该有所作为,但是当我远程部署和测试时,我使用SSH隧道将流量路由到tomcat实例的端口。

1 个答案:

答案 0 :(得分:0)

在预感中,我尝试添加@MultipartConfig注释,并且它有效。这表明不同的servlet容器对注释的处理方式不同。