(Spring MVC)上载multipartfile方法POST返回404错误

detoro84

我有一个带有更新文件格式的Spring应用程序:

<form class="form-inline" role="form" method="POST" enctype="multipart/form-data"
                  action="<c:url value="upload" />">
                <div class="form-group">
                    <label class="control-label"> <spring:message code="file.to.upload"/> </label>
                </div>
                <div class="form-group">
                    <input type="file" name="file" id="file" class="btn btn-primary">
                </div>
                <div class="form-group">
                    <input
                            type="submit"
                            class="btn btn-primary"
                            value=<spring:message code="upload"/>>

                </div>
            </form>

但是,当我提交表单时,出现404错误,描述中指出resource()不可用。请注意,它不会说“(/ upload)”,而只是一个空的()。

我的(未到达)控制器是:

@Controller
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public class WebController implements Serializable {
...

@RequestMapping(value="upload", method=RequestMethod.POST)
public String handleFileUpload(
        @RequestParam("file") MultipartFile file, ModelMap model) throws     CloneNotSupportedException {
    System.out.println("Handling file");
    ... //never reaches here
    return screen(model);
}

我的mvc-dispatcher-servlet.xml中有这个:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:jpa="http://www.springframework.org/schema/data/jpa"
   xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
   xmlns="http://www.springframework.org/schema/beans"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<context:component-scan base-package="package.*"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<jpa:repositories base-package="package"/>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>
<mvc:annotation-driven/>
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize">
        <value>104857600</value>
    </property>
    <property name="maxInMemorySize">
        <value>4096</value>
    </property>
</bean>

<bean id="messageSource"
      class="org.springframework.context.support.ReloadableResourceBundleMessageSource" p:basename="resources/locale/strings">
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

<bean id="localeChangeInterceptor"
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="locale"/>
</bean>

<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="es"/>
    <property name="cookieName" value="myAppLocaleCookie"></property>
    <property name="cookieMaxAge" value="3600"></property>
</bean>

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
    <property name="interceptors">
        <list>
            <ref bean="localeChangeInterceptor" />
        </list>
    </property>
</bean>

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="locale"></property>
    </bean>
</mvc:interceptors>

<mvc:resources mapping="/resources/**" location="/resources/"/>

<!-- EntityManagerFactory -->
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
    <property name="persistenceUnitName" value="persistenceUnit"/>
    <property name="dataSource" ref="dataSource"/>
</bean>


<!-- Enable @Transactional annotation -->
<tx:annotation-driven/>

和web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns="http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<!-- Spring Security Configuration File -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-security.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlet and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>

<!-- Spring Security Filter -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


<!--End security-->

<!-- Spring MVC - START -->
<filter>
    <filter-name>encoding-filter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encoding-filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
    <welcome-file>/</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>60</session-timeout>
</session-config>

在Maven Pom文件中:

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springapp</groupId>
<artifactId>Project</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Project</name>

<properties>
    <jdk.version>1.6</jdk.version>
    <spring.version>3.2.8.RELEASE</spring.version>
    <spring.security.version>3.2.3.RELEASE</spring.security.version>
    <jstl.version>1.2</jstl.version>
    <mysql.connector.version>5.1.30</mysql.connector.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>


    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.2.0.RELEASE</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.3.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.3.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.2.9</version>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20080701</version>
    </dependency>

    <!-- Everything Else for database-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.connector.version}</version>
    </dependency>

    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.11.0</version>
    </dependency>

    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>3.0</version>
    </dependency>


    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10-FINAL</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.10-FINAL</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.10-FINAL</version>
    </dependency>

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.3.2</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
    </dependency>

</dependencies>

<build>
    <finalName>Pronject</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*Tests.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

谢谢

detoro84

问题是因为我正在使用带有CSRF保护的Spring Security。

此Spring文档中有解决方案。最后,我解决了包括CSRF令牌在内的问题,如下所示:

<form action="./upload?${_csrf.parameterName}=${_csrf.token}" method="post" enctype="multipart/form-data">

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(Spring MVC)上载multipartfile方法POST返回404错误

来自分类Dev

上载文件时不支持Spring MVC错误405请求方法'POST'

