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