Java EE軟件工程師javascript
認證考試css
面試題大全html
目 錄前端
第一部分 HTML/CSS/JavaScript 1java
1. HTML含義和版本變化... 1jquery
2. 什麼是錨連接... 1git
3. HTML字符實體的做用及其經常使用字符實體... 1web
4. HTML表單的做用和經常使用表單項類型... 2面試
5. 表格、框架、div三種HTML佈局方式的特色... 2ajax
6. form中input設置爲readonly和disabled的區別... 2
7. CSS的定義和做用... 2
8. CSS2經常使用選擇器類型及其含義... 3
9. 引入樣式的三種方式及其優先級別... 3
10. 盒子模型... 4
11. JavaScript語言及其特色... 4
12. JavaScript經常使用數據類型有哪些... 4
13. Javascript的經常使用對象有哪些... 4
14. DOM和BOM及其關係... 5
15. JavaScript中獲取某個元素的三種方式... 5
16. JavaScript中的三種彈出式消息提醒命令是什麼?. 5
17. setTimeout與setInterval 的區別... 5
18. JavaScript操做CSS的兩種方式... 5
第二部分 Servlet/JSP/JSTL-EL. 6
1. 靜態網頁和動態網頁的聯繫和區別... 6
2. JSP/ASP/PHP的比較... 6
3. CGI/Servlet/JSP的比較... 7
4. Tomcat/Jboss/WebSphere/WebLogic的做用和特色... 8
5. B/S和C/S的含義及其區別... 8
6. 容器的理解... 9
7. HTTP協議工做原理及其特色... 9
8. get和post的區別... 10
9. 如何解決表單提交的中文亂碼問題... 10
10. 絕對路徑、根路徑、相對路徑的含義及其區別... 10
11. 如何現實servlet的單線程模式... 11
12. Servlet的生命週期... 11
13. session和cookie的區別... 12
14. 轉發和重定向的區別... 12
15. JSP的執行過程... 13
16. JSP的9個內置對象及其含義... 13
17. JSP動做有哪些,簡述做用?. 14
18. JSP中動態INCLUDE與靜態INCLUDE的區別... 14
19. page/request/session/application做用域區別... 15
20. JSP和Servlet的區別和聯繫... 15
第三部分 鏈接池/過濾器/監聽器/jQuery/Ajax. 16
1. 爲何要使用鏈接池?... 16
2. 數據庫鏈接池的原理。... 16
3. 談談過濾器原理及其做用?. 17
4. 談談監聽器做用及其分類?. 17
5. jQuery相比JavaScript的優點在哪裏... 18
6. DOM對象和jQuery對象的區別及其轉換... 18
7. jQuery中$的做用主要有哪些... 18
8. Ajax含義及其主要技術... 18
9. Ajax的工做原理... 19
10. JSON及其做用... 19
第四部分 項目開發... 20
1. MVC模式及其優缺點... 20
2. EJB與JavaBean的區別?... 21
3. Oracle完成分頁功能的三層子查詢語句及其含義?... 21
4. MVC模式完成分頁功能的基本思路是什麼?... 21
5. 文件上傳組件Common-fileUpload的經常使用類及其做用?... 21
HTML含義:
Hyper Text Markup Language 超文本標記語言,是一種用來製做「網頁」的簡單標記語言;用HTML編寫的超文本文檔稱爲HTML文檔,HTML文檔的擴展名是html或者htm
版本變化:
1) HTML1.0——在1993年6月做爲IETF工做草案發布(並不是標準)
2) HTML 2.0——1995年11月做爲RFC 1866發佈
3) HTML 3.2——1997年1月14日,W3C推薦標準
4) HTML 4.0——1997年12月18日,W3C推薦標準
5) HTML 4.01(微小改進)——1999年12月24日,W3C推薦標準
6) HTML 5—2014年10月28日,W3C推薦標準HTML文檔結構
錨連接是帶有文本的超連接。能夠跳轉到頁面的某個位置,適用於頁面內容較多,超過一屏的場合 。分爲頁面內的錨連接和頁面間的錨連接 。
例如:
<a name=」1F」>1F</a><a name=」2F」>2F</a>
<a href=」#2F」>跳轉到2F標記位置</a>
說明:
1.在標記位置利用a標籤的name屬性設置標記。
2.在導航位置經過a標籤的href屬性用#開頭加name屬性值便可跳轉錨點位置。
有些字符,好比說「<」字符,在HTML中有特殊的含義,所以不能在文本中使用。想要在HTML中顯示一個小於號「<」,須要用到字符實體:<或者<
字符實體擁有三個部分:一個and符號(&),一個實體名或者一個實體號,最後是一個分號(;)
經常使用字符實體:
顯示結果 |
描述 |
實體名 |
實體號 |
空格 |
|
  |
