如何开发一个java开源框架-----Jvn框架之实现文件的上传以及方法封装(第六讲)八哥实力讲解

前言

一 、

博主正在教大家如何开发一个javaEE框架(Jvn框架),博客里有完整的开发视频,每一篇博文都是一个知识点,帮助大家理解框架:

博客首页:http://www.cnblogs.com/everxs/

本次内容视频以及源码下载地址:http://pan.baidu.com/s/1pJsoGDd

1,为什么要使用java的框架,以及框架能带来什么好处。  2,帮助你们理解框架的原理。

3,框架是如何实现的。                                            4,怎样去开发一个属于自己的java框架。

二、
目前开发的框架名字叫Jvn框架,本博主的名字:八哥解说,带领大家入门开发框架。
Jvn框架包含了以下特点:
1,mvc框架,类似StringMvc或者是struts那样的web框架,从此不在写servlet,从此不用在web.xml写servlet配置。

2,orm框架,类似hibernate或者ibatis那样的框架,从此不在为复杂的jdbc操作烦恼。

3,spring框架,类似spring的框架,从此不在为bean的管理烦恼;

4,cache缓存机制。

5,定时调度。

6,自动生成在线文档。

7,拦截器

三、
每一篇博文都有视频详细解以及对应的源码,而且视频是连续的,想学习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);

	}

	

	

	

	

}

 

你可能感兴趣的:(java)