- 相關(guān)推薦
2017年SUN認證考試常見(jiàn)知識點(diǎn)
Sun認證Java程序員考試旨在觀(guān)察您通過(guò)應用軟件分配進(jìn)行復雜編程的能力,之后還要測試您完成編程所需的知識。下面是小編整理的關(guān)于SUN認證考試常見(jiàn)知識點(diǎn),歡迎大家參考!
day1
JSP 定義:
1)Java Server Page, Java EE 組件,本質(zhì)上是 Servlet。
2)運行在 Web Container.接收 Http Request,生成 Http Response(默認協(xié)議是 Http 請求和響應)
3)JSP 使得我們能夠分離頁(yè)面的靜態(tài) HTML 和動(dòng)態(tài)部分——我們需要的技術(shù)。
4)使頁(yè)面可以混和html代碼、Java代碼以及JSP標簽;允許訪(fǎng)問(wèn)組件
Servlet的缺陷(JSP出現的原因):
1)寫(xiě)靜態(tài)頁(yè)面必須部署后才能看到效果,很難控制頁(yè)面的外觀(guān)。
2)從技術(shù)角度來(lái)說(shuō)Servlet是Java代碼和HTML靜態(tài)代碼的混合代碼。
3)從市場(chǎng)競爭角度來(lái)說(shuō),微軟推出了ASP產(chǎn)品。
JSP的改進(jìn):
1)JSP是標簽式的文本文件(區Servlet是Java文件)
2)JSP不需要編譯(其實(shí)是由服務(wù)器監測JSP文件的變化,再將其翻譯成 Servlet 代碼)
服務(wù)器對其進(jìn)行編譯并在第一次請求時(shí)創(chuàng )建一個(gè)Servlet實(shí)例。所以,第一次訪(fǎng)問(wèn)JSP頁(yè)面時(shí)會(huì )后延遲
3)JSP不用寫(xiě)配置文件
4)JSP以靜態(tài)代碼為主,Java代碼為輔。Servlet反之。
5)是J2EE藍圖的一部分(Servlet、JSP以及EJB是J2EE的三大組件)
JSP從本質(zhì)上來(lái)說(shuō)內核還是Servlet,但與Servlet不是替代關(guān)系而是一種互補的關(guān)系。
JSP適合于寫(xiě)顯示層的動(dòng)態(tài)頁(yè)面,而Servlet則適合寫(xiě)控制層的業(yè)務(wù)控制(頁(yè)面轉發(fā))。
JSP往純標簽方向發(fā)展,Servlet往純代碼方向發(fā)展,他們以Servlet內核(請求響應式的工作方式)往兩個(gè)方向發(fā)展。
基本語(yǔ)法
一、JSP的聲明(statement)
用來(lái)定義在產(chǎn)生的類(lèi)文件中的類(lèi)的屬性和方法(成員變量)?陕暶黝(lèi)(即是內部類(lèi))。
由于servlet是工作在多線(xiàn)程環(huán)境下,所以盡量不要在service方法體外聲明成員變量。
//聲明時(shí)要加"!",屬于類(lèi)成員,最先加載,可寫(xiě)于任何位置;不加則是腳本的局部變量,必須調用前寫(xiě)。
如: //變量的聲明
//變量的調用
//函數的聲明
//函數的調用
聲明規則:
1) JSP中聲明的變量和方法對應于Servlet中的實(shí)例方法和實(shí)例變量。這些將被同時(shí)請求該頁(yè)面的所有用戶(hù)所共享;
2) 在使用變量或方法前須先定義(不是說(shuō)聲明變量的位置在頁(yè)面中要處于使用變量的前面,而是指變量不聲明不能使用);
3) 聲明的變量或方法的作用域為當前頁(yè)面或包含的頁(yè)面;
4) 語(yǔ)句間以分號分隔。
二、JSP代碼段(Scriptlet)
是一段可以在處理請求時(shí)間執行的Java代碼?梢援a(chǎn)生輸出,也可以是一些流程控制語(yǔ)句。
在代碼段中定義的變量為service方法中的局部變量。
1._jspService()中的局部代碼:
//在控制臺打印出,網(wǎng)頁(yè)上沒(méi)顯示
//打印在網(wǎng)頁(yè)上
問(wèn):能否在JSP腳本里定義方法?
答:不能! //腳本相當于方法,不能在方法里定義方法
//可以聲明方法
//編譯出錯;腳本不能定義方法
2.比較:
//成員變量
//_jspService()方法中的局部變量
//同一文件里,局部變量?jì)?yōu)先
3.腳本小程序規則:
1) 你使用的腳本語(yǔ)言決定了腳本小程序的規則;
2) 語(yǔ)句間以分號分隔;
3) 可以使用默認的對象、import進(jìn)的類(lèi)、declaration聲明的方法和對象以及useBean tag中聲明的對象。
三、JSP表達式(expression)
// "="號
在JSP請求處理階段計算他的值,表達式生成的代碼是Service方法中的一個(gè)代碼片斷。
JSP對于聲明的處理:1、計算表達式的值
2、將值轉換成String
3、用out.println發(fā)送標簽;把數據輸出至頁(yè)面的當前位置
//out.println("Hello,JSP world");
// out.println(name);
//out.println(new java.util.Date());
表達式規則:
1) 你使用的腳本語(yǔ)言決定了腳本小程序的規則;
2) 執行的順序為從左到右;
3) 分號不能用于表達式。
四、JSP指令(direction)
指令用于從JSP發(fā)送信息到容器上。用來(lái)設置全局變量,聲明類(lèi),要實(shí)現的方法和輸出內容等。
指令在JSP整個(gè)文件內有效。它為翻譯階段提供了全局信息。
// "@"符號
指令包括:page、include、taglib
1.page指令
import、session、errorPage、isThreadSafe
頁(yè)面的語(yǔ)言、內容類(lèi)型、字符集、頁(yè)面編碼
language:java唯一值,表示腳本中使用的編程語(yǔ)言
contentType:設置了內容的類(lèi)型和靜態(tài)頁(yè)面的編碼 (告訴瀏覽器以什么編碼顯示)
pageEncoding:頁(yè)面本身的編碼格式 (寫(xiě)頁(yè)面時(shí)用的編碼格式)
上面的代碼等價(jià)于servlet里: response.setContentType("text/html; charset=gbk");
import:導入其他的包和類(lèi); 其中,JSP默認導入的包是java.lang.*
//具體的包和類(lèi)
//包下的所有類(lèi)
//連寫(xiě),逗號分隔
Session:指示當前的jsp是否參與會(huì )話(huà) (默認為true; 參與會(huì )話(huà))
通過(guò)指令使當前頁(yè)面與session不可會(huì )話(huà):
session="true"時(shí),可用內建對象session直接訪(fǎng)問(wèn)會(huì )話(huà),例如:
errorPage:
isErrorPage:Jsp頁(yè)面中出現異常的處理方式
對于有可能出現異常的頁(yè)面:
//異常時(shí)會(huì )跳轉到處理異常的頁(yè)面;這頁(yè)面自己寫(xiě)
在有可能異常的地方打印原因: throw new Exception("數據庫連接出錯");
對于處理異常的頁(yè)面(error.jsp)里:
,其中使用把異常信息打印出來(lái)
isThreadSafe——此屬性已經(jīng)不再使用(已廢棄)
當前Jsp頁(yè)面是否線(xiàn)程安全 default--->true
//普通的Servlet,可以并發(fā)處理用戶(hù)請求
//相當于Servlet實(shí)現了SingleThreadModel
2.include指令
把目標頁(yè)面的內容包含到當前頁(yè)面,產(chǎn)生頁(yè)面疊加以后的輸出效果 //相當于將兩個(gè)頁(yè)面合并;編譯時(shí)就包含進(jìn)來(lái)
//可插入任意位置
3.taglib指令
留在JSTL里講解。
五、JSP中的注釋
1.java格式注釋
編譯器會(huì )忽略掉此類(lèi)注釋中的內容(客戶(hù)端的源碼看不見(jiàn))
2.html風(fēng)格注釋
編譯器會(huì )執行此類(lèi)注釋中的代碼(客戶(hù)端的源碼看得見(jiàn))
等價(jià)于out.println("")
這種注釋方式不好的地方就是當頁(yè)面注釋信息太多的時(shí)候會(huì )增大服務(wù)器的負荷。
還有注釋信息需要在網(wǎng)絡(luò )上傳輸,從而降低效率;內部程序員的測試數據一般不能寫(xiě)在這種注釋中,以免泄露。
六、動(dòng)作(Action)
JSP的動(dòng)作包括:
forward、include、useBean、setProperty、getProperty
1.forward動(dòng)作
形式:
等價(jià)于 Servlet中通過(guò)RequestDispatcher.forward();
可以傳參數
2.Include動(dòng)作
形式:
等價(jià)于 Servlet中通過(guò)RequestDispatcher.include();
Include動(dòng)作也可以傳參數
與比較:
include動(dòng)作在運行期處理(include指令編譯期),jsp:include包含的是所包含URI的響應,而不是URI本身。
這意味著(zhù):jsp:include 對所指出的 URI 進(jìn)行解釋?zhuān)蚨氖巧傻捻憫?/p>
對于頁(yè)面是靜態(tài)內容,這沒(méi)有太大的關(guān)系。但如果是動(dòng)態(tài)內容,include動(dòng)作可傳參數。
flush 屬性
flush 指示在讀入包含內容之前是否清空任何現有的緩沖區。
JSP 1.1 中需要 flush 屬性,因此,如果代碼中不用它,會(huì )得到一個(gè)錯誤。
但是,在 JSP 1.2 中, flush 屬性缺省為 false。
建議:由于清空大多數時(shí)候不是一個(gè)重要的問(wèn)題,因此,對于 JSP 1.1,將 flush 設置為 true;
而對于 JSP 1.2 及更高版本,將其設置為 false 或不設置(用默認值)。
【SUN認證考試常見(jiàn)知識點(diǎn)】相關(guān)文章:
SUN認證考試科目01-11
SUN認證考試簡(jiǎn)介03-16
SUN認證考試流程01-15
SUN認證考試項目01-11
sun java認證考試介紹03-19
Sun Java認證考試科目03-19
SUN認證考試知識點(diǎn):java servlet生命周期03-17
Sun考試認證題目解析201603-27
sun java認證考試報考指南03-19