前言
一 、
博主正在教大家如何開發一個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);
}
}
