蘇州培訓(xùn)網(wǎng) > 蘇州JAVA培訓(xùn)機(jī)構(gòu) > 蘇州其然軟件開發(fā)培訓(xùn)
首頁 培訓(xùn)網(wǎng) 最新資訊 熱門問答

蘇州其然軟件開發(fā)培訓(xùn)

13013833891 免費(fèi)試聽

您當(dāng)前的位置: 蘇州IT認(rèn)證培訓(xùn) > 蘇州JAVA培訓(xùn) > 張家港java開發(fā)培訓(xùn)要多少錢啊

張家港java開發(fā)培訓(xùn)要多少錢啊_JAVA培訓(xùn)

¥詳詢

班制:周末班

蘇州其然軟件開發(fā)
上課(咨詢)地址:蘇州市昆山市震川西路111號名仕大廈
報(bào)名咨詢 預(yù)約試聽
課程介紹
張家港java開發(fā)培訓(xùn)要多少錢啊
一個(gè)合格的未來 Java工程師

張家港java開發(fā)培訓(xùn)要多少錢啊

張家港java開發(fā)培訓(xùn)要多少錢啊

自學(xué)java與java培訓(xùn)該如何選擇

張家港java開發(fā)培訓(xùn)要多少錢啊

從事IT培訓(xùn)行業(yè)這些年,身邊經(jīng)常有朋友來咨詢,問現(xiàn)在是否可以加入這個(gè)高薪行業(yè),Java學(xué)習(xí)難不難,需要哪些條件?

在軟件開發(fā)設(shè)計(jì)行業(yè)當(dāng)中,使用**多的編程語言就屬Java軟件開發(fā)了,很多人都想在Java編程開發(fā)領(lǐng)域?qū)で笠环莨ぷ鳌?/span>

Java是當(dāng)前世界上比較流行的計(jì)算機(jī)編程語言,Java徹底改變了人們的生活,國內(nèi)的開發(fā)人才需求量仍然在不斷的增長,主要原因還是在于移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,衍生出一大批的新生企業(yè),創(chuàng)業(yè)公司,預(yù)計(jì)在未來5年內(nèi)Java軟件開發(fā)人才的需求將會(huì)遠(yuǎn)大于供給,其中java程序員、java工程師**為缺乏。

自學(xué)java與java培訓(xùn)是兩個(gè)繞不開的話題,兩者的區(qū)別,前者知識是自己搜尋的,買書看或者網(wǎng)上找視頻看,而后者,技術(shù)知識是老師教的,作為一個(gè)普通大學(xué)生實(shí)際上任何人都能夠自學(xué),只不過聰明程度和堅(jiān)持的時(shí)間長短不同,花費(fèi)的時(shí)間長一點(diǎn)短一點(diǎn)而已。

學(xué)習(xí)關(guān)乎到時(shí)間和金錢,沒有效果和質(zhì)量的培訓(xùn),其實(shí)是沒有任何意義的。Java培訓(xùn)班有哪些呢?市面上的Java培訓(xùn)良莠不齊,選擇時(shí)應(yīng)該慎重些。Java致力于打造符合企業(yè)需求的全能型人才。課程定位定位中高級JAVA開發(fā)工程師,課程內(nèi)容涉及面廣,內(nèi)容深。課程涵蓋了Java、Web,數(shù)據(jù)庫,企業(yè)流行框架,Java等企業(yè)**佳實(shí)踐、云計(jì)算大數(shù)據(jù)課程、內(nèi)容由淺入深,剖析原理,讓學(xué)員掌握實(shí)用技術(shù),做企業(yè)和社會(huì)需要的稀缺人才。

