程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> common-upload上傳文件功效封裝類分享

common-upload上傳文件功效封裝類分享

編輯:關於JAVA

common-upload上傳文件功效封裝類分享。本站提示廣大學習愛好者:(common-upload上傳文件功效封裝類分享)文章只能為提供參考,不一定能成為您想要的結果。以下是common-upload上傳文件功效封裝類分享正文


面試被問及到js中的不雅察者形式,這玩藝兒早就懂得過,可以說是靜態說話中異常有效的一個設計形式,異常忸捏的沒有體系的研討過。不外沒緊要,哪裡不會補哪裡,連忙著手,用所會的說話都完成一遍。

不雅察者形式

關於不雅察者形式,《松本行弘的法式世界》講的異常清晰:不雅察者形式是當某個對象狀況產生變更時,依存於該狀況的全體對象主動獲得告訴,被不雅察者和不雅察者們是一對多的關系。書中還舉了一個異常易懂的例子:獲得體系以後時光並輸入到敕令行中。假如要硬編碼也很簡略,界說一個辦法,先獲得時光,然後再處置展現。如許獲得時光的功效根本就不克不及復用了,由於帶了個處置展現的拖油瓶。

假如用不雅察者形式則可以如許:界說兩個類,一個用於計時,獲得以後時光;另外一個用於展現時光。展現時光的類就是不雅察者,如許做的利益是下降互相的依附性。第一個類轉變後不須要處置任何事物,只須要收回告訴告知它的不雅察者們,詳細事物由它們處置。好比有一天我們想換種情勢展現時光,或許用多種方法展現時光,完整不須要牽扯到第一個類。

PS:《松本行弘的法式世界》真是一本好書。起先是想把這本書當作ruby教程來讀的,後來發明基本不是,書頂用異常易懂的說話深刻淺出的疏解白了許多深邃的哲學思惟。固然這本書對我這類剛入門的菜鳥來講簡直沒有甚麼適用價值,然則讀完以後有種名頓開的感到,是一次異常好的浏覽體驗。

ruby完成

用ruby完成不雅察者形式的確簡略清楚的使人發指,上代碼:


require "observer"
#被不雅察者
class Subject
    include Observable
    def notify
        #do sth
        changed #更新標記為真
        notify_observers(*args) #假如更新標記為真,挪用不雅察者帶參數args的辦法
    end
end
#不雅察者
class Obs
    #回調函數,似乎只能這麼叫
    def update
        #do sth
    end
end
#實例
sub = Subject.new
sub.add_observer(Obs.new)
sub.notify

沒錯,就是這麼簡略。。。
重要是依附Observer模塊,除下面用到的,此模塊還有以下接口:

1.delete_observer(obj) 刪除特定的不雅察者
2.delete_observers 刪除全體不雅察者
3.count_observers 獲得不雅察者數量
4.changed? 檢討更新標記

php完成

php完成起來也不費事:

//被不雅察者
class Subject
{
    private $_observers;
    public function __construct() {
        $this->_observers = array();
    }
    public function add_observer($obs) {
        $this->_observers[] = $obs;
    }
    public funtion delete_observer($bos) {
        $index = array_search($bos, $this->_observers);
        unset($this->_observers[$index]);
    }
    public function notify_observers() {
        foreach($this->_observers as $v) {
            $v->update();
        }
    }
}
//不雅察者
class Observer
{
    public function __construct() {
        do sth;
    }
    public function update() {
        do sth;
    }
}
//實例
$sub = new Subject();
$obs = new Observer();
$sub->add_observer($obs);
$sub->notify_observers();

js完成

js完成起來也不費事,就是得寫些對象函數便利用,好比刪除數組指定的元素。上面只用最簡略的完成辦法。

