視頻筆記2

 


將整個jar包路徑設到classpath下,可找到jar包中的所有文件。
愛情來的快,去的也快。只有豬肉卷是永恆的。
異常
運行期出現的錯誤。
觀察錯誤的名字和行號最重要。
java異常是java提供的用於處理程序中錯誤的一種機制。
所謂錯誤是指在程序運行期間發生的一些異常事件(如:除0溢出,數組下標越界,索要讀取的文件不存在)。
設計良好的程序應該在異常發生時提供處理這些錯誤的方法,使得程序不會以爲異常的發生而阻斷或產生不可預見的結果。
java程序的執行過程中如出現異常事件,可以生成一個異常類對象,該異常對象封裝了異常事件的信息並將被提交給java運行時系統,這個過程稱爲拋出(throw)異常。
當java運行時系統接收到異常對象時,會尋找處理這一異常的代碼並把當前異常對象交給其處理,這一過程稱爲捕獲(catch)異常。
e.printStackTrace();

一個茶壺配多個茶碗(try ();catch();catch();...)
Error:稱爲錯誤,由java虛擬機生成並拋出,包括動態連接失敗、虛擬機錯誤等,程序對其不作處理。
Exveption:所有異常的父類,其子類對應了各種各樣可能出現的異常事件,一般需要用於顯示的聲明或捕獲。
Runtime Exception:一類特殊的異常,如被0除,數組下標超範圍等,其產生比較頻繁,處理麻煩,如顯示的聲明或捕獲將會對程序可讀性和運行效率影響很大。因此由系統自動檢測並將它們交給缺省的異常處理程序(用戶可不必對其處理)。


在一個try語句塊中,基類異常的捕獲語句不可以寫在子類異常捕獲語句的上面。

二維數組
二維數組可以看成以數組爲元素的數組。
java中多維數組的聲明和初始化應按從高維到低維的順序進行。

容器
1136
Collection接口定義了存取一組對象的方法,其子接口Set和List分別定義了存儲方式:
*Set中的數據對象沒有順序且不可以重複。
*List中的數據對象有順序且可以重複。
set接口是Collection的子接口,Sec接口沒有提供額外的方法,但實現Set接口的容器類中的元素是沒有順序的,而且可以不重複。Set容器可以與數學中“集合”的概念相對應。
List接口是Collection的子接口,實現List接口的容器類中的元素是有順序的,而且可以重複。
List容器中的元素都對應一個整數型的序號記載其在容器中的位置,可以根據序號存取容器中的元素。
Map接口定義了存儲“鍵(key)——值(value)映射對”的方法。
Collection c = new ArrayList();
容器類對象在調用remove 、contains 等方法時需要比較對象是否相等,這會涉及到對象類型的equals方法和hashCode方法以實現自定義的對象等規則。
注意:相等的對象應該具有相等的hash codes;
所有實現了Collction接口的容器類都有一個iterator方法用以返回一個實現了interator接口的對象。
iterator對象稱作迭代器,用以方便的實現對容器內元素的遍歷操作。
iterator對象的remove方法是在迭代過程中刪除元素的唯一的安全方法。


泛型
增強程序的可讀性和穩定性
起因:JDK1.4以前類型不明確;
       裝入集合的類型都被當做Object對待,從而失去自己的實際類型。
 從集合中取出時往往需要轉型,效率低,容易產生錯誤。
解決辦法:在定義集合的時候同時定義集合中對象的類型。

 

事件監聽
在一個類中想要訪問另外一個類裏的事件源對象可以通過事件的getSource()方法;

內部類:
好處:可以方便的訪問包裝類的成員;可以更清楚的組織邏輯,防止不應該被其他類訪問的類進行訪問。
何時訪問:該類不允許或不需要其他類進行訪問時

Graphics類
每次需要重畫的時候自動調用paint方法。

當實現某接口很麻煩時可以採用繼承其他的類的方式。


自學
順序:1.查文檔、做實驗;
 2.Google:<1>關鍵詞的選擇由精細到粗化
  <2>略讀頁面介紹,分析可能性 超過5頁沒找到,不要往後翻
  <3>先中文,後英文
 3.論壇:<1>問題問清楚
  <2>www.csdn.net
  <3>國外的論壇

