zoukankan      html  css  js  c++  java
  • 如何开发一个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);
    	}
    	
    	
    	
    	
    }
    
  • 相关阅读:
    OPPO R9sPlus MIFlash线刷TWRP Recovery ROOT详细教程
    OPPO R11 R11plus系列 解锁BootLoader ROOT Xposed 你的手机你做主
    努比亚(nubia) M2青春版 NX573J 解锁BootLoader 并进入临时recovery ROOT
    华为 荣耀 等手机解锁BootLoader
    青橙 M4 解锁BootLoader 并刷入recovery ROOT
    程序员修炼之道阅读笔03
    冲刺8
    典型用户模板分析
    学习进度八
    冲刺7
  • 原文地址:https://www.cnblogs.com/everxs/p/4536727.html
Copyright © 2011-2022 走看看