来自分类Dev

Spring MVC:如何返回自定义404错误页面?

来自分类Dev

Spring MVC REST通过返回JSON处理错误的网址(404)

来自分类Dev

Spring MVC MultipartFile问题

来自分类Dev

在 Spring MVC 5 中使用 MultipartFile 总是返回 null

来自分类Dev

Spring boot ,MultipartFile 方法

来自分类Dev

在将Spring Security添加到Spring MVC项目后,主页不断返回404错误

来自分类Dev

AJAX在Spring MVC中返回404

来自分类Dev

Spring MVC 后端返回 404 (Rest)

来自分类Dev

Spring MVC @ModelAttribute方法返回“错误请求” 400

来自分类Dev

Spring MVC 404错误http请求

来自分类Dev

使用tomcat 6的Spring MVC 404错误

来自分类Dev

Spring MVC 404错误http请求

来自分类Dev

Spring MVC请求处理错误(404)

来自分类Dev

从Ajax到Spring MVC的请求。404错误

来自分类Dev

由于错误的视图,Spring MVC 呈现 404

来自分类Dev

如何通过在Spring MVC中返回自定义的错误页面来全局处理404异常?

来自分类Dev

如何通过在Spring MVC中返回自定义的错误页面来全局处理404异常?

来自分类Dev

Spring MVC返回错误的Http状态代码

来自分类Dev

Spring MVC返回视图抛出500错误

来自分类Dev

如何使用@ControllerAdvice在Spring MVC中返回ResponseEntity的方法中返回错误消息

来自分类Dev

Spring @RequestMapping,404错误

来自分类Dev

具有.jsp / .jsp后缀的Spring MVC链接返回404

来自分类Dev

带有.jsp / .jsp后缀的Spring MVC链接返回404

来自分类常见问题

Spring MVC与Spring Boot与Spring

来自分类Dev

Spring MVC:返回CSS

来自分类Dev

捕获 404 错误 spring boot 以返回自定义 html

来自分类Dev

javascript调用错误的spring post方法

Related 相关文章

  1. 1

    (Spring MVC)上载multipartfile方法POST返回404错误

  2. 2

    上载文件时不支持Spring MVC错误405请求方法'POST'

  3. 3

    Spring MVC:如何返回自定义404错误页面?

  4. 4

    Spring MVC REST通过返回JSON处理错误的网址(404)

  5. 5

    Spring MVC MultipartFile问题

  6. 6

    在 Spring MVC 5 中使用 MultipartFile 总是返回 null

  7. 7

    Spring boot ,MultipartFile 方法

  8. 8

    在将Spring Security添加到Spring MVC项目后,主页不断返回404错误

  9. 9

    AJAX在Spring MVC中返回404

  10. 10

    Spring MVC 后端返回 404 (Rest)

  11. 11

    Spring MVC @ModelAttribute方法返回“错误请求” 400

  12. 12

    Spring MVC 404错误http请求

  13. 13

    使用tomcat 6的Spring MVC 404错误

  14. 14

    Spring MVC 404错误http请求

  15. 15

    Spring MVC请求处理错误(404)

  16. 16

    从Ajax到Spring MVC的请求。404错误

  17. 17

    由于错误的视图,Spring MVC 呈现 404

  18. 18

    如何通过在Spring MVC中返回自定义的错误页面来全局处理404异常?

  19. 19

    如何通过在Spring MVC中返回自定义的错误页面来全局处理404异常?

  20. 20

    Spring MVC返回错误的Http状态代码

  21. 21

    Spring MVC返回视图抛出500错误

  22. 22

    如何使用@ControllerAdvice在Spring MVC中返回ResponseEntity的方法中返回错误消息

  23. 23

    Spring @RequestMapping,404错误

  24. 24

    具有.jsp / .jsp后缀的Spring MVC链接返回404

  25. 25

    带有.jsp / .jsp后缀的Spring MVC链接返回404

  26. 26

    Spring MVC与Spring Boot与Spring

  27. 27

    Spring MVC:返回CSS

  28. 28

    捕获 404 错误 spring boot 以返回自定义 html

  29. 29

    javascript调用错误的spring post方法

热门标签

归档