正則表達式(RegularExpressions)
用途:字符串匹配(字符匹配);字符串查找;字符串替換
類:java.lang.String;java.util.regex.Pattern;java.util.regex.Matcher


jsp內置對象

使用jsp中的request.getParameter(參數名):用於接收客戶端的參數
request對象:
主要功能是圖武器端接收客戶以HTTP方式傳送給用戶端數據,以便對其進行進一步處理,實現交互設計功能。
常用方法:getParameter(),getParameterValues(),getParameterNames()
中文的處理:
1.對所有的數據進行再編碼:ISO8859-1編碼
String類中的getBytes("ISO8859-1");
getBytes()方法定義:public byte[]getBytes("encoding") 再將byte數組重新變爲字符串
當某文字不在正常的編碼範圍中時,會出現亂碼
gbk>gb2312  gbk是中文編碼,gb2312是簡體中文編碼
2.設置統一字符編碼:
setCharacterEncoding

如果傳遞的內容是數組(複選框、多個下拉列表)
使用request的以下方法:getParameterValues()
在開發中較爲常見的表單數據,隱藏域:將內容隱藏起來,使用戶不能修改,之後隨表單一起交到服務器上顯示。
地址重寫:可以將內容傳遞到服務器端--服務器只認HTTP協議,而不管接收的內容是何種形式傳遞過來的
getParameterNames:public Enumeration getParameterNames()
Enumeration 枚舉
功能:取得客戶端所有請求的參數
取得客戶端IP地址
public String getRemoteAddr()
總結:只要是客戶端信息,在服務器端都可以通過request對象取得
 注意中文亂碼問題!
 必須掌握的幾個方法:getParameter()、getParameterValues()、setCharacterEncoding()

response對象
服務器端迴應客戶端的請求
主要功能:
1.設置頭信息:
 最有用的一個頭信息:refresh(刷新)
 response.setHeader("頭信息內容","頭信息參數");
新的需求:
 x秒鐘跳轉到xxx頁面上:response.setHeader("refresh","x;URL=頁面名稱");
2.進行跳轉(重定向)
response.sendRedirect("跳轉路徑");此語句執行後,頁面地址也變爲跳轉後的地址

兩種跳轉的區別:
 1.<jsp:forward page = ""/>
  。地址欄不變的跳轉——服務器端跳轉
  。執行完之前的代碼後立刻無條件跳轉——之後的代碼不被執行
  注意:如果使用forward跳轉,則一定要在跳轉之前釋放掉全部的資源
  。使用forward時,request設置的屬性依然保留在下一個頁面(setAttribute)
  。通過<jsp:param name = "" value = ""/>傳遞參數
 2.response.sendRedirect("地址");
  。地址欄改變的跳轉——客戶端跳轉
  。所有代碼執行完畢後跳轉
  。不能保存request屬性——地址改變了(客戶端跳轉)
  。通過讀URL地址的重寫傳遞參數

使用客戶端跳轉可以通過重寫URL的方式將內容傳遞過去
3.設置Cookie
 Cookie是服務器端保存在客戶端的一組資源
 登陸時會問你是否記住密碼或xx長的時間不用再登陸,此種功能的實現就是基於Cookie
addCookie();
 Cookie是通過服務器端設置到客戶端上去的——response
 如果要在服務器端取得Cookie——request request中的public Cookie[]getCookies()方法
JSessionID 表示唯一的一個客戶端在服務器上的編號——自動獲得(SESSION)對象

默認情況下,Cookie只針對當前瀏覽器有效,如果需要Cookie長留在本地計算機上,可以設置Cookie的保存時間。
Cookie是保存在客戶端上的信息,安全性較差!
Cookie可以通過setMaxAge()設置最大保留時間
服務器端在客戶端第一次訪問之後,會設置一個默認的Cookie在客戶端上:JSESSIONID
java:對象方法,類方法
java中的對象必須先實例化(分配內存空間)。
webContainer:web容器——爲對象實例化
request->HttpServerletRequest接口的實例化對象
觀察得出:HttpServletRequest有一個父類:ServletRequest
現在的ServletRequest只有HttpServletRequest一個子接口
目的:爲以後新出的協議服務