|
< |
小於 |
< |
< |
> |
大於 |
> |
> |
& |
and符號 |
& |
& |
' |
單引號 |
' (IE不支持) |
' |
" |
引號 |
" |
" |
£ |
英鎊 |
£ |
£ |
¥ |
人民幣元 |
¥ |
¥ |
§ |
章節 |
§ |
§ |
© |
版權 |
© |
© |
表單的做用:
利用表單能夠收集客戶端提交的有關信息。
經常使用表單項類型:
input標籤type屬性 |
功能 |
input標籤type屬性 |
功能 |
text |
單行本框 |
reset |
重置按鈕 |
password |
密碼框 |
submit |
提交按鈕 |
radio |
單選按鈕 |
textarea |
文本域 |
checkbox |
複選框 |
select |
下拉框 |
button |
普通按鈕 |
hidden |
隱藏域 |
|
優勢 |
缺點 |
應用場合 |
表格 |
方便排列有規律、結構均勻的內容或數據 |
產生垃圾代碼、影響頁面下載時間、靈活性不大難於修改 |
內容或數據整齊的頁面 |
框架 |
支持滾動條、方便導航 節省頁面下載時間等 |
兼容性很差,保存時不方便、應用範圍有限 |
小型商業網站、論壇後臺管理 |
Div |
代碼精簡、提升頁面下載速度、表現和內容分離 |
比較靈活、難於控制 |
複雜的不規則頁面、業務種類較多的大型商業網站 |
|
readonly |
disabled |
有效對象 |
.只針對type爲text/password有效 |
對全部表單元素有效 |
表單提交 |
當表單元素設置readonly後,表單提交能將該表單元素的值傳遞出去。 |
當表單元素設置disabled後,表單提交不能將該表單元素的值傳遞出去。 |
CSS的定義:CSS是Cascading Style Sheets(層疊樣式表)的簡稱。
CSS是一系列格式規則,它們控制網頁內容的外觀。CSS簡單來講就是用來美化網頁用的。
CSS的具體做用包括:
1) 使網頁豐富多彩,易於控制。
2) 頁面的精確控制,實現精美、複雜頁面 。
3) 樣式表能實現內容與樣式的分離,方便團隊開發。
4) 樣式複用、方便網站的後期維護。
選擇器名稱 |
案例 |
語法格式 |
標籤選擇器 |
h3{font-size:24px;font-family:"隸書「; } <h3>JSP</h3> |
元素標籤名{樣式屬性} |
類選擇器 |
.red {color:#F00;} <li class="red">Oracle</li> |
. 元素標籤class屬性值{樣式屬性} |
ID選擇器 |
#p1 {background-color:#0F0;} <p id="p1">content</p> |
#元素標籤id屬性值{樣式屬性} |
包含選擇器 |
div h3{color:red;} <div> <h3>CSS層疊樣式表</h3> </div> |
父元素標籤 子元素標籤{ 樣式屬性 } |
|
|
|
子選擇器 |
div>ul{color:blue;} <div> <ul> <li>測試1 <ol> <li>嵌套元素</li> <li>嵌套元素</li> <li>嵌套元素</li> <li>嵌套元素</li> </ol> </li> <li>測試1</li> <li>測試1</li> </ul> </div> |
父元素標籤名>子元素名{ 樣式屬性 } |
三種引用方式:
1. 外部樣式表(存放.css文件中)
不須要style標籤
<link rel=」stylesheet」 href=」引用文件地址」 />
2. 嵌入式樣式表
<style type=「text/css」>
p{color:red;}
</style>
3.內聯樣式
標籤屬性名爲style
<p style=「color:red;」></p>
優先級級別:在一個頁面上,自上而下,後定義優先級高。
盒子模型相似於生活中的盒子,具備4個屬性,外邊距,內邊距,邊框,內容。
外邊距:margin,用於設置元素和其餘元素之間的距離。
內邊距:padding,用於設置元素內容和邊框之間的距離。
邊框:border,用於設置元素邊框粗細,顏色,線型。
內容:width,height,用於設置元素內容顯示的大小。
例如:
<style>
body{
margin: 0; /*取消body默認的外邊距*/
}
#img1{
width:200px; /*設置圖片的寬度*/
border: 2px solid black; /*設置圖片邊框*/
margin: 5px;
/*設置圖片外邊距(表示該圖片與其餘圖片的距離爲5px)*/
padding:10px; /*設置圖片與邊框之間的距離*/
}
#img2{
height: 200px; /* 設置圖片的高度*/
border: 2px solid black; /*設置圖片的邊框*/
margin: 5px; /*設置圖片外邊距*/
padding: 20px; /*設置圖片與邊框之間的距離*/
}
</style>
<img id="img1" src="img/2.jpg" />
<img id="img2" src="img/lss.jpg" />
Javascript一種基於對象(object-based)和事件驅動(Event Driven)的簡單的並具備安全性能的腳本語言。特色:
1) 解釋性: JavaScript不一樣於一些編譯性的程序語言,例如C、C++等,它是一種解釋性的程序語言,它的源代碼不須要通過編譯,而直接在瀏覽器中運行時被解釋。
2) 基於對象: JavaScript是一種基於對象的語言。這意味着它能運用本身已經建立的對象。所以,許多功能能夠來自於腳本環境中對象的方法與腳本的相互做用。
3) 事件驅動:JavaScript能夠直接對用戶或客戶輸入作出響應,無須通過Web服務程序。它對用戶的響應,是以事件驅動的方式進行的。所謂事件驅動,就是指在主頁中執行了某種操做所產生的動做,此動做稱爲「事件」。好比按下鼠標、移動窗口、選擇菜單等均可以視爲事件。當事件發生後,可能會引發相應的事件響應。
4) 跨平臺:JavaScript依賴於瀏覽器自己,與操做環境無關,只要能運行瀏覽器的計算機,並支持JavaScript的瀏覽器就可正確執行。
數值型:整數和浮點數統稱爲數值。例如85或3.1415926等。
字符串型:由0個,1個或多個字符組成的序列。在JavaScript中,用雙引號或單引號括起來表示,如「您好」、‘學習JavaScript’等。 不區分單引號、雙引號。
邏輯(布爾)型:用true或false來表示。
空(null)值:表示沒有值,用於定義空的或不存在的引用。
要注意,空值不等同於空字符串""或0。
未定義(undefined)值:它也是一個保留字。表示變量雖然已經聲明,但卻沒有賦值。
除了以上五種基本的數據類型以外,JavaScript還支持複合數據類型,包括對象和數組兩種。
經常使用對象包括日期對象Date,字符串對象String,數組對象Array
//獲取並顯示系統當前時間
function testDate(){
var date = new Date();
var fmtDate = date.getFullYear()+"-"+(date.getMonth()+1)+
"-"+date.getDate()+"-"+date.getHours()
+":"+date.getMinutes()+":"+date.getSeconds();
alert(fmtDate);
}
//獲取出’sxt’的下標位置
function testString(){
var str = 'welcome to beijingsxt';
alert(str.indexOf('sxt'));
}
//遍歷數組信息
function testArray(){
var arr = new Array('a',123,'c',true,'e');
for(var item in arr){
document.write(arr[item]+" ");
}
}
BOM瀏覽器對象模型,由一系列對象組成,是訪問、控制、修改瀏覽器的屬性的方法。
DOM文檔對象模型,由一系列對象組成,是訪問、檢索、修改XHTML文檔內容與結構的標準方法。
關係:
– BOM描述了與瀏覽器進行交互的方法和接口
– DOM描述了處理網頁內容的方法和接口
– DOM屬於BOM的一個屬性
1) getElementById( ) :返回一個節點對象
2) getElementsByName( ):返回多個(節點數組)
3) getElementsByTagName( ) :返回多個(節點數組)
1) window.alert() 顯示一個提示信息
2) window.confirm() 顯示一個帶有提示信息、肯定和取消按鈕的對話框
3) window.prompt()顯示可提示用戶輸入的對話框
setTimeout和setInterval的語法相同。它們都有兩個參數,一個是將要執行的代碼字符串,還有一個是以毫秒爲單位的時間間隔,當過了那個時間段以後就將執行那段代碼。
不過這兩個函數仍是有區別的,setInterval在執行完一次代碼以後,通過了那個固定的時間間隔,它還會自動重複執行代碼,而setTimeout只執行一次那段代碼。
window.setTimeout("function",time);//設置一個超時對象,只執行一次,無週期
window.setInterval("function",time);//設置一個超時對象,週期='交互時間'
第一種方式:操做元素的屬性(對象.style.樣式名=樣式值;)
//改變直接樣式
var child2 = document.createElement("div");
child2.innerHTML = "child2";
child2.style.fontWeight = "bold";
parent.appendChild(child2);
第二種方式:操做元素的類(對象.className=類;)
例如:
var parent = document.getElementById("parent");
//改變className
var child0 = document.createElement("div");
child0.innerHTML = "child0";
child0.className = "newDiv";
parent.appendChild(child0);
聯繫:
1)靜態網頁是網站建設的基礎,靜態網頁和動態網頁都要使用到HTMl語言。
2)靜態網頁是相對於動態網頁而言,指沒有後臺數據庫、不含程序和不可交互的網頁、是標準的HTML文件,它的文件擴展名是.htm或.html。你編的是什麼它顯示的就是什麼、不會有任何改變。
3)靜態網頁和動態網頁之間並不矛盾,爲了網站適應搜索引擎檢索的須要,動態網站能夠採用靜動結合的原則,適合採用動態網頁的地方用動態網頁,若是必要使用靜態網頁,則能夠考慮用靜態網頁的方法來實現,在同一個網站上,動態網頁內容和靜態網頁內容同時存在也是很常見的事情。
區別:
1)程序是否在服務器端運行,是重要標誌。在服務器端運行的程序、網頁、組件,屬於動態網頁,它們會隨不一樣客戶、不一樣時間,返回不一樣的網頁,例如ASP、PHP、JSP、ASP.net、CGI等。運行於客戶端的程序、網頁、插件、組件,屬於靜態網頁,例如html頁、Flash、javascript、VBscript等等,它們是永遠不變的。
2)編程技術不一樣。靜態網頁和動態網頁主要根據網頁製做的語言來區分。靜態網頁使用語言:HTML。 動態網頁使用語言:HTML+ASP 或 HTML+PHP 或 HTML+JSP 等其它網站動態語言。
3)被搜索引擎收錄狀況不一樣。因爲編程技術不容,靜態網頁是純粹HTML格式的網頁,頁面內容穩定,不管是網頁是否被訪問,頁面都被保存在網站服務器上,很容易被搜索引擎收錄。而動態網頁的內容是當用戶點擊請求時才從數據庫中調出返回給用戶一個網頁的內容,並非存放在服務器上的獨立文件,相比較於靜態網頁而言,動態網頁很難被搜索引擎收錄。
4)用戶訪問速度不一樣。用戶訪問動態網頁時,網頁在得到搜索指令後通過數據庫的調查匹配,再將與指令相符的內容傳遞給服務器,經過服務器的編譯將網頁編譯成標準的HTML代碼,從而傳遞給用戶瀏覽器,多個讀取過程大大下降了用戶的訪問速度。而靜態網頁不一樣,因爲網頁內容直接存取在服務器上,省去了服務器的編譯過程,用戶訪問網頁速度很快。
5)製做和後期維護工做量不一樣。動態網頁的設計以數據庫技術爲基礎,能夠實現多種功能,下降了網站維護的工做量。而靜態網頁因爲沒有數據庫的支持,網頁內容更改時須要直接修改代碼,在網站內容製做和維護中,所需的工做量更大。
動態網頁與靜態網頁各有特色,網站設計師在網頁設計時,主要根據網站的功能需求和網站內容多少選擇不一樣網頁。如,網站包含信息量太大時,就須要選擇動態網頁,反之,則選擇靜態網頁。
ASP(Active Server Pages),JSP(JavaServer Pages),PHP(Hypertext Preprocessor)是目前主流的三種動態網頁語言。
ASP是微軟(Microsoft)所開發的一種後臺腳本語言,它的語法和Visual BASIC相似,能夠像SSI(Server Side Include)那樣把後臺腳本代碼內嵌到HTML頁面中。雖然ASP簡單易用,可是它自身存在着許多缺陷,最重要的就是安全性問題。
PHP是一種跨平臺的服務器端的嵌入式腳本語言。它大量地借用C,Java和Perl語言的語法, 並耦合PHP本身的特性,使WEB開發者可以快速地寫出動態產生頁面。它支持目前絕大多數數據庫。
JSP是一個簡化的Servlet,它是由Sun公司倡導、許多公司參與一塊兒創建的一種動態網頁技術標準。JSP技術有點相似ASP技術,它是在傳統的網頁HTML中插入Java程序段和JSP標記(tag),從而造成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其餘操做系統上運行。
ASP優勢:無需編譯、易於生成、獨立於瀏覽器、面向對象、與任何ActiveX scripting 語言兼容、源程序碼不會外漏。
缺點:
1) Windows自己的全部問題都會一成不變的也累加到了它的身上。安全性、穩定性、跨平臺性都會由於與NT的捆綁而顯現出來。
2) ASP因爲使用了COM組件因此它會變的十分強大,可是這樣的強大因爲Windows NT系統最初的設計問題而會引起大量的安全問題。只要在這樣的組件或是操做中一不注意,那麼外部攻擊就能夠取得至關高的權限而致使網站癱瘓或者數據丟失。
3) 還沒法徹底實現一些企業級的功能:徹底的集羣、負載均橫。
PHP優勢:
1)一種能快速學習、跨平臺、有良好數據庫交互能力的開發語言。
2)簡單輕便,易學易用。
3) 與Apache及其它擴展庫結合緊密。
缺點:
1) 數據庫支持的極大變化。
2) 不適合應用於大型電子商務站點。
JSP優勢:
1) 一處編寫隨處運行。
2) 系統的多臺平支持。
3) 強大的的可伸縮性。
4) 多樣化和功能強大的開發工具支持。
缺點:
1) 與ASP同樣,Java的一些優點正是它致命的問題所在。
2) 開發速度慢
CGI(Common Gateway Interface),通用網關接口,是一種根據請求信息動態產生迴應內容的技術。
經過CGI,Web 服務器能夠將根據請求不一樣啓動不一樣的外部程序,並將請求內容轉發給該程序,在程序執行結束後,將執行結果做爲迴應返回給客戶端。也就是說,對於每一個請求,都要產生一個新的進程進行處理。
Servlet 是在服務器上運行的小程序。在實際運行的時候Java Servlet與Web服務器會融爲一體。與CGI不一樣的是,Servlet對每一個請求都是單獨啓動一個線程,而不是進程。這種處理方式大幅度地下降了系統裏的進程數量,提升了系統的併發處理能力。
比較:
1)JSP從本質上說就是Servlet。JSP技術產生於Servlet以後,二者分工協做,Servlet側重於解決運算和業務邏輯問題,JSP則側重於解決展現問題。
2) 與CGI相比,Servlet效率更高。Servlet處於服務器進程中,它經過多線程方式運行其service方法,一個實例能夠服務於多個請求,而且其實例通常不會銷燬。而CGI對每一個請求都產生新的進程,服務完成後就銷燬,因此效率上低於Servlet 。
3)與CGI相比,Servlet更容易使用,功能更強大,具備更好的可移植性,更節省投資。在將來的技術發展過程當中,Servlet有可能完全取代CGI。
做用:
Tomcat:目前應用很是普遍的免費web服務器,支持部分j2ee。
JBoss:JBoss是一個管理EJB的容器和服務器,支持EJB 1.一、EJB 2.0和EJB3.0的規範。但JBoss核心服務不包括支持servlet/JSP的WEB容器,通常與Tomcat或Jetty綁定使用。
WebSphere:是IBM集成軟件平臺。可作web服務器,WebSphere提供了可靠、靈活和健壯的集成軟件。
Weblogic:是美國bea公司出品的一個基於j2ee架構的中間件。BEA WebLogic是用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器。
特色(區別):
1)價位不一樣:JBoss與Tomcat的是免費的;WebLogic與WebSphere是收費的,並且價格不菲。
2)開源性不一樣:JBoss與Tomcat的是徹底開源的,而其餘兩個不是。
3)對技術的支持:Tomcat不支持EJB,JBoss是實現了EJB容器,再集成了Tomcat。
WebLogic與WebSphere都是對業內多種標準的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統實施更簡單,且保護投資,同時也使基於標準的解決方案的開發更加簡便。
4)擴展性的不一樣:WebLogic和WebSphere都是以其高擴展的架構體系聞名於業內,包括客戶機鏈接的共享、資源 pooling以及動態網頁和EJB組件羣集。
5)應用範圍的區別:Tomcat 是一個小型的輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。WebLogic和WebSphere是商業軟件,功能齊全強大,主要應用於大型企業的大型項目。JBOSS 主要應用於EJB服務的中小型公司。
6)安全性問題區別:由於JBoss和Tomcat都是開源的,因此它們的安全性相對來講比較低,萬一應用服務器自己有什麼漏洞,你是沒辦法向Apache索賠的。而WebLogic和WebSphere其容錯、系統管理和安全性能已經在全球數以千記的關鍵任務環境中得以驗證。
C/S結構,即Client/Server(客戶機/服務器)結構,經過將任務合理分配到Client端和Server端,下降了系統的通信開銷,可充分利用兩端硬件環境優點。早期軟件系統多以此做爲首選設計標準。
B/S結構,即Browser/Server(瀏覽器/服務器)結構,是隨着Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶界面徹底經過WWW瀏覽器實現,一部分事務邏輯在前端實現,可是主要事務邏輯在服務器端實現,節約了開發成本,便於軟件維護。
區別
一、C/S是創建在局域網的基礎上的。B/S是創建在廣域網的基礎上的,但並非說B/S結構不能在局域網上使用。
二、B/S業務擴展簡單方便,經過增長頁面便可增長服務器功能。C/S的客戶端還須要安裝專用的客戶端軟件,不利於擴展。
三、B/S維護簡單方便。開發、維護等幾乎全部工做也都集中在服務器端,當企業對網絡應用進行升級時,只需更新服務器端的軟件就能夠,這減輕了異地用戶系統維護與升級的成本。。
四、B/S響應速度不及C/S;
五、B/S用戶體驗效果不是很理想
容器也是 java 程序,它的主要做用是爲應用程序提供運行環境。容器用來接管安全性、併發性、事務處理、交換到輔助存儲器和其它服務的責任
以tomcat爲例:Tomcat是一個後臺服務進程,其它的servlet(至關於DLL)是在Tomcat容器內運行,Broswer只與Tomcat通迅; Tomcat接受browser的請求,通過一系列動做(若是是靜態網頁,那麼裝載,按http協議造成響應流;若是是動態的如JSP,那就要調用JDK 中的servlet.jsp接口,解釋造成靜態網頁,按http協議生成響應流發送回browser)後,造成靜態網頁,返回響應。
超文本傳輸協議(HTTP:Hypertext Transport Protocol)是萬維網應用層的協議,它經過兩個程序實現:一個是客戶端程序(各類瀏覽器),另外一個是服務器 (常稱Web服務器)。這兩個一般運行在不一樣的主機上,經過交換報文來完成網頁請求和響應,報文可簡單分爲請求報文和響應報文。
工做原理(流程):
客戶機與服務器創建鏈接後,瀏覽器能夠向web服務器發送請求並顯示收到的網頁,當用戶在瀏覽器地址欄中輸入一個URL或點擊一個超鏈接時,瀏覽器就向服務器發出了HTTP請求,請求方式的格式爲:統一資源標識符、協議版本號,後邊是MIME(Multipurpose Internet Mail Extensions)信息包括請求修飾符、客戶機信息和可能的內容。該請求被送往由URL指定的WEB服務器,WEB服務器接收到請求後,進行相應反映,其格式爲:一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊服務器信息、實體信息和可能的內容。即以HTTP規定的格式送回所要求的文件或其餘相關信息,再由用戶計算機上的瀏覽器負責解釋和顯示。
特色:
1)支持客戶/服務器模式。
2)簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。
3)靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4)無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。
5)無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。
1) Get是不安全的,由於在傳輸過程,數據被放在請求的URL中;Post的全部操做對用戶來講都是不可見的。
2) Get傳送的數據量較小,這主要是由於受URL長度限制;Post傳送的數據量較大,通常被默認爲不受限制。
3) Get限制Form表單的數據集的值必須爲ASCII字符;而Post支持整個ISO10646字符集。
4) Get執行效率卻比Post方法好。Get是form提交的默認方法。
1)設置頁面編碼,如果jsp頁面,需編寫代碼
<%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
如果html頁面,在網頁頭部(<head></head>)中添加下面這段代碼
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2)將form表單提交方式變爲post方式,即添加method="post";)在Servlet類中編寫代碼request.setCharacterEncoding("UTF-8"),並且必須寫在第一行。
3)若是是get請求,在Servlet類中編寫代碼
byte [] bytes = str.getBytes("iso-8859-1");
String cstr = new String(bytes,"utf-8");
或者直接修改Tomcat服務器配置文件server.xml增長內容:
URIEncoding="utf-8"
絕對路徑指對站點的根目錄而言某文件的位置,相對路徑指以當前文件所處目錄而言某文件的位置,相對路徑-以引用文件之網頁所在位置爲參考基礎,而創建出的目錄路徑。絕對路徑-以Web站點根目錄爲參考基礎的目錄路徑。
先給出一個網站結構圖作實例加深理解,A網站(域名爲http://www.a.com):/include/a-test.html,/img/a-next.jpg;B網站(域名爲http://www.b.com):/include/b-test.html,/img/b-next.jpg。
相對路徑是從引用的網頁文件自己開始構建的,若是在A網站中的a-test.html中要插入圖片a-next.jpg,能夠這樣作:<img src="../img/a-next.jpg" />,重點是img前面的../,表示從html處於的include開始起步,輸入一個../表示回到上面一級父文件夾下,而後再接着img/表示又從父級文件夾下的img文件開始了,最後定位img下面的next.jpg。
根路徑是從網站的最底層開始起,通常的網站的根目錄就是域名下對應的文件夾,就如D盤是一個網站,雙擊D盤進入到D盤看到的就是網站的根目錄,這種路徑的連接樣式是這樣的:若是在A網站中的a-test.html中要插入圖片a-next.jpg,能夠這樣作:<img src="/img/a-next.jpg" >,以/開頭表示從網站根目錄算起,找到根目錄下面的img文件夾下的next.jpg。
絕對路徑就很好理解了,這種路徑通常帶有網站的域名,若是在A網站中的a-test.html中要插入圖片a-next.jpg,須要這樣這樣寫:<img src="http://www.a.com/img/a-next.jpg" >,將圖片路徑上帶有了域名信息,再打個比方:若是在A網站中的a-test.html中要插入B網站的圖片b-next.jpg,就須要這樣寫:<img src="http://www.b.com/img/b-next.jpg" >,這種方法適用與在不一樣網站之間插入外部網站的圖片。
實現servlet的單線程的jsp命令是: <%@ page isThreadSafe=」false」%>。默認isThreadSafe值爲true。
屬性isThreadSafe=false模式表示它是以Singleton模式運行,該模式implements了接口SingleThreadMode, 該模式同一時刻只有一個實例,不會出現信息同步與否的概念。若多個用戶同時訪問一個這種模式的頁面,那麼先訪問者徹底執行完該頁面後,後訪問者纔開始執行。
屬性isThreadSafe=true模式表示它以多線程方式運行。該模式的信息同步,需訪問同步方法(用synchronized標記的)來實現。 通常格式以下:
public synchronized void syncmethod(...){ while(...) { this.wait(); } this.notifyAll(); } |
1) 加載:在下列時刻加載 Servlet:(1)若是已配置自動加載選項,則在啓動服務器時自動加載 (web.xml中設置<load-on-start>);(2)在服務器啓動後,客戶機首次向 Servlet 發出請求時;(3)從新加載 Servlet 時(只執行一次)
2) 實例化:加載 Servlet 後,服務器建立一個 Servlet 實例。(只執行一次)
3) 初始化:調用 Servlet 的 init() 方法。在初始化階段,Servlet 初始化參數被傳遞給 Servlet 配置對象ServletConfig。 (只執行一次)
4) 請求處理:對於到達服務器的客戶機請求,服務器建立針對這次請求的一個「請求」對象和一個「響應」對象。服務器調用 Servlet 的 service() 方法,該方法用於傳遞「請求」和「響應」對象。service() 方法從「請求」對象得到請求信息、處理該請求並用「響應」對象的方法以將響應傳回客戶機。service() 方法能夠調用其它方法來處理請求,例如 doGet()、doPost() 或其它的方法。(每次請求都執行該步驟)
5) 銷燬:當服務器再也不須要 Servlet, 或從新裝入 Servlet 的新實例時,服務器會調用 Servlet 的 destroy() 方法。(只執行一次)
1) 聯繫
http是無狀態的協議,客戶每次讀取web頁面時,服務器都打開新的會話,並且服務器也不會自動維護客戶的上下文信息,那麼要怎麼才能在屢次請求之間共享信息呢(好比實現網上商店中的購物車)?session和cookie就是爲了解決HTTP協議的無狀態而採用的兩種解決方案。
2) 原理(經過比喻形象說明,真正原理本身總結)
a) Cookie:發給顧客一張卡片,上面記錄着消費的數量,通常還有個有效期限。每次消費時,若是顧客出示這張卡片,則這次消費就會與之前或之後的消費相聯繫起來。這種作法就是在客戶端保持狀態。 【卡上記錄全部信息,而店家只認卡不認人。】
b) Session:發給顧客一張會員卡,除了卡號以外什麼信息也不紀錄,每次消費時,若是顧客出示該卡片,則店員在店裏的紀錄本上找到這個卡號對應的紀錄添加一些消費信息。這種作法就是在服務器端保持狀態。 【只記用戶ID,而ID的詳細記錄放在店家的數據庫裏;每次憑ID檢索服務器的記錄。】
3) 區別
a) cookie數據存放在客戶的瀏覽器上,session數據放在服務器上(sessionid能夠經過cookie保存在客戶端,也可使用URL重寫方式)。
b) cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session
c) session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能,考慮到減輕服務器性能方面,應當使用COOKIE
d) 單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能3K。
e) 我的建議:將登錄信息等重要信息存放爲SESSION;其餘信息如需保留,可放在COOKIE
轉發是在服務端直接作的事情,是對客戶端的同一個request進行傳遞,瀏覽器並不知道。重定向是由瀏覽器來作的事情。重定向時,服務端返回一個response,裏面包含了跳轉的地址,由瀏覽器得到後,自動發送一個新request。轉發像呼叫轉移或者110報警中心,重定向似114查號臺。
a) 區別1:跳轉效率的不一樣
轉發效率相對高;重定向效率相對低
b) 區別2:實現語句不一樣
轉發 request.getRequestDispatcher("xxxx").forward(request,response) ;
重定向 response.sendRedirect("xxxx")
c) 區別3:是否共有同一個request的數據
轉發源組件與目標組件共有同一個request數據
重定向源組件與目標組件不共有同一個request數據(可以使用session共有數據)
d) 區別4:瀏覽器URL地址的不一樣
轉發後瀏覽器URL地址保持不變(源組件地址)
重定向後瀏覽器URL地址改變爲重定向後的地址(目標組件地址)
e) 區別5:"/"路徑的含義不一樣
轉發時"/"表明當前項目的根路徑 ;重定向時"/"表明當前服務器的根路徑
f) 區別6:跳轉範圍的不一樣
只能轉發到同一應用中的URL(默認) ;能夠重定向任何服務器、任何應用的URL
g) 區別7:刷新是否致使重複提交
轉發會致使重複提交(能夠經過同步令牌解決);重定向不會致使重複提交
h) 區別8:是否通過過濾器
轉發不通過過濾器(默認狀況);重定向通過過濾器
在JSP運行過程當中,首先由客戶端發出請求,Web服務器接收到請求後,若是是第一次訪問某個jsp頁面,Web服務器對它進行如下3個操做。
1) 翻譯:由.jsp變爲.java,由JSP引擎實現。
2) 編譯:由.java變爲.class,由 Java編譯器實現。
3) 執行:由.class變爲.html,用Java虛擬機執行編譯文件,而後將執行結果返回給Web服務器,並最終返回給客戶端
若是不是第一次訪問某個JSP頁面,則只執行第三步。因此第一次訪問JSP較慢。
1) request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息
2) response表示HttpServletResponse對象,並提供了幾個用於設置瀏覽器的響應的方法
3) out對象是javax.jsp.JspWriter的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
4) pageContext表示一個javax.servlet.jsp.PageContext對象。是用於方便存取各類範圍的名字空間
5) session表示一個請求的javax.servlet.http.HttpSession對象。Session能夠存貯用戶的狀態信息
6) applicaton 表示一個javax.servle.ServletContext對象。這有助於查找有關servlet引擎和servlet環境的信息
7) config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。
8) page表示從該頁面產生的一個servlet實例
9) exception:exception對象用來處理錯誤異;若是使用exception,則必須指定page中的isErrorPage爲true
jsp:include:在頁面被請求的時候引入一個文件。
jsp:useBean:尋找或者實例化一個JavaBean。 jsp:setProperty:設置JavaBean的屬性。
jsp:getProperty:輸出某個JavaBean的屬性。
jsp:forward:把請求轉到一個新的頁面。 jsp:plugin:根據瀏覽器類型爲Java插件生成OBJECT或EMBED標記。
回答這個問題得先清楚Jsp的執行過程。第一次訪問該jsp頁面時,需經3個步驟。即翻譯(由.jsp變爲.java)--->編譯(由.java變爲.class)--->執行(由.class變爲.html)。若不是第一次訪問,只需通過步驟中的執行過程就行。
區別:
1)使用語法不一樣。動態INCLUDE用jsp:include動做實現,稱爲行動元素。
如:<jsp:include page="included.jsp" flush="true" />
靜態INCLUDE用include僞碼實現,稱爲指令元素。
如:<%@ include file="included.html" %>。
2)執行時間不一樣。<jsp:include page="included.jsp" flush="true" />在請求處理階段執行;會先解析所要包含的頁面(included.jsp),解析後在和主頁面放到一塊兒顯示;先編譯,後包含。<%@ include file="included.html" %>在翻譯階段執行;不會解析所要包含的頁面(included.html),先合成一個文件後再轉換成servlet,即先包含,後統一編譯。
3)訪問時產生文件個數不一樣。<jsp:include page="included.jsp" flush="true" />共產生2個java文件和2個class文件。<%@ include file="included.html" %>共產生1個java文件和1個class文件。
4)引入內容不一樣。動態INCLUDE主要是對動態頁面的引入,它老是會檢查所引入的頁面的變化,若是被引入的文件內容在請求間發生變化,則下一次請求包含<jsp:include>動做的jsp時,將顯示被引入文件的新內容。靜態INCLUDE適用於引入靜態頁面(.html),include指令它不會檢查所引入的頁面的變化,在jsp頁面轉換成servlet前與當前jsp文件融合在一塊兒,以後與主頁面一塊兒顯示,常使用靜態INCLUDE引入導航條、頁腳等。
page:當前頁面範圍
request:當前頁面範圍+轉發頁面(forward)+包含頁面(include)
session:當前會話:session在如下幾種狀況下失效
1) 銷燬session:Session.invalidate();
2) 超過最大非活動間隔時間
3) 手動關閉瀏覽器(session並無馬上失效,由於服務器端session仍舊存在,超過最大非活動間隔時間後真正失效)
application:當前應用;服務器從新啓動前一直有效
區別:
1) JSP是在HTML代碼裏寫JAVA代碼,框架是HTML;而Servlet是在JAVA代碼中寫HTML代碼,自己是個JAVA類。
2) JSP令人們把顯示和邏輯分隔成爲可能,這意味着二者的開發可並行進行;而Servlet並無把二者分開。
3) Servlet獨立地處理靜態表示邏輯與動態業務邏輯.這樣,任何文件的變更都須要對此服務程序從新編譯;JSP容許用特殊標籤直接嵌入到HTML頁面, HTML內容與JAVA內容也可放在單獨文件中,HTML內容的任何變更會自動編譯裝入到服務程序.
4) Servlet須要在web.xml中配置,而JSP無需配置。
5) 目前JSP主要用在視圖層,負責顯示,而Servlet主要用在控制層,負責調度
聯繫:
1) 都是Sun公司推出的動態網頁技術。
2) 先有Servlet,針對Servlet缺點推出JSP。JSP是Servlet的一種特殊形式,每一個JSP頁面就是一個Servlet實例——JSP頁面由系統翻譯成Servlet,Servlet再負責響應用戶請求。
– 一個鏈接對象對應一個物理鏈接
– 每次操做都打開一個物理鏈接,
– 使用完都關閉鏈接,形成系統性能低下。
– 客戶程序獲得的鏈接對象是鏈接池中物理鏈接的一個句柄
– 調用鏈接對象的close()方法,物理鏈接並無關閉,數據源的實現只是刪除了客戶程序中的鏈接對象和池中的鏈接對象之間的聯繫.
1、數據庫鏈接池的原理。
– 首先調用Class.forName()方法加載數據庫驅動,
– 而後調用DriverManager.getConnection()方法創建鏈接.
– 鏈接池解決方案是在應用程序啓動時就預先創建多個數據庫鏈接對象,而後將鏈接對象保存到鏈接池中。
– 當客戶請求到來時,從池中取出一個鏈接對象爲客戶服務。
– 當請求完成時,客戶程序調用close()方法,將鏈接對象放回池中.
– 對於多於鏈接池中鏈接數的請求,排隊等待。
– 應用程序還可根據鏈接池中鏈接的使用率,動態增長或減小池中的鏈接數。
原理:
– 過濾器是運行在服務器端的一個攔截做用的web組件,一個請求來到時,web容器會判斷是否有過濾器與該信息資源相關聯,若是有則交給過濾器處理,而後再交給目標資源,響應的時候則以相反的順序交給過濾器處理,最後再返回給用戶瀏覽器
– 通常用於日誌記錄、性能、安全、權限管理等公共模塊。
過濾器開發:
– 過濾器是一個實現了javax.servlet.Filter接口的java類
– 主要業務代碼放在doFilter方法中
– 業務代碼完成後要將請求向後傳遞,即調用FilterChain對象的doFilter方法
配置:
– 在web.xml中增長以下代碼
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>Filter完整類名</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*(要過慮的url,此處*表示過慮全部的url)</url-pattern>
</filter-mapping>
監聽器也叫Listener,是一個實現特定接口的java類,使用時須要在web.xml中配置,它是web服務器端的一個組件,它們用於監聽的事件源分別爲SerlvetConext,HttpSession和ServletRequest這三個域對象
主要有如下三種操做:
– 監聽三個域對象建立和銷燬的事件監聽器
– 監聽域對象中屬性的增長和刪除的事件監聽器
– 監聽綁定到HttpSession域中的某個對象的狀態的時間監聽器
接口分類:
– ServletContextListener
– HttpSessionListener
– ServletRequestListener
– ServletContextAttributeListener
– HttpSessionAttributeListener
– ServletRequestAttributeListener
– HttpSessionBindingListener(不須要配置)
– HttpSessionActivationListener(不須要配置)
配置:
<listener><listener-class>實現以上任意接口的java類全名</listener-class></listener>
jQuery的語法更加簡單。
jQuery消除了JavaScript跨平臺兼容問題。
相比其餘JavaScript和JavaScript庫,jQuery更容易使用。
jQuery有一個龐大的庫/函數。
jQuery有良好的文檔和幫助手冊。
jQuery支持AJAX
DOM對象,是咱們用傳統的方法(javascript)得到的對象,jQuery對象便是用jQuery類庫的選擇器得到的對象,它是對DOM對象的一種封裝,jQuery對象不能使用DOM對象的方法,只能使用jQuery對象本身的方法。
普通的dom對象通常能夠經過$()轉換成jquery對象
如:var cr=document.getElementById("cr"); //dom對象
var $cr = $(cr); //轉換成jquery對象
因爲jquery對象自己是一個集合。因此若是jquery對象要轉換爲dom對象則必須取出其中的某一項,通常可經過索引取出
如:$("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]這幾種語法在jQuery中都是合法的
1) $用做選擇器
例如:根據id得到頁面元素$("#元素ID")
2) $至關於window.onload 和 $(document).ready(...)
例如:$(function(){...}); function(){...}會在DOM樹加載完畢以後執行。
3) $用做JQuery的工具函數的前綴
例如: var str = ' Welcome to shanghai.com ';
str = $.trim(str);去掉空格
4) $(element):把DOM節點轉化成jQuery節點
例如:var cr=document.getElementById("cr"); //dom對象
var $cr = $(cr); //轉換成jquery對象
5) $(html):使用HTML字符串建立jQuery節點
例如:var obj = $("<div>尚學堂,實戰化教學第一品牌</div>")
Ajax (Asynchronous JavaScript and XML 阿賈克斯)不是一個新的技術,事實上,它是一些舊有的成熟的技術以一種全新的更增強大的方式整合在一塊兒。
Ajax的關鍵技術:
1) 使用CSS構建用戶界面樣式,負責頁面排版和美工
2) 使用DOM進行動態顯示和交互,對頁面進行局部修改
3) 使用XMLHttpRequest異步獲取數據
4) 使用JavaScript將全部元素綁定在一塊兒
Ajax的原理簡單來講經過XmlHttpRequest對象來向服務器發異步請求,從服務器得到數據,而後用javascript來操做DOM而更新頁面。這其中最關鍵的一步就是從服務器得到請求數據。要清楚這個過程和原理,咱們必須對 XMLHttpRequest有所瞭解。
XMLHttpRequest是ajax的核心機制,它是在IE5中首先引入的,是一種支持異步請求的技術。簡單的說,也就是javascript能夠及時向服務器提出請求和處理響應,而不阻塞用戶。達到無刷新的效果。
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,採用徹底獨立於語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式,這意味着在 JavaScript 中處理 JSON數據不需要任何特殊的 API 或工具包。
在JSON中,有兩種結構:對象和數組。
1) 一個對象以「{」(左括號)開始,「}」(右括號)結束。每一個「名稱」後跟一個「:」(冒號);「‘名稱/值’ 對」之間運用 「,」(逗號)分隔。 名稱用引號括起來;值若是是字符串則必須用括號,數值型則不需要。例如:
var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};
2) 數組是值(value)的有序集合。一個數組以「[」(左中括號)開始,「]」(右中括號)結束。值之間運用 「,」(逗號)分隔。例如:
var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},
{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];
1、MVC原理
MVC是一種程序開發設計模式,它實現了顯示模塊與功能模塊的分離。提升了程序的可維護性、可移植性、可擴展性與可重用性,下降了程序的開發難度。它主要分模型、視圖、控制器三層。
一、模型(model)它是應用程序的主體部分,主要包括業務邏輯模塊和數據模塊。模型與數據格式無關,這樣一個模型能爲多個視圖提供數據。因爲應用於模型的代碼只需寫一次就能夠被多個視圖重用,因此減小了代碼的重複性
二、視圖(view) 用戶與之交互的界面、在web中視圖通常由jsp,html組成
三、控制器(controller)接收來自界面的請求 並交給模型進行處理 在這個過程當中控制器不作任何處理只是起到了一個鏈接的做用
2、MVC的優勢
一、下降代碼耦合性。在MVC模式中,三個層各施其職,因此若是一旦哪一層的需求發生了變化,就只須要更改相應的層中的代碼而不會影響到其餘層中的代碼。
二、有利於分工合做。在MVC模式中,因爲按層把系統分開,那麼就能更好的實現開發中的分工。網頁設計人員可進行開發視圖層中的JSP,而對業務熟悉的人員可開發業務層,而其餘開發人員可開發控制層。
三、有利於組件的重用。如控制層可獨立成一個能用的組件,表示層也可作成通用的操做界面。能夠爲一個模型在運行時同時創建和使用多個視圖。
3、MVC的不足之處
一、增長了系統結構和實現的複雜性。對於簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增長結構的複雜性,並可能產生過多的更新操做,下降運行效率。
二、視圖與控制器間的過於緊密的鏈接。視圖與控制器是相互分離,但確實聯繫緊密的部件,視圖沒有控制器的存在,其應用是頗有限的,反之亦然,這樣就妨礙了他們的獨立重用。
三、視圖對模型數據的低效率訪問。依據模型操做接口的不一樣,視圖可能須要屢次調用才能得到足夠的顯示數據。對未變化數據的沒必要要的頻繁訪問,也將損害操做性能。
四、目前,通常高級的界面工具或構造器不支持模式。改造這些工具以適應MVC須要和創建分離的部件的代價是很高的,從而形成MVC使用的困難。
Java Bean 是可複用的組件,對Java Bean並無嚴格的規範,理論上講,任何一個Java類均可以是一個Bean。但一般狀況下,因爲JavaBean是被容器所建立(如Tomcat)的,因此Java Bean應具備一個無參的構造器。另外,一般Java Bean還要實現Serializable接口用於實現Bean的持久性。Java Bean實際上至關於微軟COM模型中的本地進程內COM組件,它是不能被跨進程訪問的。
Enterprise Java Bean 至關於DCOM,即分佈式組件。它是基於Java的遠程方法調用(RMI)技術的,因此EJB能夠被遠程訪問(跨進程、跨計算機)。但EJB必須被佈署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是經過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所建立和管理。客戶經過容器來訪問真正的EJB組件。
如:
select * from (select t.*,rownum r from (select * from A) t where rownum < 10) where r >5
select * from A:要查詢的數據
select t.*,rownum r from (select * from A) t where rownum < 10:取前10行
select * from (select t.*,rownum r from (select * from A) t where rownum < 10) where r >5:取5-10行
1)頁面提交頁碼(第幾頁)到Servlet中
2)Servlet接收到頁碼後,將頁碼傳遞給分頁工具類(PageBean)
3)Servlet中調用Service層傳入PageBean對象
4)Service層調用DAO層傳入PageBean對象
5)Servlet中獲得查詢出來的數據,並setAttrivute保存
6)在頁面中獲得(getAttribute)數據,遍歷輸出
DiskFileItemFactory:磁盤文件工廠類,設置上傳文件保存的磁盤目錄,緩衝區大小
ServletFileUpload:上傳處理類,此類真正讀取客戶上傳的文件,同時能夠設置最大接收大小
FileItem:上傳的文件對象,能夠是多個文件,每一個上傳的文件都是一個單獨的FileItem對象