• springMVC文件上传优化


    1. 新建web project

    2. 填 jar,注意新加入两个上传文件的jar, commons-io, commons-fileupload

    3. 改写web.xml 

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>	
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      
      <servlet>
      	<servlet-name>springMVC</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      	<init-param>
      		<param-name>contextConfigLocation</param-name>
      		<param-value>classpath*:config/spring-servlet.xml</param-value>
      	</init-param>
      	<load-on-startup>1</load-on-startup>
      </servlet>
      
      <filter>  
            <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>  
            <url-pattern>/*</url-pattern>  
        </filter-mapping>
      
      
      <servlet-mapping>
      	<servlet-name>springMVC</servlet-name>
      	<url-pattern>/</url-pattern>
      </servlet-mapping>
      
    </web-app>
    

    4. 新增config包, 新建spring-servlet.xml

       新增了上传文件需要的bean 

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"    
        xmlns:context="http://www.springframework.org/schema/context"    
        xmlns:mvc="http://www.springframework.org/schema/mvc"    
        xsi:schemaLocation="     
               http://www.springframework.org/schema/beans     
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
               http://www.springframework.org/schema/context     
               http://www.springframework.org/schema/context/spring-context-3.0.xsd    
               http://www.springframework.org/schema/mvc     
               http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
        <!-- 注解扫描包 -->
        <context:component-scan base-package="com.tgb.web.controller" />      
          
        <!-- 开启注解 -->
        <mvc:annotation-driven/>
       
        <!-- 静态资源访问 -->
        <mvc:resources location="/img/" mapping="/img/**"/>
        <mvc:resources location="/js/" mapping="/js/**"/>
        <mvc:resources location="/css/" mapping="/css/**"/>
       
        	
        <!-- ViewResolver 视图解析器 --> 
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/> 
            <property name="suffix" value=".jsp"/> 
        </bean>
        <!-- 上传文件 -->
         <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
              <property name="defaultEncoding"  value="UTF-8"/> 
              <property name="maxUploadSize"    value="1048576000"/> 
              <property name="maxInMemorySize"  value="40960"/> 
        </bean> 
         
    </beans>
    

    5. 写controller方法, uploadController.java

    package com.tgb.web.controller;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Date;
    import java.util.Iterator;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;
    import org.springframework.web.multipart.commons.CommonsMultipartFile;
    import org.springframework.web.multipart.commons.CommonsMultipartResolver;
    
    @Controller
    @RequestMapping("/file")
    public class UploadController {
    	@RequestMapping("/upload")
    	public String upload(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) throws IOException{
    		System.out.println("filename--->"+file.getOriginalFilename());
    		if(!file.isEmpty()){
    			try {
    				FileOutputStream os = new FileOutputStream("D:/"+new Date().getTime()+file.getOriginalFilename());
    				InputStream in =  file.getInputStream();
    				int b = 0;
    				while((b=in.read())!=-1){
    					os.write(b);
    				}
    				os.flush();
    				os.close();
    				in.close();
    			} catch (FileNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		return "/success"; 
    	}
    	
    	@RequestMapping("/upload2")
    	public String upload2(HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException{
    		CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    		if(multipartResolver.isMultipart(request)){
    			MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
    			Iterator<String> iter = multiRequest.getFileNames();
    			if(iter.hasNext()){				
    				MultipartFile file = multiRequest.getFile((String)iter.next());
    				if(file!=null){
    					 	String fileName="demoUpload"+file.getOriginalFilename();
    					    String path = "D:/" + fileName;					    
    					    File localFile = new File(path);					    
    					    file.transferTo(localFile);
    				}
    			}
    		}
    		return "/success"; 
    	}
    	
    	@RequestMapping("/toUpload")
    	public String toUpload(){
    		return "/upload"; 
    	}
    }
    

      

    6. 写jsp文件, upload.jsp 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
        <title>My JSP 'upload.jsp' starting page</title>
      </head>   
      <body>
    	  <h> 添加用户 </h> <br>
    	  <form name="fileForm" action="/springMVCUpload/file/upload2" method="post" enctype="multipart/form-data">
    	  	选择文件: <input type="file" name="file">	  	
    	  	<input type="submit" value="上传">
    	  </form>
       		
      </body>
    </html>
    

    还有succuss.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
        <title></title>
      </head>  
      <body>
    	  上传文件成功
      </body>
    </html>
    

      

    7. 地址栏验证

    http://localhost:8080/springMVCUpload/file/toUpload
    

      

        

      

  • 相关阅读:
    java1.5新特性
    [转载]传智播客_SQL入门
    集合类的应用
    多线程的应用
    包的使用
    异常的应用finally与总结
    自定义异常以及runtime类
    异常的处理
    SpringMVC_05 利用spring框架来处理异常
    SpringMVC_04 拦截器 【拦截器的编程步骤】【session复习?】
  • 原文地址:https://www.cnblogs.com/wujixing/p/5604058.html
Copyright © 2020-2023  润新知