四種屬性保存範圍
設置屬性:
-public void setAttribute(String name,Object value)
屬性名稱爲字符串
屬性值可以是任意對象
取得屬性:
public Object getAttribute(String name)
page範圍
在jsp中設置一個頁的屬性範圍,必須通過pageContext完成
pageContext屬性範圍:必須使用服務器端跳轉<jsp:forward/>  
應用點:MVC設計模式、Struts、Webwork
session屬性範圍
只保留一個用戶的信息,可以通過session對象來判斷此用戶是否是合法用戶
1.例如。如果用戶沒有登陸,則無論此用戶訪問了那幾個頁面都會跳轉到登陸頁面
在服務器上,通過session來區分每一個上網用戶
主要方法:a.服務器上通過session來分別不同的用戶(session ID)任何連到服務器上的用戶,服務器都會爲之分配唯一的一個不會重複的sessionID(由服務器統一管理,不能人爲控制,當用戶登錄時,立即分配)方法:session.getID()
b.判斷是否是新的session :public boolean isNew();
c.session 的屬性設置
設置屬性:public void setAttribute (String name,Object value)
取得屬性: public Object getAttribute(String name)
刪除屬性:public void removeArrtibute(String name)
d.用戶註銷:讓用戶的session失效 如果session失效,則在session所保留的所有操作也將消失
 public void invalidate();使session失效(手工)
 如果session長時間不被使用,則會自動失效
e.得到session的創建時間 public long getCreationTime()此方法返回long類型,通過Date類可以取得一個完整的時間
f.取得用戶最後一次操作時間 public long getLastAccessedTime()
session記錄獨有的個人信息,在不同的頁面中傳遞,比Cookie更安全但更佔資源,使用了Cookie機制,如果Cookie被禁用,則session也無法使用;
Cookie保存於客戶端,供瀏覽器與Web服務器互通數據用的純文字文件,當IE執行的時候,會在計算機中產生一個Cookie

只要設置上去,則不管是什麼跳轉,都可以取得屬性
與session有關的任何打開的頁面都可以取得session
主要功能:用於驗證用戶是否登錄
application範圍
所有用戶都可以取得此信息,此信息在整個服務器上被保留(保存公共信息)
其屬性範圍值,只要設置一次,則所有的網頁窗口都可以取得數據
屬性操作的三個方法:setAttribute();getAttribute();removeAttribute();
因爲Application是在整個服務器中保持的只有一個實例的對象,所以在實際中往往使用getServletContext().getRealPath("/")代替application.getRealPath("/");來得到工作目錄的真實路徑
因爲所有的Web處理程序,有一個Web容器的支持,實際上此方法是由容器進行調用的,所以getServletContext()方法沒有使用對象調用
application  session request  都需要跨多個頁,屬性保存是有內存開銷的
設置過多的application或每一個session保存過多的對象則性能會降低
如果使用request就不要使用session,能使用session就不要使用application
application應用:在線人員統計、在線人員名單列表
如果要釋放application,只能關閉服務器

config對象
一般用來取得服務器的初始化配置參數,但若要使用此對象應在WEB-INF/web.xml之中配置
取得初始化參數的方法:public String getInitParameter(String name)
通過此種功能,可以將數據庫連接的一些信息寫在配置文件中
public Enumeration getInitParameterNames()與request.getParameterNames()方法類似,是取得全部配置參數的

pageContext   默認情況下表示一個頁面的保存範圍

總結:四種屬性範圍都是依靠pageContext展開的,但是在開發中,往往使用session、request範圍最多
四種範圍是整個J2EE WEB端開發必須深刻記住的概念,包括設置屬性和取得屬性的參數類型、返回值類型
 
分類:
與Servlet有關的隱含對象
-page
-config(一般用來取得服務器的初始化配置參數,但若要使用此對象應在WEB-INF/web.xml之中配置)
與Input/Output有關的隱含對象
-out(主要用於動態向客戶端輸出數據)
-request
-response
JSP執行時,提供有關Context的隱含對象
-session
-application
-pageContext
與Error有關的隱含對象
-exception

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章