如何開發一個java開源框架-----Jvn框架之實現文件的上傳以及方法封裝(第六講)八哥實力講解

前言

一 、java

博主正在教你們如何開發一個javaEE框架(Jvn框架),博客裏有完整的開發視頻,每一篇博文都是一個知識點,幫助你們理解框架:web

博客首頁:http://www.cnblogs.com/everxs/spring

本次內容視頻以及源碼下載地址:http://pan.baidu.com/s/1pJsoGDd數據庫

1,爲何要使用java的框架,以及框架能帶來什麼好處。  2,幫助大家理解框架的原理。apache

3,框架是如何實現的。                                            4,怎樣去開發一個屬於本身的java框架。緩存

2、
目前開發的框架名字叫Jvn框架,本博主的名字:八哥解說,帶領你們入門開發框架。
Jvn框架包含了如下特色:
1,mvc框架,相似StringMvc或者是struts那樣的web框架,今後不在寫servlet,今後不用在web.xml寫servlet配置。mvc

2,orm框架,相似hibernate或者ibatis那樣的框架,今後不在爲複雜的jdbc操做煩惱。框架

3,spring框架,相似spring的框架,今後不在爲bean的管理煩惱;學習

4,cache緩存機制。this

5,定時調度。

6,自動生成在線文檔。

7,攔截器

3、
每一篇博文都有視頻詳細解以及對應的源碼,並且視頻是連續的,想學習Jvn框架是如何開發的,建議從第一篇博文 Jvn入門讀起。

本次博文內容

Recall:上節課講到到了如何自定義Annotation和實現攔截器

這節課咱們來實現:

1,文件的上傳封裝,已經上傳文件中表單普通參數的封裝。

2,經常使用方法的封裝

實現的思路

1,先導入 commons-fileupload-1.3.1.jar,commons-io-2.4.jar這兩個包。

2,而後在JvnController裏面編寫getFile()和getFiles()方法。

3,傳進 保存目錄 ,保存文件名 進行文件的保存。

4,將表單中的普通參數放進paramMap裏面。

5,經過getFormParam()獲取上傳文件時的普通參數。

 

如下是內容的視頻下載地址,以及源碼地址:

 

http://pan.baidu.com/s/1pJsoGDd

 

Ps:視頻跟代碼都會持續更新,但願你們喜歡,多多支持。 

    QQ:245223343  永遠的八哥

 

下面附上我寫的代碼:

記住先倒入Jar包:commons-fileupload-1.3.1.jar,commons-io-2.4.jar。個人源碼裏面有能夠直接下載。

如下是JvnController 類代碼:

package com.jvn.core;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.jvn.kit.FileKit;
import com.jvn.kit.MapKit;
import com.jvn.kit.StrKit;

/**
 * controller的父類
 * @author Administrator
 *
 */
public class JvnController {
	/**
	 * 建立Controller對象的時候注入兩個屬性
	 */
	private HttpServletRequest request;
	private HttpServletResponse response;
	
	private SimpleDateFormat SDF_DATE_TIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	private SimpleDateFormat SDF_DATE = new SimpleDateFormat("yyyy-MM-dd");
	
	private Map<String,String> paramMap = new HashMap<String, String>();
	
