美文网首页
form表单提交

form表单提交

作者: ImushroomT | 来源:发表于2017-10-18 22:31 被阅读0次

    form表单提交主要是两种类型,分别是application/x-www-form-urlencoded 与 multipart/form-data。前者用于普通参数提交,后者用于包含文件的提交。对于后者spring mvc需要使用CommonsMultipartResolver进行解析。xml配置如下:

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- one of the properties available; the maximum file size in bytes -->
            <property name="defaultEncoding" value="utf-8" />
            <property name="maxUploadSize" value="10485760000" />
            <property name="maxInMemorySize" value="40960" />
        </bean>
    

    CommonsMultipartResolver会分别取出文件和普通参数进行参数匹配。解析方法代码如下:

    public MultipartHttpServletRequest resolveMultipart(final HttpServletRequest request) throws MultipartException {
            Assert.notNull(request, "Request must not be null");
            if (this.resolveLazily) {
                return new DefaultMultipartHttpServletRequest(request) {
                    @Override
                    protected void initializeMultipart() {
                        MultipartParsingResult parsingResult = parseRequest(request);
                        setMultipartFiles(parsingResult.getMultipartFiles());
                        setMultipartParameters(parsingResult.getMultipartParameters());
                        setMultipartParameterContentTypes(parsingResult.getMultipartParameterContentTypes());
                    }
                };
            }
            else {
                MultipartParsingResult parsingResult = parseRequest(request);
                return new DefaultMultipartHttpServletRequest(request, parsingResult.getMultipartFiles(),
                        parsingResult.getMultipartParameters(), parsingResult.getMultipartParameterContentTypes());
            }
        }
    

    DispatcherServlet中会调用如下代码来调用CommonsMultipartResolver的resolveMultipart

    processedRequest = checkMultipart(request);
    

    相关文章

      网友评论

          本文标题:form表单提交

          本文链接:https://www.haomeiwen.com/subject/ftlyuxtx.html