Spring MVC Error 405上传文件时不支持请求方法’POST’

我想我已经看到网上关于这个主题的每一篇文章,但我无法纠正这个错误:(

我有一个使用Spring Security和Spring Mvc的Web应用程序,我想创建一个表单来上传图像(你必须记录下来才能这样做)但是无论我用我在论坛上找到的代码扭曲我的代码,我都有一个错误405上载文件时不支持请求方法“POST”

这是我的applicationContext.xml:

                    

我的控制器:

 @Controller public class FileUploadController { @RequestMapping(value="/bo/uploadImage", method = RequestMethod.GET) public String uploadImage() { return "bo_uploadimage"; } @RequestMapping(value="/bo/uploadImage", method = RequestMethod.POST) public String uploadImage(@RequestParam(value = "file")FileUploadBean file, BindException errors, Map model) { System.out.println("#############################" + file); return "bo_uploadimage"; } } public class FileUploadBean{ private byte[] file; public void setFile(byte[] file) { this.file = file; } public byte[] getFile() { return file; } } 

JSP:

   Upload a file please   

Please upload a file

我认为问题来自我的控制器,也许是因为我将Spring 4注释与Spring3 conf混淆了?

谢谢你的帮助!!

编辑mvc-dispatcher-servlet.xml

          /pages/   .jsp        

好的,我终于找到了问题所在。

首先,我使用了几乎所有教程中提到的MultipartFile,并使用@ModelAttribute将此MultipartFile映射到我的表单。 但问题并非如此:我只是清理了这个问题,使其更加标准化。

然后,我在DEBUG日志中发现了一些错误:

 20:58:38,370 DEBUG CsrfFilter:95 - Invalid CSRF token found for http://localhost:8080/meltdown/bo/createnews 

我使用spring建议来纠正它:(参见spring security csrf doc)

将CSRF保护与multipart / form-data一起使用有两种选择。 每个选项都有其权衡。

在Spring Security之前放置MultipartFilter

包含CSRF令牌

我使用了第二个选项并在表单的操作URL末尾放置了?$ {_ csrf.parameterName} = $ {_ csrf.token}

它可以工作,但我必须在所有这些东西下挖掘一下…并检查什么是真的,如果我需要csrf。

谢谢你们每一个人的帮助