此外,Java培訓(xùn)將為你提供就業(yè)保障,開設(shè)有就業(yè)指導(dǎo)課,設(shè)有專門的就業(yè)指導(dǎo)老師,在畢業(yè)前期,畢業(yè)之際,就業(yè)老師會(huì)為你做專門的就業(yè)指導(dǎo),更有職業(yè)素養(yǎng)課程,不僅將你打造成Java開發(fā)技術(shù)達(dá)人,更是一位懂得職場之道的合格就業(yè)者。還有豐富的Java學(xué)習(xí)視頻免費(fèi)為你提供學(xué)習(xí)。

大數(shù)據(jù)核心知識

張家港java開發(fā)培訓(xùn)要多少錢啊

大數(shù)據(jù)核心知識

Hadoop基礎(chǔ)

Hadoop1介紹

hadoop1架構(gòu)

hadoop2架構(gòu)(對比hadoop1)

hadoop2環(huán)境搭建

HDFS操作

yarn操作

Hadoop應(yīng)用

Hive數(shù)據(jù)倉庫

zookeeper系統(tǒng)服務(wù)

HBase非關(guān)系型數(shù)據(jù)庫

Sqoop數(shù)據(jù)庫抽取工具

Flume日志抽取工具

Spark基礎(chǔ)

環(huán)境搭建

Spark平臺介紹

RDD彈性分布式數(shù)據(jù)集

Scala編程

Spark應(yīng)用

Spark-SQL組件

DataFrame組件

課程優(yōu)勢

1.真實(shí)的企業(yè)項(xiàng)目;

2.目前企業(yè)中應(yīng)用廣泛的技術(shù)路線;

3.部分Spark源碼剖析,從源碼層面提升問題解決能力。

4.從hadoop1到hadoop2機(jī)制原理詳細(xì)解說;

5.生產(chǎn)環(huán)境hadoop集群調(diào)優(yōu)經(jīng)驗(yàn);

6.企業(yè)真實(shí)項(xiàng)目實(shí)戰(zhàn);

本階段學(xué)習(xí)目標(biāo)

1.了解hadoop機(jī)制原理 ;

2.了解hadoop集群搭建過程;

3.了解Hdfs API使用以及mr編程模型;

4.了解hive、hbase、sqoop、flume等組件的使用方法;

5.Spark平臺的優(yōu)勢以及Spark集群的搭建過程;

6.Scala程序設(shè)計(jì)基礎(chǔ);

7.Spark-SQL和DataFrame API詳解。

本階段學(xué)習(xí)效果

1.了解hadoop集群的搭建過程;

2.能夠**mr和hive來實(shí)現(xiàn)簡單的數(shù)據(jù)清洗的業(yè)務(wù)需求;

3.能夠了解數(shù)據(jù)的抽取,轉(zhuǎn)換,清洗,建模,入庫過程;

4.掌握Spark集群的搭建;

5.掌握函數(shù)式編程思想,能夠根據(jù)業(yè)務(wù)需求編寫高質(zhì)量的Scala程序;

6.掌握大規(guī)模離線數(shù)據(jù)的計(jì)算、分析能力。

Apache FileUpload 文件上傳組件API解讀-2


>

1.RFC1867協(xié)議

**初的 http 協(xié)議中,沒有上傳文件方面的功能。RFC1867("Form-based File Upload in HTML".)

為 http 協(xié)議添加了這個(gè)功能??蛻舳说臑g覽器,如 Microsoft IE, Mozila, Opera 等,按照此規(guī)范將用 戶指定的文件發(fā)送到服務(wù)器。服務(wù)器端的網(wǎng)頁程序,如 php, asp, jsp 等,可以按照此規(guī)范,解析出用戶 發(fā)送來的文件。


2.1客戶端

簡單來說,RFC1867規(guī)范要求http協(xié)議增加了file類型的input標(biāo)簽,用于瀏覽需要上傳的文件。同時(shí) 要求FORM表單的enctype屬性設(shè)置為“multipart/form-data”,method屬性設(shè)置為“post”即可,下面是我們文 件上傳頁面的表單代碼:

<form action="<%=request.getContextPath()%>/servlet/SimpleUpload" enctype="multipart/form-data"  method="post">

