javascript
Java 面向对象编程、jQuery、JavaScript、servlet、javabean----理论知识
一.繼承
1.繼承(優(yōu)點(diǎn):代碼復(fù)用方便修改)
?? ?1.1 繼承的關(guān)鍵字:extends
?? ?1.2 實(shí)現(xiàn)繼承步驟(1.編寫父類 2.編寫子類繼承父類)
?? ?1.3 調(diào)用父類方法的關(guān)鍵字:super
?? ?1.4 繼承條件下構(gòu)造方法和屬性的調(diào)用
?? ??? ?1.4.1 調(diào)用父類構(gòu)造方法:super(); super(實(shí)參);必須寫在構(gòu)造方法第一行
?? ??? ?1.4.2 調(diào)用父類的屬性和方法:super.屬性?? super.方法名();
?? ??? ?1.4.3 父類中的資源使用了private修飾的子類不能繼承
2.方法重寫
?? ?2.1 重寫的規(guī)則(1.方法名相同 2.參數(shù)列表相同 3.返回值類型相同或者是其子類 4.訪問權(quán)限不能嚴(yán)于父類)
?? ?2.2 重寫和重載的區(qū)別(重寫是發(fā)生在繼承關(guān)系下,重載是發(fā)生在一個(gè)類中,其概念不一樣)
3.抽象類
?? ?3.1 抽象類和抽象方法的關(guān)鍵字:abstract
?? ?3.2 抽象類和抽象方法的特點(diǎn)
?? ??? ?3.2.1 都是使用abstract修飾的
?? ??? ?3.2.2 抽象類中可以不寫抽象方法
?? ??? ?3.2.3 抽象方法沒有方法體
?? ??? ?3.2.4 抽象類不能使用new實(shí)例化
?? ??? ?3.2.5 子類繼承抽象類,子類必須重寫父類的抽象方法,否則子類也是抽象類
4.final修飾符
?? ?4.1 用法
?? ??? ?4.1.1 修飾類,不能被繼承,一般用于工具類
?? ??? ?4.1.2 修飾方法,不能被重寫?? ?
?? ??? ?4.1.3 修飾屬性=》常量, 必須賦初始值
二.集合框架
1:集合框架的優(yōu)點(diǎn):性能優(yōu)良,使用方便,彌補(bǔ)了數(shù)組的缺陷,比數(shù)組更靈活,更實(shí)用,不同的集合可以適用于不同場合。
1:分為兩大接口【Collection】【Map】
2:Collection(接口):存儲一組不唯一、允許重復(fù)、無序的對象。
?? ?2.1:List(接口):繼承Collection,存儲一組不唯一、允許重復(fù)、有序的對象。
?? ??? ?2.1.1:ArrayList(類):繼承List,遍歷和隨機(jī)訪問效率高,插入刪除效率低。
?? ??? ??? ?ArrayList list = new ArrayList();
?? ??? ??? ?常用方法:
?? ??? ??? ??? ?2.1.1.1:添加一個(gè)對象:add(Object):list.add("a");?? ?[a] ?
?? ??? ??? ??? ?2.1.1.2:在指定位置添加一個(gè)對象:add(int index,Object o):list.add(0,"b");?? ??? ?[b,a]
?? ??? ??? ??? ?2.1.1.3:獲取大小:size():list.size();?? ?2
?? ??? ??? ??? ?2.1.1.4:獲取一個(gè)對象:get(int index):list.get(0);
?? ??? ??? ??? ?2.1.1.5:判斷是否存在:contains(Object o):list.contains("a");
?? ??? ??? ??? ?2.1.1.6:移除對象:remove(Object o),remove(int index)
?? ??? ?2.1.2:LinkedList(類):繼承List,遍歷和隨機(jī)訪問效率低,插入刪除效率高。
?? ??? ??? ?LinkedList list = new LinkedList();
?? ??? ??? ?常用方法:
?? ??? ??? ??? ?2.1.2.1:在首位添加:addFirst(Object o):list.addFirst("a");?? ?[a]
?? ??? ??? ??? ?2.1.2.1:在末位添加:addLast(Object o):list.addLast("b");?? ?[a,b]
?? ??? ??? ??? ?2.1.2.1:獲取:getFirst(),getLast(),
?? ??? ??? ??? ?2.1.2.1:移除:removeFirst(),removeLast()
?? ?2.2:Set(接口):繼承Collection,存儲一組唯一、不允許重復(fù)、無序的對象。
?? ??? ?
3:Map(接口):存儲一組成對的鍵-值對象,提供key(鍵值)到value(值)的映射。
?? ?3.1:HashMap(類):繼承Map。
?? ??? ?HashMap map = new HashMap();
?? ??? ?常用方法:
?? ??? ??? ?3.1.1:添加一個(gè)對象:put(Object key,Object value):map.put("顏色1","紅色");
?? ??? ??? ?3.1.2:獲取一個(gè)對象:get(Object key):map.get("顏色1");
?? ??? ??? ?3.1.3:移除一個(gè)對象:remove(Object key):map.remove("顏色1");
?? ??? ??? ?3.1.4:判斷是否存在指定映射:containsKey(Object key):map.containsKey("顏色1");
?? ??? ??? ?3.1.4:size(),keySet(),values(),isEmpty(),clear()
?? ??? ??? ?
?? ?3.2:TreeMap(類):繼承Map,
4:Iterator(迭代器):集合接口和類的遍歷交給迭代器Iterator完成。
?? ?常用方法:
?? ??? ?4.1:hasNext():判斷是否存在另一個(gè)可訪問的元素。
?? ??? ?4.2:next():返回要訪問的下一個(gè)元素。
?? ??? ?4.3:示例:
?? ??? ??? ?Collection coll = new ArrayList();
?? ??? ??? ?coll.add("abc1");
?? ??? ??? ?coll.add("abc2");
?? ??? ??? ?coll.add("abc3");
?? ??? ??? ?Iterator it = coll.iterator();
?? ??? ??? ?while(it.hasNext()){
?? ??? ??? ??? ?System.out.println(it.next());
?? ??? ??? ?}
5.泛型集合:在使用集合儲存對象時(shí)用泛型集合,指定了集合中元素的類型,避免在取值時(shí)強(qiáng)轉(zhuǎn)。
?? ?5.1:List?? ?list = new List();?? ??? ??? ??? ?List<dog> list = new List<dog>();
?? ??? ?添加:list.add(dog1);?? ??? ??? ??? ?添加值:list.add(dog1);正確
?? ??? ?獲取:Dog dog = (Dog)list.get(0);?? ???????? ??? ??? ?????????????? list.add(cat1);錯(cuò)誤
?? ??? ??? ??? ??? ??? ??? ??? ?獲取值:Dog dog = list.get(0);
三.表單驗(yàn)證
1.表單驗(yàn)證(減輕服務(wù)器的負(fù)擔(dān),在客戶端驗(yàn)證輸入數(shù)據(jù)是否正確)
2.驗(yàn)證方法
?? ?2.1 非空驗(yàn)證
?? ??? ?2.1.1 (例:獲取值 var name = $("#name").val(); 判斷為空 if(name==""){//為空處理})
?? ?2.2 長度驗(yàn)證
?? ??? ?2.2.1 (例:var pwd = $("#password").val(); if(pwd<需要的長度){//長度不足處理})
?? ?2.3 驗(yàn)證是否為數(shù)字
?? ??? ?2.3.1 (例:var num = $("#num").var(); if(!isNaN(num)){//非數(shù)字處理})
?? ?2.4 驗(yàn)證是否包含某個(gè)字符
?? ??? ?2.4.1 (例: var test = $("#test").var(); if(test.indexOf("包含的字符")==-1){//未包含字符處理})
3.正則表達(dá)式(驗(yàn)證數(shù)據(jù)是否合法)
?? ?3.1 常用符號
?? ??? ?3.1.1 /.../:代表一個(gè)模式的開始和結(jié)束。
?? ??? ??? ?? ^:匹配字符串的開始。
?? ??? ??? ?? $:匹配字符串的結(jié)束。
?? ??? ??? ?? \s:任何空白字符。
?? ??? ??? ?? \S:任何非空白字符。
?? ??? ??? ?? \d:匹配一個(gè)數(shù)字,等價(jià)于[0~9]。
?? ??? ??? ?? \D:匹配除了數(shù)字之外的任何字符,等價(jià)于[^0~9]。
?? ??? ??? ?? \w:匹配一個(gè) 數(shù)字、下劃線字母字符,等價(jià)于[A~Za~z0~9]。
?? ??? ??? ?? .:除了換行符之外的任意字符。
?? ?3.2 正則表達(dá)式的重復(fù)字符
?? ??? ?3.2.1 {n}:匹配前一項(xiàng)n次。
?? ??? ??? ?? {n,}:匹配前一項(xiàng)n次,或者更多次。
?? ??? ??? ?? {n,m}:匹配前一項(xiàng)n次,但不能超過m次。
?? ??? ??? ?? *:匹配前一項(xiàng)0次或多次,等價(jià)于{0,}。
?? ??? ??? ?? +:匹配前一項(xiàng)1次或多次,等價(jià)于{1,}。
?? ??? ??? ?? ?:匹配前一項(xiàng)0次或一次,等價(jià)于{0,1}。
?? ?3.3 使用正則表達(dá)式驗(yàn)證
?? ??? ?3.3.1 驗(yàn)證年齡為0~120歲: var age=/^120$|^((1[0,1]|[1-9])?\d)$/
4.表單選擇器(選擇表單元素)
?? ?4.1 表單選擇器 語法: :input :匹配所有input、textarea、select和button元素。
?? ??? ??? ??? ??? ??? ? :text? :匹配所有單行文本框。
?? ??? ??? ??? ??? ??? ? :password :匹配所有密碼框。
?? ??? ??? ??? ??? ??? ? :radio? :匹配所有單選按鈕。
?? ??? ??? ??? ??? ??? ? :checkbox :匹配所有復(fù)選框。
?? ??? ??? ??? ??? ??? ? :submit? :匹配所有提交按鈕。
?? ??? ??? ??? ??? ??? ? :image?? :匹配所有圖像域。
?? ??? ??? ??? ??? ??? ? :reset?? :匹配所有重置按鈕。
?? ??? ??? ??? ??? ??? ? :button? :匹配所有按鈕。
?? ??? ??? ??? ??? ??? ? :file??? :匹配所有文件域。
?? ??? ??? ??? ??? ??? ? :hidden? :匹配所有不可見元素,或者type為hidde的元素。
?? ?4.2 表單屬性過濾器 語法: :enabled? :匹配所有可用元素。
?? ??? ??? ??? ??? ??? ??? ?? :disabled :匹配所有不可用元素。
?? ??? ??? ??? ??? ??? ??? ?? :checked? :匹配所有被選中元素。
?? ??? ??? ??? ??? ??? ??? ?? :selected :匹配所有選中的option元素。
?
??? 《使用jQuery快速高效制作網(wǎng)頁交互特效》
四、 JavaScript基礎(chǔ)
1. JavaScript概述
??? 1.1 JavaScript簡介
??????? JavaScript是一種基于對象和事件驅(qū)動(dòng)的腳本語言,它與HTML一起,與Web客戶實(shí)現(xiàn)交互
??? 1.2 JavaScript組成
??????? 1.2.1 ECMAScript標(biāo)準(zhǔn)
??????????? JavaScript語法、變量和數(shù)據(jù)類型、運(yùn)算符、邏輯控制語句、關(guān)鍵字和對象
??????? 1.2.2 瀏覽器對象模型
??????????? 獨(dú)立于內(nèi)容與瀏覽器窗口進(jìn)行交互的對象,以便與HTML交互。
??????? 1.2.3 文檔對象模型
??????????? HTML文檔對象模型定義的一套標(biāo)準(zhǔn)方法,用來操作HTML文檔。
??? 1.3 JavaScript基本結(jié)構(gòu)
??????? 使用<script>標(biāo)簽將JavaScript嵌入到HTML中,基本結(jié)構(gòu):
??????? <script type="text/javascript">
??????????? <!--
??????????????? // JavaScript語句
??????????? -->
??????? </script>
??? 1.4 引用JavaScript的方式
??????? 1.4.1 使用script標(biāo)簽
??????????? 將JavaScript代碼嵌入到script標(biāo)簽中,如:
??????????? <script type="text/javascript">
??????????????? alert("hello");
??????????? </script>
??????? 1.4.2 使用外部JavaScript標(biāo)簽
??????????? 通過script標(biāo)簽的src屬性引入外部JavaScript文件,如:
??????????? <script type="text/javascript" src="hello.js"></script>
??????? 1.4.3 在HTML標(biāo)簽中使用
??????????? 在HTML標(biāo)簽的特定屬性中嵌入JavaScript代碼,如:
??????????? <input type="button" οnclick="javascript:alert('hello');" />
?? ?
2. JavaScript核心語法
??? 2.1 變量的聲明和賦值
??????? 聲明變量的語法:var 合法的變量名 = 初始值;
??????? 如:var num = 0;
??? 2.2 數(shù)據(jù)類型
??????? JavaScript是一種弱類型語言,定義變量時(shí)不需要設(shè)置變量的數(shù)據(jù)類型,變量的數(shù)據(jù)類型由變量的值決定
??????? javaScript的數(shù)據(jù)類型有:
??????????? undefined 未定義類型 (定義變量時(shí)的默認(rèn)值,訪問一個(gè)對象不存在的屬性值的類型,沒有返回值的函數(shù)的返回值類型)
??????????? null 空類型 (null值的類型,表示空值)
??????????? number 數(shù)值類型 (用來保存整數(shù)和浮點(diǎn)數(shù)的數(shù)據(jù)類型)
??????????? String 字符串類型 (用來保存字符串的數(shù)據(jù)類型)
??????????? boolean 布爾類型 (用來保存邏輯的數(shù)據(jù)類型,其值只有true和false)
??????????? function 函數(shù) (用來保存函數(shù))
??????????? object 對象 (用來保存自定義類型的數(shù)據(jù))
??? 2.3 數(shù)組
??????? 創(chuàng)建創(chuàng)建指定長度的數(shù)組:var 數(shù)組名 = new Array(數(shù)組長度);
??????? 根據(jù)元素內(nèi)容創(chuàng)建數(shù)組:var 數(shù)組名 = newArray(值列表);
??????? 訪問數(shù)組元素:數(shù)組名[下標(biāo)]
3. JavaScript函數(shù)
??? 3.1 常用系統(tǒng)函數(shù)
??????? parseInt() 解析字符串,返回int類型,如:parseInt("1"); // 返回?cái)?shù)值1
??????? parseFloat() 解析字符串,返回浮點(diǎn)數(shù),如:parseFloat("2.3"); // 返回?cái)?shù)值2.3
??????? isNaN() 檢查參數(shù)是否是非數(shù)字,如:isNaN("12"); // 返回false
??????? alert() 彈出提示框,如:alert("hello"); // 彈出一個(gè)提示框,提示消息為“hello·”
??????? prompt() 彈出帶有輸入框的提示框,如:prompt("請輸入一個(gè)數(shù)", ""); // 彈出一個(gè)帶有輸入框的提示框,提示消息為“請輸入一個(gè)數(shù)”,返回輸入的內(nèi)容
??????? confirm() 彈出帶有確定和取消的提示框,如:confirm("確定刪除?"); // 彈出一個(gè)帶有確定和取消按鈕的對話框,提示信息為“確定刪除?”,如果點(diǎn)擊確定按鈕則返回true,否則返回false
??? 3.2 自定義函數(shù)
??????? 自定義函數(shù)的語法:
??????? function 函數(shù)名(參數(shù)列表) {
??????????? // JavaScript語句
??????????? [return 返回值]
??????? }
??? 3.3 變量的作用域
??????? 全局變量 在所有函數(shù)外聲明的變量
??????? 局部變量 在函數(shù)體內(nèi)部聲明的變量
五、 JavaScript對象
1. window對象
??? BOM是JavaScript的組成之一,window對象是整個(gè)BOM的核心,通過BOM可以對瀏覽器窗口進(jìn)行相關(guān)操作
??? 1.1 window對象的常用方法
??????? open() 打開一個(gè)新的瀏覽器窗口,加載指定的URL
??????? close() 關(guān)閉瀏覽器窗口
??? 1.2 window對象的常用事件
??????? onload 頁面加載完成
?? ?
2. history對象
??? history對象記錄用戶記錄的URL列表,通過history對象可以實(shí)現(xiàn)前進(jìn)、后退等操作
??? 2.1 history對象的常用方法
??????? back() 加載history對象列表的前一個(gè)URL
??????? forward() 加載history對象列表的后一個(gè)URL
??????? go() 加載history對象列表的某個(gè)具體的URL
?? ?
3. location對象
??? location對象記錄用戶當(dāng)前的URL的相關(guān)信息,通過location對象可以獲取當(dāng)前訪問的URL或從新加載URL
??? 3.1 location對象的常用屬性
??????? host 設(shè)置或獲取主機(jī)名和當(dāng)前的URL的端口號
??????? hostname 設(shè)置或返回URL的主機(jī)名
??????? href 設(shè)置或返回完整的URL
??? 3.2 location對象的常用方法
??????? reload() 重新加載當(dāng)前文檔
??????? replace() 用新的文檔替換當(dāng)前文檔
?? ?
4. document對象
??? document對象代表整個(gè)HTML文檔,通過document對象可以操作HTML文檔的元素
??? 4.1 document對象的常用方法
??????? getElementById() 返回對擁有指定id的第一個(gè)對象的引用
??????? getElementsByName() 返回帶有指定名稱的對象的數(shù)組
??????? getElementsByTagName() 返回帶有指定標(biāo)簽名的對象的數(shù)組
??????? write() 向文檔寫文本、HTML表達(dá)式或JavaScript代碼
?? ?
5. JavaScript內(nèi)置對象
??? 5.1 Date對象
??????? 保存或操作日期的對象
??????? 5.1.1 Date對象的常用方法
??????????? getFullYear() 返回Date對象所保存的日期的年份,其值是4位整數(shù)
??????????? getMonth() 返回Date對象所保存的日期的月份,其值是0~11
??????????? getDate() 返回Date對象所保存的日期的號數(shù),其值是1~31
??????????? getDay() 返回Date對象所保存的日期的星期數(shù)
??????????? getHours() 返回Date對象所保存的日期的小時(shí)數(shù)
??????????? getMinutes() 返回Date對象所保存的日期的分鐘數(shù)
??????????? getSeconds() 返回Date對象所保存的日期的秒數(shù)
??????????? getTime() 返回Date對象所保存的日期與1970年1月1日相差的毫秒數(shù)
??? 5.2 Math對象
??????? 提供一些與數(shù)學(xué)相關(guān)的操作,不需要?jiǎng)?chuàng)建該對象,可以直接使用該對象的方法
??????? 5.2.1 Math對象的常用方法
??????????? ceil() 對一個(gè)浮點(diǎn)數(shù)進(jìn)行向上舍入
??????????? floor() 對一個(gè)浮點(diǎn)數(shù)進(jìn)行向下舍入
??????????? round() 把一個(gè)浮點(diǎn)數(shù)進(jìn)行四舍五入
??????????? random() 返回0~1之間的隨機(jī)數(shù)
6. 定時(shí)函數(shù)
??? 6.1 常用定時(shí)函數(shù)
??????? setTimeout() 在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式,如:setTimeout("func", 3000); // 在等待3秒后調(diào)用名為func的函數(shù)
??????? setInterval() 按照指定的周期來調(diào)用函數(shù)或計(jì)算表達(dá)式,如:setInterval("func", 3000); // 每3秒調(diào)用一次名為func的函數(shù)
??????? clearTimeout() 清除setTimeout設(shè)置的定時(shí)器,如:var timer = setTimeout("func", 2000); clearTimeout(timer);
??????? clearInterval() 清除setInterval設(shè)置的定時(shí)器,如:var timer = setInterval("func", 2000); clearInterval(timer);
《使用JSP/Servlet技術(shù)開發(fā)新聞發(fā)布系統(tǒng)》
六、 JSP開發(fā)業(yè)務(wù)應(yīng)用
1. JSP分頁顯示數(shù)據(jù)
??? 1.1 實(shí)現(xiàn)分頁的步驟
??????? 1.1.1 確定每頁顯示的數(shù)據(jù)量
??????????? 根據(jù)實(shí)際的頁面設(shè)計(jì)來決定,也可以由客戶決定
??????? 1.1.2 計(jì)算顯示的總頁數(shù)
??????????? 根據(jù)數(shù)據(jù)庫中的總數(shù)據(jù)量、每頁顯示的數(shù)據(jù)量,計(jì)算出顯示的總頁數(shù)
??????? 1.1.3 編寫SQL語句
??????????? 根據(jù)每頁顯示的數(shù)據(jù)量和當(dāng)前需要顯示的頁碼來編寫查詢相應(yīng)數(shù)據(jù)的SQL語句
??????? 1.1.4 封裝分頁數(shù)據(jù)
??????????? 將分頁業(yè)務(wù)的相關(guān)數(shù)據(jù)封裝到一個(gè)page類中,其中包括每頁顯示的數(shù)據(jù)量、數(shù)據(jù)的總數(shù)據(jù)量、顯示的總頁數(shù)、當(dāng)前頁碼、當(dāng)前頁顯示的數(shù)據(jù)的集合
2. 文件上傳
??? 2.1 Commons-FileUpload簡介
??????? Apache開放源代碼組織的一個(gè)Java子項(xiàng)目,主要用于文件上傳、命令行處理、數(shù)據(jù)庫連接池等。
??????? Commons-FileUpload組件的特點(diǎn):使用簡單、能夠全程控制上傳內(nèi)容、能夠?qū)ι蟼魑募拇笮 ㈩愋瓦M(jìn)行控制
??? 2.2 文件上傳的步驟
??????? 2.2.1 表單屬性的設(shè)置
??????????? 要實(shí)現(xiàn)文件上傳,需要對文件域所在的表單的enctype屬性進(jìn)行設(shè)置,其屬性值有:
??????????????? application/x-www-form-urlencoded:默認(rèn)值,對表單的所有字段的值進(jìn)行默認(rèn)編碼
??????????????? multipart/form-data:上傳二進(jìn)制數(shù)據(jù),不對表單的各個(gè)字段編碼,若要上傳文件,則需要設(shè)置為此值
??????????????? text/plain 向服務(wù)器傳輸大量的文本數(shù)據(jù),比較適用于電子郵件
??????? 2.2.2 引入相關(guān)的程序文件
??????????? 要使用Commons-FileUpload組件,需要引入commons-fileupload.jar和commons-io-2.4.jar文件。
??????? 2.2.3 通過Commons-FIleUpload組件的API提供的相關(guān)方法實(shí)現(xiàn)文件上傳
??????????? 2.2.3.1 Commons-FileUpload組件的API
??????????????? 2.2.3.1.1 ServletFileUpload類
??????????????????? 用于實(shí)現(xiàn)文件上傳操作
??????????????????? ServletFileUpload類的常用方法
??????????????????????? setSizeMax() 設(shè)置請求信息實(shí)體內(nèi)容的最大允許的字節(jié)數(shù)
??????????????????????? parseRequest() 解析form表單中每個(gè)字符的數(shù)據(jù),返回一個(gè)FileItem對象的集合
??????????????????????? isMultipartContent() 判斷請求信息的內(nèi)容是否是“multipart/form-data”類型
??????????????????????? setHeaderEncoding() 設(shè)置轉(zhuǎn)換時(shí)所使用的字符編碼
??????????????? 2.2.3.1.2 FileItem接口
??????????????????? 封裝單個(gè)表單字段元素的數(shù)據(jù),一個(gè)表單字段元素對應(yīng)一個(gè)FileItem對象
??????????????????? FileItem接口常用的方法
??????????????????????? isFormField() 判斷FileItem對象封裝的字段類型,普通表單字段返回true,文件表單字段返回false
??????????????????????? getName() 獲取文件上傳字段中的文件名,普通表單字段返回null
??????????????????????? getFieldName() 返回表單字段元素的name屬性值
??????????????????????? write() 將FileItem對象中保存的主體內(nèi)容保存到指定的文件中
??????????????????????? getString() 將FileItem對象中保存的主體內(nèi)容以一個(gè)字符串返回
??????????????????????? getSize() 返回單個(gè)上傳文件的字節(jié)數(shù)
??????????????? 2.2.3.1.3 FileItemFactory接口
??????????????????? FileUpload對象的創(chuàng)建需要依賴FileItemFactory工廠,將獲得的上傳文件FIleItem對象保存至服務(wù)器硬盤
??????????????????? FileItemFactory類常用的方法
??????????????????????? setSizeThreshold() 設(shè)置緩沖區(qū)的大小
??????????????????????? setRepositoryPath() 設(shè)置臨時(shí)文件存放的目錄
??????????? 2.2.3.2 使用Commons-FileUpload組件的API提供的相應(yīng)的方法實(shí)現(xiàn)文件上傳
??????????????? 1. 創(chuàng)建文件項(xiàng)工廠
??????????????????? DiskFileItemFactory factory = new DiskFileItemFactory();
??????????????? 2. 創(chuàng)建解析工具
??????????????????? ServletFileUpload upload = new ServletFileUpload(factory);
??????????????? 3. 解析表單中的每個(gè)字符的數(shù)據(jù)
??????????????????? List<FileItem> items = upload.parseRequest(request);
??????????????? 4. 查找字段,將文件表單字段的數(shù)據(jù)保存到服務(wù)器硬盤
??????????????????? item.write(saveFile);
第7章 Servlet基礎(chǔ)
1. Servlet簡介
??? Servlet是一個(gè)符合特定規(guī)范的Java程序,是一個(gè)Web組件,用于生成動(dòng)態(tài)的內(nèi)容。
?? ?
2. Servlet API
??? 編寫Servlet需要符合的規(guī)范
??? 2.1 Servlet接口
??????? 常用方法:
??????? init() Servlet對象在處理客戶請求前所要完成的初始化操作
??????? service() 處理客戶端的請求
??????? destory() 釋放Servlet對象所使用的資源
??????? getServletConfig() 獲取初始化參數(shù)
??????? getServletInfo() 獲取Servlet的相關(guān)信息
??? 2.2 HttpServlet類
??????? 常用方法:
??????? doPost() 處理以post方式提交的數(shù)據(jù)
??????? doGet() 處理以get方式提交的數(shù)據(jù)
??? 2.3 ServletContext對象
??????? web應(yīng)用的上下文
??????? 常用方法
??????????? getInitParameter() 獲取初始化參數(shù)
??????????? setAttribute() 設(shè)置指定名稱的屬性
??????????? getAttribute() 獲取指定名稱的屬性
??????????? getRealPath() 獲取服務(wù)器的真實(shí)路徑
??????????? log() 記錄日志信息
??? 2.4 ServletRequest接口
??????? 用于封裝客戶的請求信息
??????? 常用方法
??????????? setAttribute() 設(shè)置指定名稱的屬性
??????????? getAttribute() 獲取指定名稱的屬性
??????????? removeAttribute() 刪除指定名稱的屬性
??? 2.5 HttpServletRequest接口
??????? 繼承ServletRequest接口,用于HTTP傳輸協(xié)議
??????? 常用方法
??????????? getContextPath() 獲取URI中表示請求上下文的路徑
??????????? getCookies() 獲取客戶端在此次請求中所發(fā)送的所有cookie數(shù)據(jù)
??????????? getSession() 獲取和此次請求相關(guān)聯(lián)的session
??????????? getMethod() 返回此次請求所使用的HTTP方法的名字,如GET或POST
??? 2.6 ServletResponse接口
??????? 用于封裝相應(yīng)客戶端的數(shù)據(jù)
??????? 常用方法:
??????????? getWriter() 返回PrintWriter對象,用于向客戶端發(fā)送文本
??????????? getCharacterEncoding() 獲取在相應(yīng)中發(fā)送的正文所使用的字符編碼
??????????? setCharacterEncoding() 設(shè)置發(fā)送到客戶端的相應(yīng)的字符編碼
??????????? setContentType() 設(shè)置發(fā)送到客戶端響應(yīng)的內(nèi)容類型
??? 2.7 HttpServletResponse接口
??????? 繼承ServletResponse接口,用于HTTP傳輸協(xié)議
??????? 常用方法:
??????????? addCookie() 向客戶端添加cookie
??????????? addHeader() 將相應(yīng)報(bào)頭添加到相應(yīng)對象中
??????????? sendRedirect() 發(fā)送一個(gè)重定向的響應(yīng)到客戶端,讓客戶端訪問新的URL
?????????? ?
3. Servlet的生命周期
??? Servlet運(yùn)行需要部署到Servlet容器中,由容器管理Servlet,調(diào)用Servlet的相應(yīng)方法,Servlet的生命周期由Servlet容器管理
??? 3.1 加載和實(shí)例化
??????? 當(dāng)Servlet容器啟動(dòng)或當(dāng)客戶端發(fā)送一個(gè)請求時(shí),Servlet容器首先檢查是否存在該Servlet的示例,如果不存在,則創(chuàng)建一個(gè)實(shí)例,如果存在,則直接使用該實(shí)例
??? 3.2 初始化
??????? 在Servlet容器完成實(shí)例化以后,將調(diào)用init()方法進(jìn)行初始化,在處理客戶端請求時(shí)完成一些初始化工作
??? 3.3 服務(wù)
??????? 當(dāng)Servlet初始化完成后,就處于就緒狀態(tài),能夠響應(yīng)客戶端的請求。當(dāng)客戶端發(fā)出請求時(shí),Servlet調(diào)用響應(yīng)的方法處理請求,將處理結(jié)果響應(yīng)到客戶端
??? 3.4 銷毀
??????? 當(dāng)Servlet容器判斷一個(gè)Servlet是否應(yīng)當(dāng)被釋放時(shí),容器會調(diào)用Servlet的destory()方法,該方法可以指明哪些資源可以被釋放,然后由Servlet釋放響應(yīng)的對象
?????? ?
4. Servlet的應(yīng)用
??? 4.1 創(chuàng)建Servlet
??????? 創(chuàng)建一個(gè)自定義類,繼承HttpServlet類,重寫doPost()和doGet()
??? 4.2 部署Servlet
??????? 在Servlet所在的web應(yīng)用的web.xml配置文件的根節(jié)點(diǎn)中添加子節(jié)點(diǎn)servlet和servlet-mapping,其中servlet子節(jié)點(diǎn)中需要servlet-name節(jié)點(diǎn)和servlet-class節(jié)點(diǎn),
??????? servlet-class節(jié)點(diǎn)的文本是Servlet類的全名,servlet-那么節(jié)點(diǎn)的文本值自定義;servlet-mapping子節(jié)點(diǎn)需要servlet-name和url-pattern,servlet-name同樣自定義,
??????? 但需要與servlet節(jié)點(diǎn)中的servlet-name節(jié)點(diǎn)的值保持一致,url-pattern為Servlet綁定相對于當(dāng)前web應(yīng)用的url,在客戶端訪問該url,便可訪問部署好的Servlet
?????? ?
5. 使用Servlet實(shí)現(xiàn)控制器
??? Servlet與JSP相比,擅長邏輯控制,但數(shù)據(jù)展示方面不足,所以Servlet可以作為控制器調(diào)用程序其他層的方法來獲取數(shù)據(jù),將數(shù)據(jù)保存到相應(yīng)的作用域中,
??? 讓JSP頁面更加方便的展示數(shù)據(jù);同樣可以處理JSP頁面表單提交的數(shù)據(jù),處理后調(diào)用業(yè)務(wù)邏輯層的相關(guān)方法,將數(shù)據(jù)存入數(shù)據(jù)庫
第8章 JSTL和EL
1. EL表達(dá)式
?? ?1.1 EL表達(dá)式簡介
??????? javaScript和XPath的表達(dá)式語言,用于方便的訪問特定作用域的對象,簡化JSP頁面代碼
?? ?1.2 EL表達(dá)式語法
??????? ${EL表達(dá)式}
?? ??? ?1.2.1 點(diǎn)操作符
??????????? 訪問某個(gè)對象的屬性,如:${person.name} // 訪問person對象的name屬性的值
?? ??? ?1.2.2 []操作符
??????????? 訪問某個(gè)對象的屬性的值或訪問數(shù)組中某個(gè)元素的值,如:${person["name"]} // 訪問person對象的name屬性的值
?? ??? ?1.2.3 關(guān)系操作符
??????????? 判斷兩個(gè)值或表達(dá)式的大小關(guān)系,關(guān)系操作符有:>, <, ==, !=, >=, <=;
?? ??? ?1.2.4 邏輯操作符
??????????? 判斷兩個(gè)條件表達(dá)式或布爾值的邏輯關(guān)系,邏輯操作符有:&&, ||, !
?? ??? ?1.2.5 Empty操作符
??????????? 判斷指定的對象是否為空,如:${empty obj} // 判斷特定作用域中是否存在對象obj
?? ?1.3 EL表達(dá)式隱式對象
??????? 無需聲明便可直接使用,通過這些隱式對象可以訪問特定的對象
??????? 1.3.1 作用域?qū)ο?/span>
??????????? 必須將變量保存到特定的作用域中,才能使用EL表達(dá)式訪問。其作用域?qū)ο笥?#xff1a;
??????????? pageScope 當(dāng)前頁面作用域
??????????? requestScope 請求對象作用域
??????????? sessionScope 會話作用域
??????????? applicationScope 當(dāng)前web應(yīng)用作用域
??????? 1.3.2 參數(shù)訪問對象
??????????? param 按照參數(shù)名稱訪問單一請求值的Map對象
??????????? paramValues 按照參數(shù)名稱訪問數(shù)組請求值的Map對象
?? ??? ?1.3.3 JSP隱式對象
??????????? pageContext 提供對JSP內(nèi)置對象的訪問
2 JSTL標(biāo)簽
?? ?2.1 JSTL標(biāo)簽簡介
??????? JSP標(biāo)準(zhǔn)標(biāo)簽庫,這些標(biāo)簽代替了在JSP頁面中嵌入的java邏輯控制語句,從而簡化JSP頁面
?? ?
??? 2.2 JSTL核心標(biāo)簽庫
??????? 2.2.1 通用標(biāo)簽庫
??????????? 2.2.2.1 <c:set>標(biāo)簽
??????????????? 用于設(shè)置范圍變量的值或者JavaBean對象的屬性
??????????????? 語法:
??????????????? <c:set var="variable" value="v" scope="scope" />
??????????????? var 設(shè)置的變量名
??????????????? value 賦予變量的值
??????????????? scope 變量的作用域,可選值有page,request,session和application
??????????? 2.2.2.2 <c:out>標(biāo)簽
??????????????? 用于將計(jì)算表達(dá)式結(jié)果輸出顯示
??????????????? 語法:
??????????????? <c:out value="value" default="default">
??????????????? value 要輸出的值
??????????????? default 默認(rèn)值
??????????? 2.2.2.3 <c:remove>標(biāo)簽
??????????????? 與<c:set>標(biāo)簽的作用相反,<c:remove>用于移出指定范圍的變量
??????????????? 語法:
??????????????? <c:remove var="value" scope="scope">
??????????????? var屬性是指待移出的變量的名稱
??????????????? scope屬性是指移出的變量所在的范圍,可選項(xiàng)有page,request,session,application,如果沒有指定,則默認(rèn)為page
??????? 2.2.2 條件標(biāo)簽庫
??????????? 2.2.2.1 <c:if>標(biāo)簽
??????????????? 用于實(shí)現(xiàn)Java語言中if語句的功能
??????????????? 語法:
??????????????? <c:if test="condition" var="varName" scope="scope">
??????????????????? 主體內(nèi)容
??????????????? </c:if>
??????????????? test屬性是判斷條件,當(dāng)condition(可以用EL表達(dá)式表示)的結(jié)果true時(shí),會執(zhí)行主體內(nèi)容,如果false則不會執(zhí)行
??????????????? var屬性定義變量,該變量存在判斷以后的結(jié)果,該屬性可以省略
??????????????? scope屬性是指var定義變量的存儲范圍,可選值有page,request,session和application
??????????? 2.2.2.2 <c:choose>標(biāo)簽將
??????????????? <c:choose>,<c:when>,<c:otherwise>一起實(shí)現(xiàn)互斥條件的執(zhí)行,類似于java語言的if-else
??????????????? 語法:
??????????????? <c:choose var="varName" scope="scope">
??????????????????? <c:when test="condition">
??????????????????????? 主體內(nèi)容
??????????????????? </c:when>
??????????????????? <c:otherwise>
??????????????????????? 主體內(nèi)容
??????????????????? </c:otherwise>
??????????????? </c:if>
??????? 2.2.3迭代標(biāo)簽庫
??????????? 2.2.3.1 遍歷集合對象的成員
??????????????? 語法:
??????????????? <c:forEach var="varName" items="collectionName" varStatus="varStatusName"
??????????????????????? begin="beginIndex" end="endIndex" step="step">
??????????????????? 主體內(nèi)容
??????????????? </c:forEach>
??????????????? var 屬性是對當(dāng)前成員的引用
??????????????? items 指被迭代的對象
??????????????? varStatus 屬性用于存在var引用的成員的相關(guān)信息,如索引等.
??????????????? begin 屬性表示開始位置,默認(rèn)為0,該屬性可以省略
??????????????? end 屬性表示結(jié)束的位置,該屬性可以省略
??????????????? step 表示循環(huán)的步長,默認(rèn)為1,該屬性可以省略
??????????? 2.2.3.2 指定語句的執(zhí)行次數(shù)
??????????????? <c:forEach var="varName" varStatus="varStatusName">
??????????????????????? begin="beginIndex" end="endIndex" step="step"
??????????????????? 主體內(nèi)容
??????????????? </c:forEach>
一、面向?qū)ο?/span>
?? ?1.1 面向?qū)ο笤O(shè)計(jì):
?? ??? ?1.發(fā)現(xiàn)類
?? ??? ?2.發(fā)現(xiàn)類的屬性
?? ??? ?3.發(fā)現(xiàn)類的方法
?? ?1.2 類和對象
?? ??? ?1.2.1 構(gòu)造方法及其重載(定義)
?? ??? ??? ?1.2.1.1 構(gòu)造方法:定義及使用。
?? ??? ??? ?1.2.1.2 方法重載:定義及使用。
?? ??? ?1.2.2 static修飾符
?? ??? ??? ?1.2.2.1 定義:static所修飾的類和方法稱為類屬性,類方法
?? ??? ??? ?1.2.2.2 作用:static所修飾的變量屬于這個(gè)類所有,
?? ??? ??? ??? ??? ??? ?? 即由這個(gè)類創(chuàng)建的所有隊(duì)形共用同一個(gè)static變量
?? ??? ??? ?1.2.2.3 注意:靜態(tài)方法中不能使用this和super關(guān)鍵字;
?? ??? ??? ??? ??? ??? ?? 方法里不可以定義static變量;
?? ??? ??? ?1.2.2.4 靜態(tài)域 :static{
?? ??? ??? ??? ??? ??? ??? ??? ??? ?}
?? ?1.3 封裝
?? ??? ?1.3.1 封裝的步驟:私有化屬性,公開對成員屬性的存取操作方法
?? ??? ?1.3.2 封裝的優(yōu)勢:隱藏累的實(shí)現(xiàn)細(xì)節(jié);讓使用者只能通過特定方法訪問數(shù)據(jù);
?? ??? ? ??? ??? ??? ??? ?? 方便加入存取數(shù)據(jù),限制不合理操作。
?? ?
二、JSP開發(fā)業(yè)務(wù)應(yīng)用
?? ?1.分頁顯示()
?? ??? ?為什么需要分頁:數(shù)據(jù)量很大的時(shí)候,能按照指定格式顯示,布局清晰,不受信息數(shù)量的限制
?? ??? ?1.1步驟
?? ??? ??? ?1.1.1 確定每頁的顯示數(shù)量
?? ??? ??? ?1.1.2 計(jì)算總頁數(shù)
?? ??? ??? ?1.1.3 編寫SQL語句
?? ??? ??? ??? ?起始行的下標(biāo) = (當(dāng)前頁頁碼-1)* 每頁顯示的數(shù)據(jù)量
?? ?2.Commons-FileUpload (文件操作)
?? ??? ?2.1 簡介
?? ??? ??? ?使用簡單
?? ??? ??? ?能夠全程控制上傳內(nèi)容
?? ??? ??? ?能夠?qū)ι蟼魑募㈩愋瓦M(jìn)行控制
?? ??? ?2.2 表單的屬性設(shè)置
?? ??? ??? ?添加屬性enctype,而且method屬性必須取值為"post"
?? ??? ??? ?<form enctype = "multipart/form-data" method="post">
?? ??? ?2.3 使用 File 控件選擇文件?????? ?
?? ??? ??? ?<input type="file" name="nfile">
?? ??? ?2.4 API
?? ??? ??? ?導(dǎo)入組件所使用的類庫:<%@ page import="org.apache.commons.fileupload.*" %>
?? ??? ??? ?2.4.1 ServletFileUpload 類
?? ??? ??? ?2.4.2 FileItem 接口
?? ??? ??? ?2.4.3 FileItemFactory 接口與實(shí)現(xiàn)類
?? ??? ?2.5 應(yīng)用
?? ??? ??? ?2.5.1 導(dǎo)入所需的類
?? ??? ??? ?2.5.2 判斷請求信息中的內(nèi)容是否是multipart類型
?? ??? ??? ?2.5.3 通過工廠對象實(shí)例化ServletFileUpload對象
?? ??? ??? ?2.5.4 調(diào)用parserRuquest()將表單中對象解析成FileItem對象的集合
?? ??? ??? ?2.5.5 通過迭代依次處理每個(gè)文件
?? ??? ?2.6 控制文件上傳
?? ??? ??? ?2.6.1 控制類型(P157)
?? ??? ??? ??? ?//通過Arrays類的asList()方法創(chuàng)建固定長度的集合
?? ??? ??? ??? ?//判斷文件類型是否在允許范圍內(nèi)
?? ??? ??? ?2.6.2 控制文件上傳的大小(P158)
?? ??? ??? ??? ?//首先設(shè)置緩沖區(qū)大小
?? ??? ??? ??? ?//然后設(shè)置上傳文件用到臨時(shí)文件存放路徑
?? ??? ??? ??? ?//再設(shè)置單個(gè)文件的最大限制
?? ??? ??? ??? ?//最后利用try-catch捕獲異常?? ?
?? ??? ??? ?
三、Servlet
?? ?1.Servlet的定義;Servlet是使用Java Servlet應(yīng)用程序設(shè)計(jì)接口及相關(guān)類和方法的Java程序。
?? ??? ?2.使用Servlet:
?? ??? ??? ?2.1 優(yōu)勢:高效、方便、功能強(qiáng)大、可移植性好、節(jié)省投資
?? ??? ??? ?2.2 注意:1.導(dǎo)入所需的servlet包 2.繼承HttpServlet 3.需實(shí)現(xiàn)doGet()或doPost()方法;
?? ??? ?4.Servlet與JSP的關(guān)系
?? ??? ??? ?4.1 servlet是Java編程語言中的一個(gè)類,它被用來擴(kuò)展服務(wù)器的性能,
?? ??? ??? ???? 服務(wù)器上駐留著可以通過“請求-響應(yīng)”編程模型來訪問的應(yīng)用程序
?? ??? ?5.Servlet與JSP
?? ??? ??? ?5.1 區(qū)別:1.jsp經(jīng)編譯后就變成了Servlet
?? ??? ??? ??? ??? ?? 2.jsp更擅長表現(xiàn)于頁面顯示,servlet更擅長于邏輯控制
?? ??? ??? ??? ??? ?? 3.Jsp是Servlet的一種簡化,使用Jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,
?? ??? ??? ??? ??? ???? Jsp中的Java腳本如何鑲嵌到一個(gè)類中,由Jsp容器完成。而Servlet則是個(gè)完整的Java類,
?? ??? ??? ??? ??? ???? 這個(gè)類的Service方法用于生成對客戶端的響應(yīng)。
?? ??? ?6.Servlet API
?? ??? ??? ?6.1 Servlet 接口
?? ??? ??? ??? ?6.1.1:方法:init(ServletConfig fonfig)-->由servlet容器調(diào)用,完成客戶請求前的初始化操作。
?? ??? ??? ??? ??? ??? ??? ? service(ServletRequesst req,ServletResponse res)-->由servlet容器調(diào)用,處理客戶請求。
?? ??? ??? ??? ??? ??? ??? ? destroy()-->由servlet容器調(diào)用,釋放servlet對象所使用的資源
?? ??? ??? ??? ??? ??? ??? ? ServletConfig getServletConfig()-->返回ServletConfig對象,包含初始化參數(shù)和啟動(dòng)參數(shù)。傳遞給init()方法
?? ??? ??? ??? ??? ??? ??? ? String getServletInfo()-->返回有關(guān)servlet的信息
?? ??? ??? ?6.2 抽象類HttpServlet
?? ??? ??? ??? ?6.2.1 方法:service(...)-->調(diào)用GenericServlet類中service()方法的實(shí)現(xiàn)
?? ??? ??? ??? ??? ??? ??? ?doXXX(...)-->根據(jù)請求方式,調(diào)用相應(yīng)的處理方法,如doGet()或doPost();
?? ??? ??? ?6.3 ServletContext 對象
?? ??? ??? ??? ?6.3.1 方法:getInitParameter(String name)-->獲取名稱為name的系統(tǒng)范圍內(nèi)的初始化參數(shù);
?? ??? ??? ??? ??? ??? ??? ?setAttribute(String name,Object object)-->設(shè)置名稱為name的屬性;
?? ??? ??? ??? ??? ??? ??? ?getAttribute(String name)-->獲取名稱為name的屬性;
?? ??? ??? ??? ??? ??? ??? ?getRealPath(String path)-->返回參數(shù)所代表目錄的真實(shí)路徑;
?? ??? ??? ??? ??? ??? ??? ?log(String message)-->記錄一般日志信息;
?? ??? ??? ?6.4 ServletRequest 和 HttpServletRequest 接口
?? ??? ??? ??? ?6.4.1 ServletRequest
?? ??? ??? ??? ??? ?6.4.1.1 方法:setAttribute(String name,Object object)-->設(shè)置名稱為name的屬性;
?? ??? ??? ??? ??? ??? ??? ? ??? ?? getAttribute(String name)-->獲取名稱為name的屬性;
?? ??? ??? ??? ??? ??? ??? ??? ?? removeAttribute(String name)-->移除名稱為name的屬性;
?? ??? ??? ??? ?6.4.2 HttpServletRequest
?? ??? ??? ??? ??? ?6.4.2.1 方法:getContextPath()-->返回請求URI中表示請求上下文路徑;
?? ??? ??? ??? ??? ??? ??? ??? ?? Cookie[] getCookies()-->返回客戶端在此次請求中發(fā)送的所有cooki對象
?? ??? ??? ??? ??? ??? ??? ??? ?? HttpSession getSession()-->返回此次請求相關(guān)聯(lián)的session;如果沒有,則新建一個(gè)session
?? ??? ??? ?6.5 ServletResponse 和 HttpServletResponse 接口
?? ??? ??? ??? ?6.5.1 ServletResponse
?? ??? ??? ??? ??? ?6.5.1.1 方法:printWriter getWriter()-->返回printWriter對象,用于向客戶端發(fā)送文本;
?? ??? ??? ??? ??? ??? ??? ??? ?? getCharacterEncoding()-->返回相應(yīng)的正文所使用的字符編碼;
?? ??? ??? ??? ??? ??? ??? ??? ?? setcharacterEncoding()-->設(shè)置發(fā)送到客戶端的響應(yīng)的字符編碼;
?? ??? ??? ??? ??? ??? ??? ??? ?? setContentType(String type)-->設(shè)置發(fā)送到客戶端的響應(yīng)的內(nèi)容類型;
?? ??? ??? ??? ?6.5.2 HttpServletResponse
?? ??? ??? ??? ??? ?6.5.2.1 方法:addCookie(Cookie cookie)-->增加一個(gè)cookie到響應(yīng)中,可多次調(diào)用;
?? ??? ??? ??? ??? ??? ??? ??? ?? addHeader(String name,String value)-->將一個(gè)名稱為name,值為value的響應(yīng)報(bào)頭添加到響應(yīng)中;
?? ??? ??? ??? ??? ??? ??? ??? ?? sendRedirect(String location)-->發(fā)送一個(gè)臨時(shí)的重定向響應(yīng)到客戶端,以便訪問新的URL
?? ??? ??? ??? ??? ??? ??? ??? ?? encodeURL(String url)-->使用session ID 對用于重定向的URL進(jìn)行編碼;
?? ??? ?7.Servlet生命周期
?? ??? ??? ?7.1 加載與實(shí)列化-->servlet容器創(chuàng)建servlet的實(shí)例
?? ??? ??? ?7.2 初始化-->該容器調(diào)用init()方法
?? ??? ??? ?7.3 服務(wù)-->如果請求servlet,則容器調(diào)用service()方法
?? ??? ??? ?7.4 銷毀-->銷毀實(shí)例之前調(diào)用destroy()方法
?? ??? ?8.Servlet的應(yīng)用
?? ??? ??? ?8.1 Servlet的編譯和部署
?? ??? ??? ?8.2 創(chuàng)建Servlet
?? ??? ??? ?8.3 部署Servlet
?? ??? ??? ?8.4 啟動(dòng)Tomcat訪問
四、JSTL與EL
?? ?1.EL表達(dá)式(為什么使用:減少在JSP頁面中大量java代碼,可讀性高;
?? ??? ??? ??? ??? ?? 特點(diǎn):自動(dòng)轉(zhuǎn)換類型、使用簡單;
?? ??? ??? ??? ?? 適用范圍:page/request/session/application;)
?? ??? ?1.1 語法
?? ??? ??? ?${EL 表達(dá)式}
?? ??? ?1.2 操作符
?? ??? ??? ?1.2.1 點(diǎn)操作符
?? ??? ??? ??? ?1.2.1.1?? ?對象
?? ??? ??? ??? ?1.2.1.2?? ?屬性
?? ??? ??? ?1.2.2 []操作符
?? ??? ??? ??? ?1.2.2.1?? ?訪問特殊字符
?? ??? ??? ??? ?1.2.2.2?? ?訪問數(shù)組
?? ??? ??? ?1.2.3 關(guān)系操作符
?? ??? ??? ??? ?1.2.3.1 ==(eq)
?? ??? ??? ??? ?1.2.3.2 !=(ne)
?? ??? ??? ??? ?1.2.3.3 < (lt)
?? ??? ??? ??? ?1.2.3.4 > (gt)
?? ??? ??? ??? ?1.2.3.5 <=(le)
?? ??? ??? ??? ?1.2.3.6 >=(ge)
?? ??? ??? ?1.2.4 邏輯操作符
?? ??? ??? ??? ?1.2.4.1 &&(and)
?? ??? ??? ??? ?1.2.4.2 ||(or)
?? ??? ??? ??? ?1.2.4.3 !(not)
?? ??? ??? ?1.2.5 Empty操作符(檢測值是否為null或者empty)
?? ??? ?1.3 表達(dá)式隱式對象
?? ??? ??? ?1.3.1 作用域訪問對象
?? ??? ??? ??? ?1.3.1.1 pageScope(頁面作用域 page)
?? ??? ??? ??? ?1.3.1.2 requestScope(請求作用域 request)
?? ??? ??? ??? ?1.3.1.3 sessionScope(會話作用域 session)
?? ??? ??? ??? ?1.3.1.4 applicationScope(應(yīng)用程序作用域 application)
?? ??? ??? ?1.3.2 參數(shù)訪問對象
?? ??? ??? ??? ?1.3.2.1 param(單一請求值)
?? ??? ??? ??? ?1.3.2.2 paramValues(數(shù)組請求值)
?? ??? ??? ?1.3.3 JSP隱式對象
?? ??? ??? ??? ?1.3.3.1 pageContext(頁面信息和JSP內(nèi)置對象的訪問)
?? ?2.JSTL(什么是JSTL:即JSP標(biāo)準(zhǔn)標(biāo)簽庫;
?? ??? ??? ?如何使用:引用jar包和標(biāo)簽庫描述符文件、使用taglib指令導(dǎo)入標(biāo)簽庫描述符文件;)
?? ??? ?2.1 標(biāo)簽庫
?? ??? ??? ?2.1.1 通用標(biāo)簽庫
?? ??? ??? ??? ?2.1.1.1 <c:set>(設(shè)置范圍范圍變量、屬性的值或JavaBean對象的屬性)
?? ??? ??? ??? ?2.1.1.1.1 語法
?? ??? ??? ??? ?2.1.1.1.1.1 <c:set var="variable" value="v" scope="scope"/>
?? ??? ??? ??? ??? ??? ??? ?(將value值存儲到范圍為scope的變量variable中
?? ??? ??? ??? ??? ??? ??? ??? ?var:變量名
?? ??? ??? ??? ??? ??? ??? ??? ?value:變量的值
?? ??? ??? ??? ??? ??? ??? ??? ?scope:變量的作用域)
?? ??? ??? ??? ?2.1.1.1.1.2 <c:set value="value" target="target" property="property"/>
?? ??? ??? ??? ??? ??? ??? ?(將value值設(shè)置到對象的屬性中
?? ??? ??? ??? ??? ??? ??? ??? ?target:操作的JavaBean對象
?? ??? ??? ??? ??? ??? ??? ??? ?property:JavaBean對象的屬性名
?? ??? ??? ??? ??? ??? ??? ??? ?value:JavaBean對象屬性值)
?? ??? ??? ??? ?2.1.1.2 <c:out>(將計(jì)算的表達(dá)式結(jié)果輸出顯示)
?? ??? ??? ??? ?2.1.1.2.1 語法
?? ??? ??? ??? ?2.1.1.2.2.1 <c:out value="value"/>
?? ??? ??? ??? ??? ??? ??? ?(不指定默認(rèn)值
?? ??? ??? ??? ??? ??? ??? ??? ?value:需要輸出變量的值)
?? ??? ??? ??? ?2.1.1.2.2.2 <c:out value="value" default="default"/>
?? ??? ??? ??? ??? ??? ??? ?(指定默認(rèn)值
?? ??? ??? ??? ??? ??? ??? ??? ?default:value值為空時(shí)輸出的默認(rèn)值)
?? ??? ??? ??? ?2.1.1.3 <c:remove>(移除指定范圍的變量)
?? ??? ??? ??? ?2.1.1.3.1 語法
?? ??? ??? ??? ?2.1.1.3.1.1 <c:remove var="value" scope="scope"/>
?? ??? ??? ??? ??? ??? ??? ?(var:待移除的變量名稱
?? ??? ??? ??? ??? ??? ??? ?? scope:移除的變量所在的范圍)
?? ??? ??? ?2.1.2 條件標(biāo)簽庫
?? ??? ??? ??? ?2.1.2.1 <c:if>(實(shí)現(xiàn)java中if語句的功能)
?? ??? ??? ??? ?2.1.2.1.1 語法
?? ??? ??? ??? ?2.1.2.1.1.1 <c:if test="condition" var="varName" scope="scope">
?? ??? ??? ??? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ??? ??? ??? ?</c:if>
?? ??? ??? ??? ??? ??? ??? ?(test:判斷條件
?? ??? ??? ??? ??? ??? ??? ?? var:定義變量,存放結(jié)果,可省略
?? ??? ??? ??? ??? ??? ??? ?? scope:var值得存儲范圍,可省略)
?? ??? ??? ??? ?2.1.2.2 <c:choose>(類似java中的if-else語句,與<c:when>/<c:otherwise>一起實(shí)現(xiàn)互拆條件的執(zhí)行)
?? ??? ??? ??? ?2.1.2.2.1 語法
?? ??? ??? ??? ?2.1.2.2.2.1 <c:choose var="varName" scope="scope">
?? ??? ??? ??? ??? ??? ??? ??? ?<c:when test="condition">
?? ??? ??? ??? ??? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ??? ??? ??? ??? ?</c:when>
?? ??? ??? ??? ??? ??? ??? ??? ?<c:otherwise>
?? ??? ??? ??? ??? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ??? ??? ??? ??? ?</c:otherwise>
?? ??? ??? ??? ??? ??? ??? ?</c:if>
?? ??? ??? ?2.1.3 迭代標(biāo)簽庫
?? ??? ??? ??? ?2.1.3.1 <c:forEach>
?? ??? ??? ??? ?2.1.3.2 語法
?? ??? ??? ??? ?2.1.3.2.1 <c:forEach var="varName" items="collectionName" varStatus="varStatusName" begin="beginIndex" end="endIndex" step="step">
?? ??? ??? ??? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ??? ??? ?? </c:forEach>
?? ??? ??? ??? ??? ??? ?? (遍歷集合對象的成員
?? ??? ??? ??? ??? ??? ??? ??? ?var:對當(dāng)前成員的引用
?? ??? ??? ??? ??? ??? ??? ??? ?items:被迭代的集合對象
?? ??? ??? ??? ??? ??? ??? ??? ?varStatus:存放var引用的成員的相關(guān)信息
?? ??? ??? ??? ??? ??? ??? ??? ?begin:表示開始位置,可省略
?? ??? ??? ??? ??? ??? ??? ??? ?end:表示結(jié)束位置,可省略
?? ??? ??? ??? ??? ??? ??? ??? ?step:表示循環(huán)的步長,可省略)
?? ??? ??? ??? ?2.1.3.2.2 <c:forEach var="varName" varStatus="varStatusName" begin="beginIndex" end="endIndex" step="step">
?? ??? ??? ??? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ??? ??? ?? </c:forEach>
?? ??? ??? ??? ??? ??? ?? (指定語句循環(huán)次數(shù)
?? ??? ??? ??? ??? ??? ??? ??? ?var:對當(dāng)前成員的引用
?? ??? ??? ??? ??? ??? ??? ??? ?varStatus:存放var引用的成員的相關(guān)信息
?? ??? ??? ??? ??? ??? ??? ??? ?begin:表示開始位置,可省略
?? ??? ??? ??? ??? ??? ??? ??? ?end:表示結(jié)束位置,可省略
?? ??? ??? ??? ??? ??? ??? ??? ?step:表示循環(huán)的步長,可省略)
一.多態(tài)
1.0? 多態(tài)的定義
?? ?根據(jù)發(fā)送對象的不同而采用多種不同的行為方式。
1.1? 多態(tài)的作用
?? ?消除類型之間的耦合關(guān)系。
1.2 子類到父類的轉(zhuǎn)型,自動(dòng)類型轉(zhuǎn)換,向上轉(zhuǎn)型
? ?? ?
?? ?1.2.1 規(guī)則:
?? ??? ?1.將一個(gè)父類的引用指向一個(gè)子類對象
?? ??? ?2.通過父類的引用變量調(diào)用的方法是子類覆蓋或繼承子類方法
?? ??? ?3.通過父類的應(yīng)用無法調(diào)用子類特有的方法
?? ?
1.3 多態(tài)存在的三個(gè)必要條件
?? ?1、要有繼承;
?? ?2、要有重寫;
?? ?3、父類引用指向子類對象。
1.4 實(shí)現(xiàn)多態(tài)的兩種方式:
?? ?1.4.1 使用父類作為方法形參實(shí)現(xiàn)多態(tài)
?? ??? ?語法
?? ??? ??? ?父類? 對象 = 子類的實(shí)例
? ?? ??? ?例子:?? ?Pet pet = new Dog();
?? ??? ?好處:
?? ??? ??? ?1.減少代碼量
?? ??? ??? ?2.提高代碼的重用性
??? ??? ??? ?3.便于維護(hù)
?? ??? ??? ?4.可擴(kuò)展性
?? ?1.4.2 使用父類作為對象返回值實(shí)現(xiàn)多態(tài);
1.5 父類到子類的轉(zhuǎn)型,強(qiáng)制類型轉(zhuǎn)換,向下轉(zhuǎn)型
?? ?例如:
? ?? ??? ?Pet pet? = new Dog("歐歐","雪納瑞");
?? ??? ?Dog dog = (Dog)Pet; ?? ?//正確
?? ??? ?Penguin pgn = (Penguin)pet;?? ?//錯(cuò)誤
1.5.1 instanceof 運(yùn)算符
? ?? ?作用:用來判斷一個(gè)對象是否屬于一個(gè)類或者實(shí)現(xiàn)了一個(gè)接口
?? ?
?? ?語法:
?? ?對象 instanceof 類或接口
?? ?例子:Pet instanceof Dog
?? ?特點(diǎn):instanceof,保證數(shù)據(jù)轉(zhuǎn)換,增加代碼的健壯性
?? ?
二.使用jQuery操作DOM
1.1 DOM操作(優(yōu)勢:簡化了傳統(tǒng)JavaScript操作DOM是繁冗的代碼,更加解決了平臺之間的兼容性,并使用戶與計(jì)算機(jī)交互更加便捷,更加多樣。)
1.1.1 DOM操作的分類
1.1.1.1 DOM Core(核心)
?? ?首先任何一種支持DOM的編程語言都可以使用DOM Core它的用途不僅限于處理一種使用性標(biāo)記語言編寫出來的文檔,如:HTML
JavaScript中的getElementById(),getElementByName()等方法都是DOM Core的組成部分,例如,使用document.getElementById("p")可以獲取頁面中的<P>元素。
1.1.1.2 HTML-DOM
?? ?在使用JavaScript和DOM為HTML文件編寫腳本時(shí),有許多專屬于HTML-DOM的屬性。HTML-DOM 出現(xiàn)的比DOM Core更早,它提供了一些簡明的標(biāo)記來描述各種
HTML元素的屬性,如:document.froms,獲取表單對象。
1.1.1.3 CSS-DOM
?? ?CSS-DOM 是針對CSS的操作。在JavaScript中,CSS-DOM的技術(shù)主要是獲取和設(shè)置style對象的各種屬性,即CSS屬性。通過style對象的各種屬性,可以使網(wǎng)
頁呈現(xiàn)出各種不同的效果,如:element.style.color="red",設(shè)置文本為綠色。
1.1.2 jQuery 中的DOM操作
?? ?jQuery中的DOM操作主要可分為樣式操作,文本操作和value屬性值操作,節(jié)點(diǎn)操作,節(jié)點(diǎn)操作中又包含屬性操作,節(jié)點(diǎn)遍歷和CSS-DOM操作。其中最核心的
部分是節(jié)點(diǎn)操作和節(jié)點(diǎn)遍歷。
1.2 樣式操作
1.2.1 直接設(shè)置樣式
語法:
?? ?css(name,value) //設(shè)置單個(gè)屬性
??? 或者
?? ?css({name:value,name:value,name:value...}) //設(shè)置多個(gè)屬性
css()方法的參數(shù)說明(name:css屬性的名稱,如font-size,background等,value:css屬性值,#0000,24px等)
1.2.2 追加樣式和移除樣式
1.2.2.1 追加樣式
語法:
?? ?addClass(class)?? ?//追加單個(gè)樣式
class為類樣式的名稱,可以增加多個(gè)類樣式,各個(gè)類樣式之間以空格隔開。
或者
?? ?addClass(class1 class2 class3...classN)?? ?//追加多個(gè)樣式
1.2.2.2 移除樣式
語法:
?? ?removeClass(class) //移除單個(gè)樣式
或
?? ?removeClass(class1 class2 class3...classN) //移除多個(gè)樣式
1.2.3 切換樣式
在jQuery使用toggle()方法可以切換元素的可見狀態(tài),toggleClass()方法可以切換不同的元素類樣式。
語法:
?? ?toggleClass(class) ?? ?//切換可見樣式
1.3 內(nèi)容操作
1.3.1 HTML代碼操作
?? ?在jQuery中,可以使用html()對HTML代碼進(jìn)行操作。
語法:
?? ?html([content])
html()方法參數(shù)說明
content可選表示該參數(shù)可以包含HTML標(biāo)簽,無參數(shù)時(shí),表示獲取被選元素的文本內(nèi)容。
1.3.2 標(biāo)簽內(nèi)容操作
語法:
?? ?text([content])
text()方法參數(shù)說明
content可選表示該參數(shù)可以包含HTML標(biāo)簽,無參數(shù)時(shí),表示獲取被選元素的文本內(nèi)容。
text()與html()區(qū)別
html()獲取讀一個(gè)匹配元素的HTML內(nèi)容或文本內(nèi)容
text()獲取所有匹配元素的文本內(nèi)容
1.3.3 屬性值操作
語法:
?? ?val([value])
val()方法的參數(shù)說明
value:可選 返回第一被選元素的value屬性值
1.4 節(jié)點(diǎn)與屬性操作
1.4.1 節(jié)點(diǎn)操作
1.4.1.1 節(jié)點(diǎn)操作
1.4.1.2 創(chuàng)建節(jié)點(diǎn)元素
語法:
?? ?$(selector)?? ?//選擇器。使用jQuery選擇器匹配元素
或
?? ?$(element)?? ?//DOM元素。以DOM元素來創(chuàng)建jQuery對象
或
?? ?$(html)?? ??? ?//HTML代碼。使用HTML字符串創(chuàng)建jQUery對象
1.4.1.3 插入節(jié)點(diǎn)
內(nèi)部插入(
?? ?append(content)?? ??? ?//向所選擇的元素內(nèi)部插入內(nèi)容
?? ?appendTo(content)?? ?//把所選擇的元素追加到另一個(gè)指定的元素集合中
?? ?prepend(content) ?? ?//向每個(gè)選擇的元素內(nèi)部前置內(nèi)容
?? ?prependTo(content) ?? ?//將所有匹配元素前置點(diǎn)指定的元素中
)
外部插入(
?? ?after(content) ?? ??? ?//在每個(gè)匹配的元素之后插入內(nèi)容
?? ?inertAfter(content)?? ?//將所有匹配元素插入到指定元素的后面
?? ?before(content)?? ??? ?//向所選擇的元素外部前面插入內(nèi)容
?? ?inertBefore(content)?? ?//將所有匹配的元素插入到指定元素前面
)
1.4.1.4 刪除節(jié)點(diǎn)
語法:
?? ?$(selector).remove([expr])?? ?//可刪除指定元素
?? ?$(selector).empty()?? ??? ?//清空
1.4.1.5 替換節(jié)點(diǎn)
語法:
?? ?$(selector).replaceWith()?? ?//替換節(jié)點(diǎn)元素
或
?? ?$(selector).replaceAll()
1.4.1.6 復(fù)制節(jié)點(diǎn)
?? ?$(selector).clone([includeEvents])
clone()參數(shù)為可選值為:布爾值(true/false)?? ?
1.4.2 屬性操作
1.4.2.1 獲取與設(shè)置元素屬性
語法:
?? ?$(selector).attr([name])? //獲取屬性值
或者
?? ?$(selector).attr({[name1:value1],[name2:value2]...[nameN:valueN]})?? ?//獲取多個(gè)屬性值
1.4.2.2 刪除元素屬性
語法:
?? ?$(selector).removeAttr()?? ?//刪除節(jié)點(diǎn)屬性
1.5 節(jié)點(diǎn)遍歷
1.5.1 遍歷子元素
語法:
?? ?$(selector).chiledren([expr])?? ?//遍歷子元素
expr:為可選,用于過濾子元素
1.5.2 遍歷同輩元素
?? ?next() ?? ??? ?//用于獲取緊鄰匹配元素之后元素
?? ?prev()?? ??? ?//用于獲取緊鄰匹配元素之前元素
?? ?sibling()?? ?//用于獲取匹配元素前后的所有同輩元素
1.5.3 遍歷前輩元素
?? ?$(selector).parent()?? ?//獲取當(dāng)前匹配元素的父級元素
?? ?$(selector).parents()?? ?//獲取當(dāng)前匹配元素的祖級元素
1.6 CSS-DOM操作
?? ?css()?? ??? ?//設(shè)置或返回匹配元素的樣式屬性
?? ?height()?? ?//設(shè)置或返回匹配元素的高度
?? ?width()?? ??? ?//舍子或返回匹配元素的寬度
?? ?offset()?? ?//返回以像素為單位的top和left坐標(biāo)
?? ?offsetParent()?? ?//返回最近的以定位祖先元素
?? ?scrollLeft()?? ?//設(shè)置或返回匹配元素相對滾動(dòng)條左側(cè)的偏移?? ?
?? ?scrollTop()?? ?//設(shè)置或返回匹配元素相對滾動(dòng)條頂部的偏移
?? ?
三.動(dòng)態(tài)網(wǎng)頁基礎(chǔ)
1.1 動(dòng)態(tài)網(wǎng)頁基礎(chǔ)
?? ?1.1.1 什么是動(dòng)態(tài)網(wǎng)頁(指在服務(wù)器端運(yùn)行的,使用程序語言設(shè)計(jì)的交互式網(wǎng)頁)
?? ?1.1.2 動(dòng)態(tài)網(wǎng)頁的優(yōu)勢是什么(交互性,自動(dòng)更新,隨機(jī)性)
?? ?1.1.3 C/S架構(gòu)(客戶端 服務(wù)器,維護(hù)成本高)
?? ??? ?1.1.3.1 適用場合(企業(yè)內(nèi)部的信息管理系統(tǒng),金融證劵管理系統(tǒng))
?? ?1.1.4 B/S架構(gòu)(瀏覽器 服務(wù)器,開發(fā)成本高 維護(hù)成本低)
?? ??? ?1.1.4.1 適用場合(企業(yè)網(wǎng)站,售后服務(wù),物流信息的查詢系統(tǒng))
?? ??? ?1.1.4.2 工作原理(①瀏覽器接收用戶的輸入②瀏覽器向服務(wù)器端發(fā)送請求③數(shù)據(jù)處理④發(fā)送響應(yīng))
?? ?1.1.5 什么是URL(統(tǒng)一資源定位符)
?? ?1.1.6 URL的組成(①協(xié)議②服務(wù)器域名或IP③端口號④路徑)
1.2 部署簡單的Web應(yīng)用
?? ?1.2.1 Tomcat的獲取和安裝
?? ?1.2.2 Tomcat目錄結(jié)構(gòu)
?? ?1.2.3 Tomcat端口號的配置(conf/server.xml/<Connector>)
?? ?1.2.4 Web應(yīng)用的目錄結(jié)構(gòu)(WEB-INF/web.xml)
?? ?1.2.5 配置起始訪問頁面(web.xml/<welcome-file-list>)
1.3 JSP簡介
?? ?1.3.1 什么是JSP(一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn))
?? ?1.3.2 JSP優(yōu)點(diǎn)(跨平臺性,易維護(hù)性,易管理性...)
?? ?1.3.3 JSP的執(zhí)行過程(①翻譯階段(.java)②編譯階段(.class)③執(zhí)行階段)
1.4 JSP頁面組成(靜態(tài)內(nèi)容,指令,表達(dá)式,小腳本,聲明,標(biāo)準(zhǔn)動(dòng)作,注釋等元素構(gòu)成)
?? ?1.4.1 靜態(tài)內(nèi)容(HTML)
?? ?1.4.2 JSP中注釋(<!--HTML注釋-->,<%--JSP注釋--%>,<% 腳本 %>)
?? ?1.4.3 JSP指令元素("<%@ "開始,以" %>"結(jié)束)
?? ??? ?1.4.3.1 為什么需要page指令(通過import關(guān)鍵字引入java.util包和java.text包中的類)
?? ??? ?1.4.3.2 什么是page指令(指針對當(dāng)前頁面進(jìn)行設(shè)置的一種指令,通常位于JSP頁面的頂端)
?? ??? ?1.4.3.3 page語法(<%@ page 屬性 1="屬性值"屬性 2="屬性值1,屬性值2"...... 屬性n="屬性值"%>)
?? ??? ?1.4.3.4 page指令常用屬性(language,import,contentType)
?? ?1.4.4 JSP腳本元素(表達(dá)式,小腳本,聲明)
?? ??? ?1.4.4.1 什么是小腳本(小腳本可以包含任意的java片段,形式比較靈活,通過在JSP頁面中編寫小腳本可以執(zhí)行復(fù)雜的操作和業(yè)務(wù)處理)
?? ??? ?1.4.4.2 什么是表達(dá)式(表達(dá)式是對數(shù)據(jù)的表示,系統(tǒng)將其作為一個(gè)值進(jìn)行計(jì)算和顯示)
?? ??? ?1.4.4.3 JSP聲明語法(<%! Declaration;[ Declaration;]......%>)
1.5 使用集成開發(fā)工具創(chuàng)建Web應(yīng)用
?? ?1.5.1 創(chuàng)建Web項(xiàng)目(File--New--Web Project)
?? ?1.5.2 部署Web項(xiàng)目(Window --> Preferences)
?? ?1.5.3 Web程序的調(diào)試與排錯(cuò)(未啟動(dòng)Tomcat服務(wù),未部署Web應(yīng)用,URL輸入錯(cuò)誤,目錄不能被引用)
四.《Servlet》基礎(chǔ)
1.Servlet簡介
?? ??? ?Servlet 是一個(gè) Java程序,是在服務(wù)器上運(yùn)行以處理客戶端請求并做出響應(yīng)的程序
2.Servlet體系結(jié)構(gòu)
?? ? 2.1 Servlet接口
??????? 常用方法:
??????? init() Servlet對象在處理客戶請求前所要完成的初始化操作
??????? service() 處理客戶端的請求
??????? destory() 釋放Servlet對象所使用的資源
??????? getServletConfig() 獲取初始化參數(shù)
??????? getServletInfo() 獲取Servlet的相關(guān)信息
??? 2.2 HttpServlet類
??????? 常用方法:
??????? doPost() 處理以post方式提交的數(shù)據(jù)
??????? doGet() 處理以get方式提交的數(shù)據(jù)
??? 2.3 ServletContext對象
??????? web應(yīng)用的上下文
??????? 常用方法
??????????? getInitParameter() 獲取初始化參數(shù)
??????????? setAttribute() 設(shè)置指定名稱的屬性
??????????? getAttribute() 獲取指定名稱的屬性
??????????? getRealPath() 獲取服務(wù)器的真實(shí)路徑
??????????? log() 記錄日志信息
??? 2.4 ServletRequest接口
??????? 用于封裝客戶的請求信息
??????? 常用方法
??????????? setAttribute() 設(shè)置指定名稱的屬性
??????????? getAttribute() 獲取指定名稱的屬性
??????????? removeAttribute() 刪除指定名稱的屬性
??? 2.5 HttpServletRequest接口
??????? 繼承ServletRequest接口,用于HTTP傳輸協(xié)議
??????? 常用方法
??????????? getContextPath() 獲取URI中表示請求上下文的路徑
??????????? getCookies() 獲取客戶端在此次請求中所發(fā)送的所有cookie數(shù)據(jù)
??????????? getSession() 獲取和此次請求相關(guān)聯(lián)的session
??????????? getMethod() 返回此次請求所使用的HTTP方法的名字,如GET或POST
??? 2.6 ServletResponse接口
??????? 用于封裝相應(yīng)客戶端的數(shù)據(jù)
??????? 常用方法:
??????????? getWriter() 返回PrintWriter對象,用于向客戶端發(fā)送文本
??????????? getCharacterEncoding() 獲取在相應(yīng)中發(fā)送的正文所使用的字符編碼
??????????? setCharacterEncoding() 設(shè)置發(fā)送到客戶端的相應(yīng)的字符編碼
??????????? setContentType() 設(shè)置發(fā)送到客戶端響應(yīng)的內(nèi)容類型
??? 2.7 HttpServletResponse接口
??????? 繼承ServletResponse接口,用于HTTP傳輸協(xié)議
??????? 常用方法:
??????????? addCookie() 向客戶端添加cookie
??????????? addHeader() 將相應(yīng)報(bào)頭添加到相應(yīng)對象中
??????????? sendRedirect() 發(fā)送一個(gè)重定向的響應(yīng)到客戶端,讓客戶端訪問新的URL
?? ?
3.servlet 生命周期
?? ?3.1實(shí)例化
?? ??? ?Servlet 容器創(chuàng)建 Servlet 的實(shí)例
?? ?3.2初始化
?? ??? ?該容器調(diào)用 init()方法?? (init方法只能被調(diào)用一次)
?? ?3.3服務(wù)
?? ??? ?如果請求 Servlet,則容器調(diào)用 service()方法
?? ?3.4銷毀
?? ??? ?銷毀實(shí)例之前調(diào)用 destroy()方法
?? ??? ?
4.Servlet應(yīng)用
?? ?4.1創(chuàng)建servlet
?? ??? ?實(shí)現(xiàn)doPost()或doGet()方法
?? ?4.2部署Servlet
?? ??? ?編輯部署描述文件web.xml(添加<servlet>和<servlet-mapping>)
?? ?4.3啟動(dòng)Tomcat,訪問Servlet
?? ??? ?打開瀏覽器輸入http://localhost:8080/web.xml設(shè)置訪問的URL
?? ??? ?
?? ?4.4 獲取Servlet初始化參數(shù)
?? ??? ?預(yù)先對Servlet進(jìn)行初始化設(shè)置,修改web.xml文件在<Servlet>元素中添加<inti-param>
?? ??? ?
?? ??? ??? ?<web-app>
?? ??? ??? ?<servlet>
?? ??? ??? ??? ?<servlet-name>HelloServlet</servlet-name>
?? ??? ??? ??? ?<servlet-class>org.jbit.servlet.HelloServlet</servlet-class>
?? ??? ??? ??? ?
?? ??? ??? ??? ?<init-param>
?? ??? ??? ??? ??? ?<param-name>initParam</param-name>
?? ??? ??? ??? ??? ?<param-value>Hello Servlet</param-value>
?? ??? ??? ??? ?</init-param>
?? ??? ??? ??? ?
?? ??? ??? ?</servlet>
?? ??? ??? ?<servlet-mapping>
?? ??? ??? ??? ?<servlet-name>HelloServlet</servlet-name>
?? ??? ??? ??? ?<url-pattern>/HelloServlet</url-pattern>
?? ??? ??? ?</servlet-mapping>
?? ??? ??? ?</web-app>
?? ?4.5獲得上下文參數(shù)
?? ??? ?修改web.xml文件在<Servlet>元素中添加<context-param> 注意:<context-param>元素必須出現(xiàn)在所有Servlet配置元素之前
?? ??? ??? ?<web-app>
?? ??? ??? ?<context-param>
?? ??? ??? ??? ?<param-name>contextParam</param-name>
?? ??? ??? ??? ?<param-value>Hello Servlet</param-value>
?? ??? ??? ?</context-param>
?? ??? ??? ?<!--省略其他配置-->
?? ??? ??? ?</web-app>
?? ??? ??? ?
5.使用Servlet實(shí)現(xiàn)控制器
?? ?
五.JSTL和EL
1.1 EL表達(dá)式
?? ?1.1.1 為什么需要使用EL表達(dá)式(JSP中嵌入java代碼使代碼結(jié)構(gòu)混亂,可讀性差,不易維護(hù))
?? ?1.1.2 什么是EL表達(dá)式(javaScript和XPath的表達(dá)式語言)
?? ?1.1.3 EL表達(dá)式的特點(diǎn)和使用范圍(自動(dòng)類型轉(zhuǎn)換 使用簡單,page request session application)
?? ?1.1.4 EL表達(dá)式語法(${EL 表達(dá)式},點(diǎn)操作符,[]操作符)
?? ??? ?1.1.4.1 點(diǎn)操作符
?? ??? ?1.1.4.2 []操作符(使用[]操作符訪問對象屬性時(shí),需牢記屬性名加上雙引號或單引號)
?? ??? ?1.1.4.3 關(guān)系操作符(eq,!=,<,>,<=,>=)
?? ??? ?1.1.4.4 邏輯操作符(&&,||,!)
?? ??? ?1.1.4.5 Empty操作符(${empty a})
?? ?1.1.5 EL表達(dá)式隱式對象(page,request,session,application,pageContext)
?? ??? ?1.1.5.1 作用域訪問對象(pageScope,requestScope,sessionScope,applicationScope)
?? ??? ?1.1.5.2 參數(shù)訪問對象(param,paramValues)
?? ??? ?1.1.5.3 JSP隱式對象(pageContext)
1.2 JSTL標(biāo)簽
?? ?1.2.1 為什么使用JSTL(為了簡化JSP頁面的開發(fā)難度)
?? ?1.2.2 什么是JSTL(JSP標(biāo)準(zhǔn)標(biāo)簽庫,通用標(biāo)簽,條件標(biāo)簽,迭代標(biāo)簽)
?? ?1.2.3 如何使用JSTL(導(dǎo)入taglib指令)
1.3 JSTL核心標(biāo)簽庫(通用標(biāo)簽庫,條件標(biāo)簽庫,迭代標(biāo)簽庫)
?? ?1.3.1 通用標(biāo)簽庫
?? ??? ?1.3.1.1 <c:set>標(biāo)簽(用于設(shè)置范圍變量的值或者JavaBean對象的屬性)
?? ??? ??? ?語法:
?? ??? ??? ?<c:set var="variable" value="v" scope="scope" />
?? ??? ??? ?var屬性的值是設(shè)置的變量名
?? ??? ??? ?value屬性的值是賦予變量的值
?? ??? ??? ?scope屬性對應(yīng)的是變量的作用域,可選值有page,request,session和application
?? ??? ?1.3.1.2 <c:out>標(biāo)簽(用于將計(jì)算表達(dá)式結(jié)果輸出顯示)
?? ??? ??? ?語法:
?? ??? ??? ?(1)不指定默認(rèn)值
?? ??? ??? ?<c:out value="value">
?? ??? ??? ?(2)指定默認(rèn)值
?? ??? ??? ?<c:out value="value" default="default">
?? ??? ?1.3.1.3 <c:remove>標(biāo)簽(與<c:set>標(biāo)簽的作用相反,<c:remove>用于移出指定范圍的變量)
?? ??? ??? ?語法:
?? ??? ??? ?<c:remove var="value" scope="scope">
?? ??? ??? ?var屬性是指待移出的變量的名稱
?? ??? ??? ?scope屬性是指移出的變量所在的范圍,可選項(xiàng)有page,request,session,application,如果沒有指定,則默認(rèn)為page
?? ?1.3.2 條件標(biāo)簽庫
?? ??? ?1.3.2.1 <c:if>(用于實(shí)現(xiàn)Java語言中if語句的功能)
?? ??? ??? ?語法:
?? ??? ??? ?<c:if test="condition" var="varName" scope="scope">
?? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ?</c:if>
?? ??? ??? ?test屬性是判斷條件,當(dāng)condition(可以用EL表達(dá)式表示)的結(jié)果true時(shí),會執(zhí)行主體內(nèi)容,如果false則不會執(zhí)行
?? ??? ??? ?var屬性定義變量,該變量存在判斷以后的結(jié)果,該屬性可以省略
?? ??? ??? ?scope屬性是指var定義變量的存儲范圍,可選值有page,request,session和application
?? ??? ?1.3.2.2 <c:choose>(<c:choose>,<c:when>,<c:otherwise>一起實(shí)現(xiàn)互斥條件的執(zhí)行,類似于java語言的if-else)
?? ??? ??? ?語法:
?? ??? ??? ?<c:choose var="varName" scope="scope">
?? ??? ??? ??? ?<c:when test="condition">
?? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ?</c:when>
?? ??? ??? ??? ?<c:otherwise>
?? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ?</c:otherwise>
?? ??? ??? ?</c:if>
?? ?1.3.3迭代標(biāo)簽庫
?? ??? ?1.3.3.1 遍歷集合對象的成員
?? ??? ??? ?語法:
?? ??? ??? ??? ?<c:forEach var="varName" items="collectionName" varStatus="varStatusName"
?? ??? ??? ??? ??? ??? ?begin="beginIndex" end="endIndex" step="step">
?? ??? ??? ??? ??? ?主體內(nèi)容
?? ??? ??? ??? ?</c:forEach>
?? ??? ??? ??? ?var 屬性是對當(dāng)前成員的引用
?? ??? ??? ??? ?items 指被迭代的對象
?? ??? ??? ??? ?varStatus 屬性用于存在var引用的成員的相關(guān)信息,如索引等.
?? ??? ??? ??? ?begin 屬性表示開始位置,默認(rèn)為0,該屬性可以省略
?? ??? ??? ??? ?end 屬性表示結(jié)束的位置,該屬性可以省略
?? ??? ??? ??? ?step 表示循環(huán)的步長,默認(rèn)為1,該屬性可以省略
?? ??? ?1.3.3.2 指定語句的執(zhí)行次數(shù)
?? ??? ??? ?<c:forEach var="varName" varStatus="varStatusName">
?? ??? ??? ??? ??? ?begin="beginIndex" end="endIndex" step="step"
?? ??? ??? ??? ?主題內(nèi)容
?? ??? ??? ?</c:forEach>
轉(zhuǎn)載于:https://www.cnblogs.com/luobailin/p/5839959.html
總結(jié)
以上是生活随笔為你收集整理的Java 面向对象编程、jQuery、JavaScript、servlet、javabean----理论知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《神秘的程序员们》漫画47:这些年你读过
- 下一篇: 多列布局——column-width