	public HttpServletRequest getRequest() {
		return request;
	}
	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}
	public HttpServletResponse getResponse() {
		return response;
	}
	public void setResponse(HttpServletResponse response) {
		this.response = response;
	}
	
	/**
	 * 下面是一些輸入的方法
	 */
	/**
	 * 轉int
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public int getInt(String paramName,int defaultValue){
		int result = defaultValue;
		try{
			result = Integer.parseInt(getParam(paramName));
			
		}catch(Exception e){
			
		}
		 
		return result;
	}
	/**
	 * 轉int
	 * @param paramName
	 * @return
	 */
	public int getInt(String paramName){

		int result = Integer.parseInt(getParam(paramName));	 
		return result;
	}
	/**
	 * 轉double
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public double getDouble(String paramName,double defaultValue){
		double result = defaultValue;
		try{
			result = Double.parseDouble(getParam(paramName));
			
		}catch(Exception e){
			
		}
		 
		return result;
	}
	/**
	 * 轉double
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public double getDouble(String paramName){

		double result = Double.parseDouble(getParam(paramName));	 
		return result;
	}
	/**
	 * 轉float
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public float getFloat(String paramName,float defaultValue){
		float result = defaultValue;
		try{
			result = Float.parseFloat(getParam(paramName));
			
		}catch(Exception e){
			
		}
		 
		return result;
	}
	/**
	 * 轉float
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public float getFloat(String paramName){

		float result = Float.parseFloat(getParam(paramName));	 
		return result;
	}
	/**
	 * 轉boolen
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public boolean getBoolean(String paramName){

		boolean result = Boolean.parseBoolean(getParam(paramName));	 
		return result;
	}
	
	/**
	 * 轉boolean
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public boolean getBoolean(String paramName,boolean defaultValue){
		boolean result = defaultValue;
		try{
			result = Boolean.parseBoolean(getParam(paramName));
			
		}catch(Exception e){
			
		}
		 
		return result;
	}
	/**
	 * 轉date
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public Date getDate(String paramName ,Date defaultValue){
		Date date = defaultValue;
		try{
			date = SDF_DATE.parse(getParam(paramName));
		}catch(Exception e){
			
		}
		return date;
	}
	/**
	 * 轉date
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public Date getDate(String paramName){
		
		 Date date = null;
		try {
			date = SDF_DATE.parse(getParam(paramName));
		} catch (ParseException e) {
			
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	
		return date;
	}
	/**
	 * 轉date
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public Date getDateTime(String paramName ,Date defaultValue){
		Date date = defaultValue;
		try{
			date = SDF_DATE_TIME.parse(getParam(paramName));
		}catch(Exception e){
			
		}
		return date;
	}
	/**
	 * 轉date
	 * @param paramName
	 * @param defaultValue
	 * @return
	 */
	public Date getDateTime(String paramName){
		
		 Date date = null;
		try {
			date = SDF_DATE_TIME.parse(getParam(paramName));
		} catch (ParseException e) {
			
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	
		return date;
	}
	
	public String getParam(String paramName){
	
			return request.getParameter(paramName);
	
	}
	public String getParam(String paramName,String defaultValue){
		if(request.getParameter(paramName)==null){
			return defaultValue;
		}else{
			return request.getParameter(paramName);
		}
		

}
	
	
	
	/**
	 * 取出request的paramMap轉成 key -->value[0]的map
	 * @return
	 */
	public Map<String,String> getMap(){
		Map<String,String[]> map = request.getParameterMap();
		Map<String,String> _map = new HashMap<String, String>();
		for(String s : map.keySet()){
			String[] values = map.get(s);
			
			_map.put(s, values[0]);
		}
		return _map;
	}
	/**
	 * 傳進clazz返回對象
	 * @param clazz
	 * @return
	 */
	public Object getObject(Class clazz){
		Object object = MapKit.mapToObject(getMap(), clazz);
		return object;
		
	}
	
	
	
	
	/**
	 * 返回String
	 * @param content
	 */
	public void renderString(String content){
		try {
			response.getWriter().write(content);
		} catch (IOException e) {
		
			e.printStackTrace();
		}
	}
	/**
	 * 返回一個頁面
	 */
	public void render(String view){
		try {
			getRequest().getRequestDispatcher(view).forward(getRequest(),getResponse());
		} catch (Exception e) {
			
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
	/**
	 * 重定向到一個Url
	 * @param actionName
	 */
	public void redirect(String actionName){
		try {
			getResponse().sendRedirect(actionName);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 獲取上傳過來的文件,此處須要增長 commons-fileupload.jar,commons-io.jar
	 * @param dirPath
	 * @param fileName
	 * @param maxSize 1024*1024*1M
	 * @return
	 */
	public void getFile(String dirPath,String fileNamePrefix,int maxSize){
		try{
			DiskFileItemFactory diskFactory = new DiskFileItemFactory();  
            // threshold 極限、臨界值,即硬盤緩存 1M  
            diskFactory.setSizeThreshold(40 * 1024 * 1024);
            String temPath = request.getRealPath("/tmpFile");
            File dir = new File(temPath);
            if(!dir.exists()){
            	dir.mkdirs();
            }
            System.out.println("臨時文件夾路徑"+temPath);
            // repository 貯藏室,即臨時文件目錄  
            diskFactory.setRepository(new File(temPath));  
          
            ServletFileUpload upload = new ServletFileUpload(diskFactory);  
            upload.setHeaderEncoding(JvnConfig.CONSTANT.getEncoding());
            // 設置容許上傳的最大文件大小 4M  4 * 1024 * 1024
            upload.setSizeMax(maxSize);  
            // 解析HTTP請求消息頭  
            List fileItems = upload.parseRequest(request);  
            Iterator iter = fileItems.iterator();  
            List<Object> list =new ArrayList<Object>();
            while(iter.hasNext())  {  
                FileItem item = (FileItem)iter.next();  
                if(item.isFormField())   {  
                	//表單內容
                    String name = item.getFieldName().trim();  
                    String value = item.getString(JvnConfig.CONSTANT.getEncoding());
                    paramMap.put(name, value);
                    
                }else{  
                	//文件內容
                	String type = StrKit.getEndType(item.getName(),"\\.");
                	FileKit.saveFile(dirPath+fileNamePrefix+"."+type, item.getInputStream());
                
                }  
                /**
                 * 這裏將數據保存到數據庫
                 */              
               
            } 
		}catch(Exception e){
			e.getStackTrace();
			throw new RuntimeException(e);
		}
	}
	
	
	/**
	 * 獲取上傳過來的文件,此處須要增長 commons-fileupload.jar,commons-io.jar
	 * @param dirPath
	 * @param fileName
	 * @param maxSize 1024*1024*1M
	 * @return
	 */
	public void getFiles(String dirPath,String []fileNamePrefix,int maxSize){
		try{
			DiskFileItemFactory diskFactory = new DiskFileItemFactory();  
			
            // threshold 極限、臨界值,即硬盤緩存 1M  
            diskFactory.setSizeThreshold(40 * 1024 * 1024);
            String temPath = request.getRealPath("/tmpFile");
            File dir = new File(temPath);
            if(!dir.exists()){
            	dir.mkdirs();
            }
            System.out.println("臨時文件夾路徑"+temPath);
            // repository 貯藏室,即臨時文件目錄  
            diskFactory.setRepository(new File(temPath));  
         
            ServletFileUpload upload = new ServletFileUpload(diskFactory);  
      
            upload.setHeaderEncoding(JvnConfig.CONSTANT.getEncoding());
            // 設置容許上傳的最大文件大小 4M  4 * 1024 * 1024
            upload.setSizeMax(maxSize);  
            // 解析HTTP請求消息頭  
            List fileItems = upload.parseRequest(request);  
            Iterator iter = fileItems.iterator();  
            List<Object> list =new ArrayList<Object>();
            int count = 0;
            while(iter.hasNext())  {  
                FileItem item = (FileItem)iter.next();  
                if(item.isFormField())   {  
                	//表單內容
                    String name = item.getFieldName().trim();  
                    String value = item.getString(JvnConfig.CONSTANT.getEncoding()); 
                    paramMap.put(name, value);
                    
                }else{  
                	//文件內容
                	String type = StrKit.getEndType(item.getName(),"\\.");
                	if(count>(fileNamePrefix.length-1)){
                		count = 0;
                	}
                	FileKit.saveFile(dirPath+fileNamePrefix[count]+"."+type, item.getInputStream());
                	count++;
                
                }  
                /**
                 * 這裏將數據保存到數據庫
                 */              
               
            } 
		}catch(Exception e){
			e.getStackTrace();
			throw new RuntimeException(e);
		}
	}
	/**
	 * 獲取上傳文件,表單的普通參數
	 * @param attr
	 * @return
	 */
	public String getFormParm(String attr){
		return paramMap.get(attr);
	}
	
	
	
	
}
相關文章
相關標籤/搜索