文本1:<input type="text" name="text1" value="文本1"><br>

文件2:<input type="text" name="text2" value="文本2"><br>

文件1:<input type="file" name="file1"><br>

文件2:<input type="file" name="file2"><br>

文件2:<input type="file" name="file3"><br>

<input type="submit" value="開始上傳">

</form>

2.2 服務(wù)器端

一個(gè)文件上傳請求的消息實(shí)體由一系列根據(jù) RFC1867("Form-based File Upload in HTML".)編碼的項(xiàng)目 (文本參數(shù)和文件參數(shù))組成。自己編程來解析獲取這些數(shù)據(jù)是非常麻煩的,還需要了解RFC1867規(guī)范對請 求數(shù)據(jù)編碼的相關(guān)知識。FileUpload 可以幫助我們解析這樣的請求,將每一個(gè)項(xiàng)目封裝成一個(gè)實(shí)現(xiàn)了FileItem 接口的對象,并以列表的形式返回。所以,我們只需要了解FileUpload的API如何使用即可,不用管它們的底 層實(shí)現(xiàn)。讓我們來看一個(gè)簡單文件上傳處理代碼:

DiskFileItemFactory factory new DiskFileItemFactory();

ServletFileUpload uploader new ServletFileUpload(factory);

List<FileItem> list uploader.parseRequest(request);

