HttpServletRequest#getParts()jsp始终返回空集合

马特奥·梅斯基尼(Matteo Meschini)

我必须开发一个jsp来执行文件上传。我正在使用Tomcat7和servlet-api 3.0。如果我从Eclipse中的服务器启动Tomcat,则jsp效果很好,否则,如果我将战争部署在tomcat中,则jsp无法正常工作。问题是request.getParts()始终为空集合。
我究竟做错了什么?

这是我的jsp:

    <%@page import="javax.servlet.http.Part" %>
    <%@page import="java.util.Collection"%>

    <html>
    <head>
    </head>

    <body>
      <h1>Test File Upload</h1>
      <br/>

        <form action="test.jsp" name="fileForm" id="fileForm" method="post" enctype="multipart/form-data" >
            <input type="text" name="text-test" value="" />
            <input type="file" name="upload" />
            <input type="submit" id="commit" name="commit" value="Upload">
        </form>
<%
    try {
        Part part = request.getPart("upload");
        System.out.println(part == null ? "part upload is null" : "part upload size : " + part.getSize());
        Collection<Part> parts = request.getParts();
        System.out.println("parts size: " + parts.size());
        for (Part p: request.getParts()) {
            out.write("Part name: " + p.getName() + "<br/>\n");
            out.write("<br/>\n");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
%>
    </body>
    </html>

这是控制台输出:

part upload is null
parts size: 0
韦罗

必须使用multipartconfigweb.xml@MultipartConfig批注为servlet显式启用multipart功能

如果未启用,request.getParts()则永远不会返回非空集。(请注意,对于从Eclipse开始的Tomcat,我无法重现您的发现)。

为JSP页面执行此配置很棘手(不知道是否@MultipartConfig可以应用于JSP页面),但这是使用的解决方案web.xml:鉴于您的JSP页面是/test.jsp您需要添加的:

<servlet>
    <description></description>
    <servlet-name>testjsp</servlet-name>
    <jsp-file>/test.jsp</jsp-file>
    <multipart-config>
        <!-- enter your values -->
        <max-file-size>123456</max-file-size> 
        <max-request-size>123456</max-request-size>
        <file-size-threshold>123456</file-size-threshold>
    </multipart-config>
</servlet>
<servlet-mapping>
    <servlet-name>testjsp</servlet-name>
    <url-pattern>/test.jsp</url-pattern>
</servlet-mapping>

在您的JSP页面中,您还必须检查请求是否为multipart-request,否则getParts()会引发错误:

<%
String contentType = request.getContentType();
if ((contentType != null) && contentType.startsWith("multipart/form-data"))
{
    Part part = request.getPart("upload");
   ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从方法返回空集合

来自分类Dev

从方法返回空集合

来自分类Dev

为什么查询返回空集合?

来自分类Dev

Laravel 数据库查询返回空集合

来自分类Dev

laravel 5.4 我的查询返回空集合

来自分类Dev

为什么认为返回空集合是一种好习惯?

来自分类Dev

ASP.NET Web API在json响应中返回空集合

来自分类Dev

实体框架6,渴望加载嵌套关系返回空集合

来自分类Dev

Laravel雄辩的一对一关系返回空集合

来自分类Dev

DFT_P03的nHapi GT1段返回空集合

来自分类Dev

Windows 10 IoT - DeviceInformation.FindAllAsync() 返回空集合

来自分类Dev

NavigationProperty.GetDependentProperties()返回一个空集合

来自分类Dev

NavigationProperty.GetDependentProperties()返回一个空集合

来自分类Dev

区分WebParam中的空集合和空集合

来自分类Dev

空集合视图Swift

来自分类Dev

LINQ 到空集合

来自分类Dev

Groups API 空集合

来自分类Dev

我正在尝试从我的数据库中获取具有一对多关系的“experiencias”,但它返回空集合,我该如何解决?

来自分类Dev

ViewModel在asp.net mvc 5中发回空集合

来自分类Dev

使用Gson从JSON删除空集合

来自分类Dev

Automapper空集合变为空

来自分类Dev

“java.lang.UnsupportedOperationException:空集合”

来自分类Dev

SelectNodes 返回空集

来自分类Dev

gridfs“列表”方法返回带有非空集合的空列表

来自分类Dev

Automapper返回一个空集合,我想要一个空值

来自分类Dev

空集合vs空返回?内存使用量的缺点有多大?

来自分类Dev

实体框架6-延迟加载预期为空集合,但返回null(仅在测试中)

来自分类Dev

反向边总是返回一个多对多关系的空集合

来自分类Dev

Mongoose model.find() 返回一个空集合

Related 相关文章

热门标签

归档