Sun認證Java程式設計師考試旨在觀察您通過應用軟體分配進行復雜程式設計的能力,之後還要測試您完成程式設計所需的知識。下面是小編整理的關於SUN認證考試常見知識點,歡迎大家參考!
day1
JSP 定義:
1)Java Server Page, Java EE 元件,本質上是 Servlet。
2)執行在 Web Container.接收 Http Request,生成 Http Response(預設協議是 Http 請求和響應)
3)JSP 使得我們能夠分離頁面的靜態 HTML 和動態部分——我們需要的技術。
4)使頁面可以混和html程式碼、Java程式碼以及JSP標籤;允許訪問元件
Servlet的缺陷(JSP出現的原因):
1)寫靜態頁面必須部署後才能看到效果,很難控制頁面的外觀。
2)從技術角度來說Servlet是Java程式碼和HTML靜態程式碼的混合程式碼。
3)從市場競爭角度來說,微軟推出了ASP產品。
JSP的改進:
1)JSP是標籤式的文字檔案(區Servlet是Java檔案)
2)JSP不需要編譯(其實是由伺服器監測JSP檔案的變化,再將其翻譯成 Servlet 程式碼)
伺服器對其進行編譯並在第一次請求時建立一個Servlet例項。所以,第一次訪問JSP頁面時會後延遲
3)JSP不用寫配置檔案
4)JSP以靜態程式碼為主,Java程式碼為輔。Servlet反之。
5)是J2EE藍圖的一部分(Servlet、JSP以及EJB是J2EE的三大元件)
JSP從本質上來說核心還是Servlet,但與Servlet不是替代關係而是一種互補的關係。
JSP適合於寫顯示層的動態頁面,而Servlet則適合寫控制層的業務控制(頁面轉發)。
JSP往純標籤方向發展,Servlet往純程式碼方向發展,他們以Servlet核心(請求響應式的工作方式)往兩個方向發展。
基本語法
一、JSP的宣告(statement)
用來定義在產生的類檔案中的類的屬性和方法(成員變數)。可宣告類(即是內部類)。
由於servlet是工作在多執行緒環境下,所以儘量不要在service方法體外宣告成員變數。
//宣告時要加"!",屬於類成員,最先載入,可寫於任何位置;不加則是指令碼的區域性變數,必須呼叫前寫。
如: //變數的宣告
//變數的呼叫
//函式的宣告
//函式的呼叫
宣告規則:
1) JSP中宣告的變數和方法對應於Servlet中的例項方法和例項變數。這些將被同時請求該頁面的所有使用者所共享;
2) 在使用變數或方法前須先定義(不是說宣告變數的位置在頁面中要處於使用變數的前面,而是指變數不宣告不能使用);
3) 宣告的變數或方法的作用域為當前頁面或包含的頁面;
4) 語句間以分號分隔。
二、JSP程式碼段(Scriptlet)
是一段可以在處理請求時間執行的Java程式碼。可以產生輸出,也可以是一些流程控制語句。
在程式碼段中定義的變數為service方法中的區域性變數。
1._jspService()中的區域性程式碼:
//在控制檯打印出,網頁上沒顯示
//列印在網頁上
問:能否在JSP腳本里定義方法?
答:不能! //指令碼相當於方法,不能在方法裡定義方法
//可以宣告方法
//編譯出錯;指令碼不能定義方法
2.比較:
//成員變數
//_jspService()方法中的區域性變數
//同一檔案裡,區域性變數優先
3.指令碼小程式規則:
1) 你使用的指令碼語言決定了指令碼小程式的規則;
2) 語句間以分號分隔;
3) 可以使用預設的物件、import進的類、declaration宣告的方法和物件以及useBean tag中宣告的物件。
三、JSP表示式(expression)
// "="號
在JSP請求處理階段計算他的值,表示式生成的程式碼是Service方法中的一個程式碼片斷。
JSP對於宣告的處理:1、計算表示式的值
2、將值轉換成String
3、用tln傳送標籤;把資料輸出至頁面的當前位置
//tln("Hello,JSP world");
// tln(name);
//tln(new ());
表示式規則:
1) 你使用的指令碼語言決定了指令碼小程式的規則;
2) 執行的順序為從左到右;
3) 分號不能用於表示式。
四、JSP指令(direction)
指令用於從JSP傳送資訊到容器上。用來設定全域性變數,宣告類,要實現的'方法和輸出內容等。
指令在JSP整個檔案內有效。它為翻譯階段提供了全域性資訊。
// "@"符號
指令包括:page、include、taglib
指令
import、session、errorPage、isThreadSafe
頁面的語言、內容型別、字符集、頁面編碼
language:java唯一值,表示指令碼中使用的程式語言
contentType:設定了內容的型別和靜態頁面的編碼 (告訴瀏覽器以什麼編碼顯示)
pageEncoding:頁面本身的編碼格式 (寫頁面時用的編碼格式)
上面的程式碼等價於servlet裡: ontentType("text/html; charset=gbk");
import:匯入其他的包和類; 其中,JSP預設匯入的包是.*
//具體的包和類
//包下的所有類
//連寫,逗號分隔
Session:指示當前的jsp是否參與會話 (預設為true; 參與會話)
通過指令使當前頁面與session不可會話:
session="true"時,可用內建物件session直接訪問會話,例如:
errorPage:
isErrorPage:Jsp頁面中出現異常的處理方式
對於有可能出現異常的頁面:
//異常時會跳轉到處理異常的頁面;這頁面自己寫
在有可能異常的地方列印原因: throw new Exception("資料庫連接出錯");
對於處理異常的頁面()裡:
,其中使用把異常資訊打印出來
isThreadSafe——此屬性已經不再使用(已廢棄)
當前Jsp頁面是否執行緒安全 default--->true
//普通的Servlet,可以併發處理使用者請求
//相當於Servlet實現了SingleThreadModel
ude指令
把目標頁面的內容包含到當前頁面,產生頁面疊加以後的輸出效果 //相當於將兩個頁面合併;編譯時就包含進來
//可插入任意位置
ib指令
留在JSTL裡講解。
五、JSP中的註釋
格式註釋
編譯器會忽略掉此類註釋中的內容(客戶端的原始碼看不見)
風格註釋
編譯器會執行此類註釋中的程式碼(客戶端的原始碼看得見)
等價於tln("")
這種註釋方式不好的地方就是當頁面註釋資訊太多的時候會增大伺服器的負荷。
還有註釋資訊需要在網路上傳輸,從而降低效率;內部程式設計師的測試資料一般不能寫在這種註釋中,以免洩露。
六、動作(Action)
JSP的動作包括:
forward、include、useBean、setProperty、getProperty
ard動作
形式:
等價於 Servlet中通過ard();
可以傳引數
ude動作
形式:
等價於 Servlet中通過ude();
Include動作也可以傳引數
與比較:
include動作在執行期處理(include指令編譯期),jsp:include包含的是所包含URI的響應,而不是URI本身。
這意味著:jsp:include 對所指出的 URI 進行解釋,因而包含的是生成的響應。
對於頁面是靜態內容,這沒有太大的關係。但如果是動態內容,include動作可傳引數。
flush 屬性
flush 指示在讀入包含內容之前是否清空任何現有的緩衝區。
JSP 1.1 中需要 flush 屬性,因此,如果程式碼中不用它,會得到一個錯誤。
但是,在 JSP 1.2 中, flush 屬性預設為 false。
建議:由於清空大多數時候不是一個重要的問題,因此,對於 JSP 1.1,將 flush 設定為 true;
而對於 JSP 1.2 及更高版本,將其設定為 false 或不設定(用預設值)。