//被不雅察者
function Subject() {
    var _this = this;
    this.observers = [];
    this.addObserver = function(obj) {
        _this.observers.push(obj);
    }
    this.deleteObserver = function(obj) {
        var length = _this.observers.length;
        for(var i = 0; i < length; i++) {
            if(_this.observers[i] === obj) {
                _this.observers.splice(i, 1);
            }
        }
    }
    this.notifyObservers = function() {
        var length = _this.observers.length;
        console.log(length)
        for(var i = 0; i < length; i++) {
            _this.observers[i].update();
        }
    }
}
//不雅察者
function Observer() {
    this.update = function() {
        alert(1)
    }
}
var sub = new Subject();
var obs = new Observer();
sub.addObserver(obs);
sub.notifyObservers();
var sub = new Subject();

結論:ruby可讓我們專注於法式設計自己,而不是法式的語法和特征。js靈巧多變,是一門完整的編程說話除生孩子甚麼都能完成,就是玩起來要下點工夫。php嘛,中規中矩,沒啥好說的。

這仨法式都跑起來後算是完全明確這個設計形式了。

�分歧
                        // IE 下獲得的是文件的完全途徑
                        if(fileName.contains("\\")) {
                            // 截獲得到完全途徑後的文件名
                         fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
                        }
      //文件年夜小
      long fileSize = fileItem.getSize();
      //檢討擴大名
      String extName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                        //文件屬性bean
      fileBean = new FileBean();
      fileBean.setFileName(fileName);
      fileBean.setExtName(extName);
      fileBean.setFileSize(fileSize);
      SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
      //文件名轉拼音
      String pingyingFileName = ChineseSpelling.getSpell(fileName);
      String newFileName = df.format(new Date()) + "_" + pingyingFileName;

      fileBean.setFilePath(savePath+newFileName);
      fileBean.setFieldName(fileItem.getFieldName());
      fileBean.setNewFileName(newFileName);
      File f1 = new File(savePath);
      if (!f1.exists()) {
       f1.mkdirs();
      }
      System.out.println("新文件途徑:"+newFileName);
      File uploadedFile = new File(savePath, newFileName);
      fileItem.write(uploadedFile);
      // 獲得根目次對應的真什物理途徑
      // 保留文件在辦事器的物理磁盤中
      System.out.println("上傳文件的年夜小:" + fileItem.getSize());
      System.out.println("上傳文件的類型:" + fileItem.getContentType());
      System.out.println("上傳文件的稱號:" + fileName);
      fileBeanList.add(fileBean);
      uploadStatus = "上傳勝利";
     } else {
      uploadStatus = "沒有選擇文件!";
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
   uploadStatus =  "上傳文件掉敗!";
  }
 }


 public List<FileBean> getFileBeanList() {
  return fileBeanList;
 }

 public void setFileBeanList(List<FileBean> fileBeanList) {
  this.fileBeanList = fileBeanList;
 }

 public HttpServletRequest getRequest() {
  return request;
 }

 public void setRequest(HttpServletRequest request) {
  this.request = request;
 }

 public String getSavePath() {
  return savePath;
 }

 public void setSavePath(String savePath) {
  this.savePath = savePath;
 }

 public Map<String, String> getFormDatas() {
  return formDatas;
 }

 public void setFormDatas(Map<String, String> formDatas) {
  this.formDatas = formDatas;
 }

 public String getUploadStatus() {
  return uploadStatus;
 }

 public void setUploadStatus(String uploadStatus) {
  this.uploadStatus = uploadStatus;
 }

 public long getMaxSize() {
  return maxSize;
 }

 public void setMaxSize(long maxSize) {
  this.maxSize = maxSize;
 }

 public String getAllowExts() {
  return allowExts;
 }

 public void setAllowExts(String allowExts) {
  this.allowExts = allowExts;
 }

 public String getUnAllowExts() {
  return unAllowExts;
 }

 public void setUnAllowExts(String unAllowExts) {
  this.unAllowExts = unAllowExts;
 }
}

應用對象類


// 實例化上傳對象類
UploadTools uploadTools = new UploadTools();
uploadTools.setSavePath(savePath);
uploadTools.setRequest(wu.request);
uploadTools.uploadFiles();
Map<String, String> fds = uploadTools.getFormDatas();
List<FileBean> fileBeanList =uploadTools.getFileBeanList();

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved