Restful接口接收数据案例

1.构建工程

Restful接口接收数据案例_第1张图片

2. 实现FileuploadRestful类,继承Spring框架中的MultiActionController类,实现多文件接收

package com.cloud.controller;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;



@Controller  
@RequestMapping("/fileUploadController") 
public class FileuploadRestful extends MultiActionController{
	
	static MultipartFile clientFiles ;
	
	//http://localhost:8080/DataService/upload.jsp
	@RequestMapping(method=RequestMethod.POST, value="/uploadFiles/{uniqueField}/{dateTime}")
	 public void uploadFiles(@PathVariable String uniqueField,@PathVariable String dateTime,HttpServletRequest request, HttpServletResponse response,     
	            @RequestParam("clientFile") MultipartFile clientFile, HttpSession session) throws IllegalStateException, IOException {
	      JSONObject result = new JSONObject();

		if (!clientFile.isEmpty()) {  
	        	clientFiles = clientFile;
	            System.out.println("================="+clientFile.getSize());  
	            System.out.println("clientFiles="+clientFiles);
		        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
	
		        MultiValueMap multiValueMap = multipartRequest.getMultiFileMap();  
		        List file = multiValueMap.get("clientFile");
		        System.out.println("file="+file);
		        String filename = file.get(0).getOriginalFilename();
		        SaveFileFromInputStream(file.get(0).getInputStream(),"C://sleep/",filename); 
				System.out.println("success");
				result.put("status", "success");
				result.put("info", "upload file success");
	        } else{
	    		result.put("status", "failed");
				result.put("info", "please upload file!");       	
	        }	
			writeToClient(response,result);
	    }

	private void SaveFileFromInputStream(InputStream inputStream,
			String path, String filename) throws IOException {
		   FileOutputStream fs=new FileOutputStream( path + "/"+ filename);   
	        byte[] buffer =new byte[1024*1024];   
	        int bytesum = 0;   
	        int byteread = 0;    
	        while ((byteread=inputStream.read(buffer))!=-1)   
	        {   
	           bytesum+=byteread;   
	           fs.write(buffer,0,byteread);   
	           fs.flush();   
	        }    
	        fs.close();   
	        inputStream.close();   
		
	}  
	private void writeToClient(HttpServletResponse response,Object resp)
	{
		response.setContentType("text/html;charset=utf-8");
		PrintWriter writer = null;
		try{
			writer = response.getWriter();
			writer.write(resp.toString());
			writer.flush();
			
		}catch(Exception e)
		{
			e.printStackTrace();
		}finally
		{
			if(writer!=null) writer.close();
		}
	}

	
	
}

3. 编写rest-servlet.xml文件,如下:



        
	
	
		
		
		
		
		
		
		
		
		
		
		
			
				
				
				
			
		
		
			
				
                
				
					
						
					
				
			
		
	

4. 加载到web.xml文件中,代码如下:



  Pro
  
    webAppRootKey
    webapp.DADS.root
  
  
    version
    2.4
  
  
    releaseTime
    11月27日
  
    log4jRefreshInterval
    60000
  
  
    contextConfigLocation
    WEB-INF/applicationContext.xml
  
  
    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
    
      forceEncoding
      true
    
  
  
    CharacterEncodingFilter
    /*
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    org.springframework.web.util.Log4jConfigListener
  

   
    rest
    org.springframework.web.servlet.DispatcherServlet
    1
  
  
    rest
     *.json
  
  
  
    index.jsp
  
  
    720
  

测试,浏览器输入:http://localhost:8080/DataService/upload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    upload
    
	
	
	    
	
	
	

  
  
  
        

 

你可能感兴趣的:(J2EE核心框架生态)