if (item.isFormField()){

// 處理普通表單域

String field item.getFieldName();//表單域名

String value item.getString("GBK");

else {

//將臨時(shí)文件保存到指定目錄

String fileName item.getName();//文件名稱

String filepath "您希望保存的目錄/"   fileName;

item.write(new File(filepath));//執(zhí)行保存

}

    怎么樣?簡單吧!下面我們來繼續(xù)了解一些必須了解的API。

FileItem接口

org.apache.commons.fileupload.disk.DiskFileItem實(shí)現(xiàn)了FileItem接口,用來封裝單個(gè)表單字段元素的 數(shù)據(jù)。**調(diào)用FileItem 定義的方法可以獲得相關(guān)表單字段元素的數(shù)據(jù)。我們不需要關(guān)心DiskFileItem的具 體實(shí)現(xiàn),在程序中可以采用FileItem接口類型來對DiskFileItem對象進(jìn)行引用和訪問。FileItem類還實(shí)現(xiàn)了 Serializable接口,以支持序列化操作。

下圖是一個(gè)文件上傳表單:

...............

...............

...............

上圖表單提交的http數(shù)據(jù)包的內(nèi)容:

POST /demo/servlet/SimpleUpload HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-Flash, application/msWord,  application/vnd.ms-Excel, application/vnd.ms-Powerpoint, */*

Referer: http://127.0.0.1:8080/demo/simpleUpload.jsp

Accept-Language: zh-cn

Content-Type: multipart/form-data; boundary=---------------------------7da1772c5504c6

UA-CPU: x86

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)

Host: 127.0.0.1:8080

Content-Length: 184423

Connection: Keep-Alive

Cache-Control: no-cache

Cookie: JsessionID=BD8E58E5BAD9B559C0262077FB5E0B4E

-----------------------------7da1772c5504c6

Content-Disposition: form-data; name="text1"

鄭州蜂鳥科技有限公司

-----------------------------7da1772c5504c6

Content-Disposition: form-data; name="text2"

申林

-----------------------------7da1772c5504c6

Content-Disposition: form-data; name="file1"; filename="C:\Documents and Settings\All UsersDocuments\My Pictures\示例圖片\Blue hills.jpg"

Content-Type: image/pjpeg

大量二進(jìn)制數(shù)據(jù)內(nèi)容,無法復(fù)制 …….

-----------------------------7da1772c5504c6

Content-Disposition: form-data; name="file2"; filename="C:\Documents and Settings\All UsersDocuments\My Pictures\示例圖片\Sunset.jpg"

Content-Type: image/pjpeg

大量二進(jìn)制數(shù)據(jù)內(nèi)容,無法復(fù)制 …….

-----------------------------7da1772c5504c6

Content-Disposition: form-data; name="file3"; filename="C:\Documents and Settings\All UsersDocuments\My Pictures\示例圖片\Water lilies.jpg"

Content-Type: image/pjpeg

大量二進(jìn)制數(shù)據(jù)內(nèi)容,無法復(fù)制 …….


從**行,也就是請求行,我們可以看出這是一個(gè)post請求。在請求頭部部分,我們可以看到這樣 一個(gè)頭部信息:

Content-Type: multipart/form-data; boundary=---------------------------7da1772c5504c6

其中紅色部分說明該請求是一個(gè)multipart/form-data類型即多媒體類型的請求。藍(lán)色部分boundary的值定義了一個(gè)字段分隔界線。

在消息體部分可以看出每個(gè)表單字段元素?cái)?shù)據(jù)之間采用字段分隔界線進(jìn)行分割,兩個(gè)分隔界線間的內(nèi)容稱為一個(gè)分區(qū),每個(gè)分區(qū)中的內(nèi)容包括兩部分,一部分是對表單字段元素進(jìn)行描述的描述頭,另外一部分是表單字段元素的主體內(nèi)容。 


**對比描述頭,我們可以很容易區(qū)分文本字段和文件字段。不管是文件字段還是文本字段,都有name屬性,即該字段作為一個(gè)表單域的名字。而文件字段還有filename,即上傳文件本身的名字。另外,還有conten-type屬性用于指明文件的類型。


每一個(gè)表單字段,不管它是文本還是文件,都被封裝成 FileItem 對象,我們稱之為文件項(xiàng),當(dāng)文件項(xiàng)數(shù)據(jù)內(nèi)容尺寸小于DiskFileItemFactory 的sizeThreshold 屬性設(shè)置的臨界值時(shí),直接保存在內(nèi)存中;否則,將數(shù)據(jù)流以臨時(shí)文件的形式,保存在 DiskFileItemFactory 的 repository 屬性指定的臨時(shí)目錄中。臨時(shí)文件名形如“upload_00000005(八位或八位以上的數(shù)字).tmp”。

FileItem類內(nèi)部提供了維護(hù)臨時(shí)文件名中的數(shù)值不重復(fù)的機(jī)制,以保證了臨時(shí)文件名的唯一性。另外,如何保證臨時(shí)文件能被及時(shí)清除,釋放寶貴的系統(tǒng)資源,是非常重要的,我們將在后面講解。 

FileItem類常用的方法:

1.  boolean isFormField()方法

isFormField方法用于判斷FileItem類對象封裝的數(shù)據(jù)是一個(gè)普通文本表單字段,還是一個(gè)文件表單字 段,如果是普通表單字段則返回true,否則返回false。

2.  String getName()方法 

getName方法用于獲得文件上傳字段中的文件名,即表單字段元素描述頭中的filename屬性值,如“C:\Documents and Settings\All Users\Documents\My Pictures\示例圖片\Sunset.jpg”。

如果FileItem類對象對應(yīng)的是普通表單字段,getName方法將返回null。即使用戶沒有**網(wǎng)頁表單中的文件字段傳遞任何文件,但只要設(shè)置了文件表單字段的name屬性,瀏覽器也會(huì)將文件字段的信息傳遞給服務(wù)器,只是文件名和文件內(nèi)容部分都為空,但這個(gè)表單字段仍然對應(yīng)一個(gè)FileItem對象,此時(shí),getName方法返回結(jié)果為空字符串"",讀者在調(diào)用Apache文件上傳組件時(shí)要注意考慮這個(gè)情況。


注意:上面的數(shù)據(jù)包是**IE提交,所以是完整的路徑和名稱。如  C:\Documents and Settings\All Users\Documents\My Pictures\示例圖片\Sunset.jpg。如果是其它瀏覽 器,如火狐和Chromium,則僅僅是名字,沒有路徑,如Sunset.jpg。


3.  String getFieldName()方法

getFieldName方法用于返回表單字段元素描述頭的name屬性值,也是表單標(biāo)簽name屬性的值。例 如“name=file1”中的“file1”。

4.  void write(File file)方法

write方法用于將FileItem對象中保存的主體內(nèi)容保存到某個(gè)指定的文件中。如果FileItem對象中的主 體內(nèi)容是保存在某個(gè)臨時(shí)文件中,該方法順利完成后,臨時(shí)文件有可能會(huì)被清除。該方法也可將普通 表單字段內(nèi)容寫入到一個(gè)文件中,但它主要用途是將上傳的文件內(nèi)容保存在本地文件系統(tǒng)中。

5.  String getString()方法

getString方法用于將FileItem對象中保存的數(shù)據(jù)流內(nèi)容以一個(gè)字符串返回,它有兩個(gè)重載的定義形式:

public java.lang.String getString()

public java.lang.String getString(java.lang.String encoding)

throws java.io.UnsupportedEncodingException

前者使用缺省的字符集編碼將主體內(nèi)容轉(zhuǎn)換成字符串,后者使用參數(shù)指定的字符集編碼將主體內(nèi)容 轉(zhuǎn)換成字符串。如果在讀取普通表單字段元素的內(nèi)容時(shí)出現(xiàn)了中文亂碼現(xiàn)象,請調(diào)用第二個(gè) getString方法,并為之傳遞正確的字符集編碼名稱。

6.  String getContentType()方法

getContentType 方法用于獲得上傳文件的類型,即表單字段元素描述頭屬性“Content-Type”的值, 如“image/jpeg”。如果FileItem類對象對應(yīng)的是普通表單字段,該方法將返回null。

7.  boolean isInMemory()方法

isInMemory方法用來判斷FileItem對象封裝的數(shù)據(jù)內(nèi)容是存儲(chǔ)在內(nèi)存中,還是存儲(chǔ)在臨時(shí)文件中, 如果存儲(chǔ)在內(nèi)存中則返回true,否則返回false。

8.  void delete()方法

delete方法用來清空FileItem類對象中存放的主體內(nèi)容,如果主體內(nèi)容被保存在臨時(shí)文件中, delete方法將刪除該臨時(shí)文件。

盡管當(dāng)FileItem對象被垃圾收集器收集時(shí)會(huì)自動(dòng)清除臨時(shí)文件,但及時(shí)調(diào)用delete方法可以更早的 清除臨時(shí)文件,釋放系統(tǒng)存儲(chǔ)資源。另外,當(dāng)系統(tǒng)出現(xiàn)異常時(shí),仍有可能造成有的臨時(shí)文件被永久 保存在了硬盤中。

9.  InputStream getInputStream()方法

    以流的形式返回上傳文件的數(shù)據(jù)內(nèi)容。

10. long getSize()方法

返回該上傳文件的大小(以字節(jié)為單位)。

DiskFileItemFactory類

將請求消息實(shí)體中的每一個(gè)項(xiàng)目封裝成單獨(dú)的 (FileItem接口的實(shí)現(xiàn)) 對象的任務(wù) 由 org.apache.commons.fileupload.FileItemFactory 接口的默認(rèn)實(shí)現(xiàn) org.apache.commons.fileupload.disk.DiskFileItemFactory 來完成。當(dāng)上傳的文件項(xiàng)目比較小時(shí),直接保 存在內(nèi)存中(速度比較快),比較大時(shí),以臨時(shí)文件的形式,保存在磁盤臨時(shí)文件夾(雖然速度慢些,但是內(nèi)存資源是有限的)。

屬性

1) public static final int DEFAULT_SIZE_THRESHOLD 

將文件保存在內(nèi)存還是磁盤臨時(shí)文件夾的默認(rèn)臨界值,值為10240,即10kb。

2) PRivate File repository:

用于配置在創(chuàng)建文件項(xiàng)目時(shí),當(dāng)文件項(xiàng)目大于臨界值時(shí)使用的臨時(shí)文件夾,默認(rèn)采用系統(tǒng)默認(rèn)的臨時(shí)文件路徑,可以**系統(tǒng)屬性 java.io.tmpdir 獲取。如下代碼:

System.getProperty("java.io.tmpdir");

3) private int sizeThreshold:

用于保存將文件保存在內(nèi)存還是磁盤臨時(shí)文件夾的臨界值


構(gòu)造方法

1) public DiskFileItemFactory():

采用默認(rèn)臨界值和系統(tǒng)臨時(shí)文件夾構(gòu)造文件項(xiàng)工廠對象。

2) public DiskFileItemFactory(int sizeThreshold,File repository):

采用參數(shù)指定臨界值和系統(tǒng)臨時(shí)文件夾構(gòu)造文件項(xiàng)工廠對象。

FileItem createItem() 方法

根據(jù)DiskFileItemFactory相關(guān)配置將每一個(gè)請求消息實(shí)體項(xiàng)目創(chuàng)建 成 實(shí)例,并返回。 該方法從來不需要我們親自調(diào)用,F(xiàn)ileUpload組件在解析請求時(shí)內(nèi)部使用。

void setSizeThreshold(int sizeThreshold)

Apache文件上傳組件在解析上傳數(shù)據(jù)中的每個(gè)字段內(nèi)容時(shí),需要臨時(shí)保存解析出的數(shù)據(jù),以便 在后面進(jìn)行數(shù)據(jù)的進(jìn)一步處理(保存在磁盤特定位置或插入數(shù)據(jù)庫)。因?yàn)镴ava虛擬機(jī)默認(rèn)可以使 用的內(nèi)存空間是有限的,超出限制時(shí)將會(huì)拋出“java.lang.OutOfMemoryError”錯(cuò)誤。如果上傳的文件 很大,例如800M的文件,在內(nèi)存中將無法臨時(shí)保存該文件內(nèi)容,Apache文件上傳組件轉(zhuǎn)而采用臨時(shí) 文件來保存這些數(shù)據(jù);但如果上傳的文件很小,例如600個(gè)字節(jié)的文件,顯然將其直接保存在內(nèi)存中 性能會(huì)更加好些。

setSizeThreshold方法用于設(shè)置是否將上傳文件已臨時(shí)文件的形式保存在磁盤的臨界值(以字節(jié) 為單位的int值),如果從沒有調(diào)用該方法設(shè)置此臨界值,將會(huì)采用系統(tǒng)默認(rèn)值10KB。對應(yīng)的 getSizeThreshold() 方法用來獲取此臨界值。

void setRepository(File repository)

setRepositoryPath方法用于設(shè)置當(dāng)上傳文件尺寸大于setSizeThreshold方法設(shè)置的臨界值時(shí),將文件以 臨時(shí)文件形式保存在磁盤上的存放目錄。有一個(gè)對應(yīng)的獲得臨時(shí)文件夾的 File getRespository() 方法。

注意:當(dāng)從沒有調(diào)用此方法設(shè)置臨時(shí)文件存儲(chǔ)目錄時(shí),默認(rèn)采用系統(tǒng)默認(rèn)的臨時(shí)文件路徑,可以 **系統(tǒng)屬性 java.io.tmpdir 獲取。如下代碼:

System.getProperty("java.io.tmpdir");

Tomcat系統(tǒng)默認(rèn)臨時(shí)目錄為“<tomcat安裝目錄>/temp/”。

ServletFileUpload 

org.apache.commons.fileupload.servlet.ServletFileUpload類是Apache文件上傳組件處理文件上傳的 核心高級類(所謂高級就是不需要管底層實(shí)現(xiàn),暴露給用戶的簡單易用的接口)。

使用其 parseRequest(HttpServletRequest) 方法可以將**表單中每一個(gè)HTML標(biāo)簽提交的數(shù)據(jù)封裝 成一個(gè)FileItem對象,然后以List列表的形式返回。使用該方法處理上傳文件簡單易用。

如果你希望進(jìn)一步提高新能,你可以采用 getItemIterator 方法,直接獲得每一個(gè)文件項(xiàng)的數(shù)據(jù)輸 入流,對數(shù)據(jù)做直接處理。

在使用ServletFileUpload對象解析請求時(shí)需要根據(jù)DiskFileItemFactory對象的屬性 sizeThreshold(臨 界值)和repository(臨時(shí)目錄) 來決定將解析得到的數(shù)據(jù)保存在內(nèi)存還是臨時(shí)文件中,如果是臨時(shí) 文件,保存在哪個(gè)臨時(shí)目錄中?。

所以,我們需要在進(jìn)行解析工作前構(gòu)造好DiskFileItemFactory對象,**ServletFileUpload對象的構(gòu)造方法或setFileItemFactory()方法設(shè)置 ServletFileUpload對象的 fileItemFactory屬性。

ServletFileUpload繼承結(jié)構(gòu):

java.lang.Object

|—org.apache.commons.fileupload.FileUploadBase

     |—org.apache.commons.fileupload.FileUpload

|—org.apache.commons.fileupload.servlet.ServletFileUpload

構(gòu)造方法:

1) public ServletFileUpload():

構(gòu)造一個(gè)未初始化的實(shí)例,需要在解析請求之前先調(diào)用setFileItemFactory()方法設(shè)置 fileItemFactory屬性。

2) public ServletFileUpload(FileItemFactory fileItemFactory):

構(gòu)造一個(gè)實(shí)例,并根據(jù)參數(shù)指定的FileItemFactory 對象,設(shè)置 fileItemFactory屬性。

ServletFileUpload類常用方法:

1. public void setSizeMax(long sizeMax)方法

setSizeMax方法繼承自FileUploadBase類,用于設(shè)置請求消息實(shí)體內(nèi)容(即所有上傳數(shù)據(jù))的**大 尺寸限制,以防止客戶端惡意上傳超大文件來浪費(fèi)服務(wù)器端的存儲(chǔ)空間。其參數(shù)是以字節(jié)為單位的 long型數(shù)字。

在請求解析的過程中,如果請求消息體內(nèi)容的大小超過了setSizeMax方法的設(shè)置值,將會(huì)拋出 FileUploadBase內(nèi)部定義的SizeLimitExceededException異常(FileUploadException的子類)。如:

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:  the request was rejected because its size (1649104) exceeds the configured  maximum (153600)

該方法有一個(gè)對應(yīng)的讀方法:public long getSizeMax()方法。

2. public void setFileSizeMax(long fileSizeMax)方法

setFileSizeMax方法繼承自FileUploadBase類,用于設(shè)置單個(gè)上傳文件的**大尺寸限制,以防止客戶 端惡意上傳超大文件來浪費(fèi)服務(wù)器端的存儲(chǔ)空間。其參數(shù)是以字節(jié)為單位的long型數(shù)字。該方法有一個(gè) 對應(yīng)的讀方法:public long geFileSizeMax()方法。

在請求解析的過程中,如果單個(gè)上傳文件的大小超過了setFileSizeMax方法的設(shè)置值,將會(huì)拋出 FileUploadBase內(nèi)部定義的FileSizeLimitExceededException異常(FileUploadException的子類)。如:

org.apache.commons.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file1 exceeds its  maximum permitted size of 51200 characters.

3. public List parseRequest(javax.servlet.http.HttpServletRequest req)

parseRequest 方法是ServletFileUpload類的重要方法,它是對HTTP請求消息體內(nèi)容進(jìn)行解析的入口 方法。它解析出FORM表單中的每個(gè)字段的數(shù)據(jù),并將它們分別包裝成獨(dú)立的FileItem對象,然后將這 些FileItem對象加入進(jìn)一個(gè)List類型的集合對象中返回。

該方法拋出FileUploadException異常來處理諸如文件尺寸過大、請求消息中的實(shí)體內(nèi)容的類型不 是“multipart/form-data”、IO異常、請求消息體長度信息丟失等各種異常。每一種異常都是 FileUploadException的一個(gè)子類型。

4. public FileItemIterator getItemIterator(HttpServletRequest request)

getItemIterator方法和parseRequest 方法基本相同。但是getItemIterator方法返回的是一個(gè)迭代 器,該迭代器中保存的不是FileItem對象,而是FileItemStream 對象,如果你希望進(jìn)一步提高新能, 你可以采用 getItemIterator 方法,直接獲得每一個(gè)文件項(xiàng)的數(shù)據(jù)輸入流,做底層處理;如果性能不 是問題,你希望代碼簡單,則采用parseRequest方法即可。 

5. public stiatc boolean isMultipartContent(HttpServletRequest req)

isMultipartContent方法方法用于判斷請求消息中的內(nèi)容是否是“multipart/form-data”類型,是則返 回true,否則返回false。isMultipartContent方法是一個(gè)靜態(tài)方法,不用創(chuàng)建ServletFileUpload類的實(shí)例對 象即可被調(diào)用。

6. getFileItemFactory()和setFileItemFactory(FileItemFactory)方法

方法繼承自FileUpload類,用于設(shè)置和讀取fileItemFactory屬性。

7. public void setProgressListener(ProgressListener pListener)

設(shè)置文件上傳進(jìn)度監(jiān)聽器。關(guān)于監(jiān)聽器的具體內(nèi)容,將在后面學(xué)習(xí)。該方法有一個(gè)對應(yīng)的讀取 方法:ProgressListener getProgressListener()。

8.public void setHeaderEncoding()方法

在文件上傳請求的消息體中,除了普通表單域的值是文本內(nèi)容以外,文件上傳字段中的文件路 徑名也是文本,在內(nèi)存中保存的是它們的某種字符集編碼的字節(jié)數(shù)組,Apache文件上傳組件在讀取 這些內(nèi)容時(shí),必須知道它們所采用的字符集編碼,才能將它們轉(zhuǎn)換成正確的字符文本返回。

setHeaderEncoding方法繼承自FileUploadBase類,用于設(shè)置上面提到的字符編碼。如果沒有設(shè)置, 則對應(yīng)的讀方法getHeaderEncoding()方法返回null,將采用HttpServletRequest設(shè)置的字符編碼,如果 HttpServletRequest的字符編碼也為null,則采用系統(tǒng)默認(rèn)字符編碼??梢?*一下語句獲得系統(tǒng)默認(rèn) 字符編碼:

System.getProperty("file.encoding"));


相關(guān)推薦:


蘇州JAVA培訓(xùn)   蘇州JAVA培訓(xùn)班   蘇州JAVA培訓(xùn)機(jī)構(gòu)

體驗(yàn)課預(yù)約試聽

倒計(jì)時(shí)

12:00:00

課程熱線:

13013833891
在線咨詢

客服在線時(shí)間:早上9點(diǎn)~下午6點(diǎn),其他時(shí)間請?jiān)诰€預(yù)約報(bào)名或留言,謝謝!

蘇州JAVA

免費(fèi)體驗(yàn)課開班倒計(jì)時(shí)

11: 41: 09

稍后會(huì)有專業(yè)老師給您回電,請保持電話暢通

咨詢電話:13013833891
推薦機(jī)構(gòu) 全國分站 更多課程

本周僅剩 個(gè)試聽名額

請鍵入信息,稍后系統(tǒng)將會(huì)把領(lǐng)獎(jiǎng)短信發(fā)至您的手機(jī)

申請?jiān)嚶犆~

QQ:1413838287
加盟合作:0755-83654572