首页 > 学院 > 开发设计 > 正文

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

2019-11-15 00:21:40
字体:
来源:转载
供稿:网友
如何开发一个java开源框架-----Jvn框架之实现文件的上传以及方法封装(第六讲)八哥实力讲解前言

一、

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

博客首页:http://www.VEVb.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 blocke.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);}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表