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);
    	}
    	
    	
    	
    	
    }
    
  • 相关阅读:
    jQuery Dialog and timepicker显示层的问题
    js、PHP将分数字符串转换为小数
    jqgrid动态显示/隐藏某一列
    Oracle查询每天固定时间段的数据
    Python安装pandas
    Python version 2.7 required, which was not found in the registry
    python刷剑指offer(1-20)(一刷)
    图像预处理(含计算机视觉概述)
    案例分析
    (七)目标检测算法之SSD
  • 原文地址:https://www.cnblogs.com/everxs/p/4536727.html
Copyright © 2011-2022 走看看