Java 在servlet中标识html表单或其编码(文本或文件)

Java 在servlet中标识html表单或其编码(文本或文件),java,forms,servlets,apache-commons-fileupload,enctype,Java,Forms,Servlets,Apache Commons Fileupload,Enctype,如何在servlet中识别使用HTML表单发送的请求是否具有enctypemultipart/form data或默认的application/x-www-form-urlencoded 或者:是否有其他方法可以识别所使用的表格request.getParameter(“some_param”)仅适用于默认编码。您可以使用内容类型:标题进行识别 if(HttpServletRequest.getContentType().contains("form-data")){ //handle m

如何在servlet中识别使用HTML表单发送的请求是否具有enctype
multipart/form data
或默认的
application/x-www-form-urlencoded


或者:是否有其他方法可以识别所使用的表格
request.getParameter(“some_param”)
仅适用于默认编码。

您可以使用
内容类型:
标题进行识别

if(HttpServletRequest.getContentType().contains("form-data")){
   //handle multipart data
 ....
} else if(HttpServletRequest.getContentType().contains("x-www-form-urlencoded")){
   //handle from data
 ....
}
如果web容器支持Servlet 3.0,则使用HttpServletRequest.getParts()API。

if(request.getParts() !=null){
  //handle multipart
} else {
  //handle form data
}
我使用ApacheCommonsFileUpload处理多部分,但不确定如何在处理多部分和默认表单之间切换

使用ApacheCommonsFileUpload自己的来检查它

if (ServletFileUpload.isMultipartContent(request)) {
    // Parse with FileUpload.
}
else {
    // Use normal getParameter().
}
另见:

当您应该使用
.equals()
时,不要使用
.contains()
。在这种情况下,这可能不是问题,但仍然很草率。只需使用
request.getPart(“some_param”)
或Apache Commons文件上载。请参阅不要试图自己解析它,如果你已经在问像这样的琐碎问题,当然不要这样做。@BalusC问比写真正错误的东西好。。。我正在使用ApacheCommonsFileUpload处理多部分,但不确定如何在处理多部分和默认表单之间切换。哦。。在添加了新的html表单之后,我完全忽略了这一点,谢谢。