2011-09-02 106 views
1

我是新来的Spring MVC,虽然不是新的Java和工作主要在Struts2的和Wicket作为我的首选Web开发文件上传

我试图在使用Spring MVC做文件上传的POC这里是我的JSP文件

<form id="fileuploadForm" action="fileupload" method="POST" enctype="multipart/form-data" > 
      <fieldset> 
       <legend>Upload Fields</legend> 

       <input id="file" type="file" name="file" /> 
       <p><button type="submit">Upload</button></p> 

      </fieldset> 
     </form> 

和我的控制器是

@Controller 
@RequestMapping("FileUpload/fileupload") 
public class FileUploadController{ 



    public ModelAndView processUpload(@RequestParam MultipartFile file, WebRequest webRequest, Model model) { 


     String orgFileName = file.getOriginalFilename(); 
     String filePath = "data/input" + orgFileName; 
     ModelMap modelMap = new ModelMap(); 
     System.out.println("*******************************************"); 
     File dest = new File(filePath); 
     try { 
      file.transferTo(dest); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
      modelMap.addAttribute("result", "File uploaded failed:" + orgFileName); 
      return new ModelAndView("results", modelMap); 
       //return "File uploaded failed:" + orgFileName; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      modelMap.addAttribute("result", "File uploaded failed:" + orgFileName); 
      return new ModelAndView("results", modelMap); 
     } 


     modelMap.addAttribute("result", "File uploaded " + orgFileName); 
     return new ModelAndView("results", modelMap); 



    } 
下面

是调度员servlet.xml中进入

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" /> 
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 
    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
     p:suffix=".jsp" /> 

    <bean name="/*" class="com.app.controller.FileUploadController"/> 
</beans> 

我试图谷歌还,但没能获得任何帮助,可能无法找到很好的资源,由于缺乏MVC 春天的知识,在以往任何时候我打我的uplaod按钮,我得到404错误此URL

http://localhost:7777/FileUpload/fileupload 

,我相信我在做一些配置错误,但不能指出来,在这个任何帮助将是非常有益的

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    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"> 
    <display-name>SpringExample17</display-name> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>WEB-INF/dispatcher-servlet.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list>  
</web-app> 

在此先感谢

+0

你能不能也请发表您的'web.xml'文件。 – nfechner

+0

有什么异常?文件上传了吗? – Bozho

+0

@nfechner:请参阅我的更新后的帖子 –

回答

3

有几件事情需要注意:

  • 你只映射到您的Spring Dispatcher的.htm结尾的URL,因此Controller无法看到您的请求。
  • 如果FileUpload是Web-App的名称,则需要将其从@RequestMapping注释中删除。
  • <bean name="/*" class="com.app.controller.FileUploadController"/>应改为<bean name="/fileupload.htm" class="com.app.controller.FileUploadController"/>

HTH

1

我总是开始我的映射以正斜杠,所以尝试:

@RequestMapping("/FileUpload/fileupload")