day13_Jsp加強

1課程回顧

Jsp基礎

1)Jsp的執行過程

tomcat服務器完成:jsp文件->翻譯成java文件->編譯成class字節碼文件->構造類對象->調用方法

tomcat的work目錄下存放jsp運行時的臨時文件!!

2)Jsp語法:

1)jsp表達式:<%=變量或表達式%>向瀏覽器輸出變量或表達式計算的結果

2)jsp腳本:<% java代碼%>執行java代碼原理:翻譯到_jspService()方法中

3)jsp聲明:<%!變量或方法%>聲明jsp的成員變量或成員方法

4)jsp注釋:<%!-- jsp注釋--%>用于注釋jsp代碼,不會翻譯到java文件中,也不會執行。

3)jsp的三大指令

3.1 include指令:用于包含其他頁面。原理:先合并再翻譯,叫靜態包含

3.2 page指令:告訴tomcat服務器如何把jsp文件翻譯成java文件

language:翻譯的動態語言。

import:類導入

jsp文件編碼問題:

pageEncoding:告訴tomcat服務器使用什么編碼翻譯jsp文件(jsp->java文件)

contentType: tomcat服務器發送給瀏覽器的數據編碼(tomcat服務器->瀏覽器)

異常錯誤相關的:

errorPage:指定當前jsp頁面的錯誤處理頁面。

isErorrPage:指定當前頁面是否為錯誤處理頁面。false,不是錯誤處理頁面,則不能使用exception內置對象;true,是錯誤處理頁面,可以使用exception內置對象。

配置全局的錯誤處理頁面:


500

/common/500.jsp

404

/common/404.html

session:是否開啟session功能。false,不能用session內置對象;true,可以使用session內置對象。

buffer:? jsp頁面的緩存區大小。

isELIgnore:是否忽略EL表達式。

2 Jsp的內置對象(重點)

2.1什么是內置對象?

在jsp開發中,會頻繁使用到一些對象

。例如HttpSession,ServletContext,ServletContext,HttpServletRequet。如果我們每次要使用這些對象都去創建這些對象就顯示非常麻煩。所以Sun公司設計Jsp時,在jsp頁面加載完畢之后就會自動幫開發者創建好這些對象,而開發者只需要直接使用這些對象調用方法即可!,這些創建好的對象就叫內置對象!!!!

舉例:

servlet:

HttpSession session = request.getSession(true);(需要開發者做)

jsp:

tomcat服務器:HttpSession session = request.getSession(true);(不需要開發者做)

開發者做的:session.getId();

2.2 9大內置對象

內置對象名類型

request?????? ?? HttpServletRequest

response????? HttpServletResponse

config??????? ServletConfig

application??????? ServletContext

session???????? HttpSession

exception??????? Throwable

page??????????? Object(this)

out???????????? JspWriter

pageContext???? PageContext

2.3 Out對象

out對象類型,JspWriter類,相當于帶緩存的PrintWriter

PrintWriter:

wrier(內容):直接向瀏覽器寫出內容。

JspWriter

writer(內容):向jsp緩沖區寫出內容

當滿足以下條件之一,緩沖區內容寫出:

1)緩沖區滿了

2)刷新緩存區

3)關閉緩存區

4)執行完畢jsp頁面

2.4 pageContext對象

pageContext對象的類型是PageContext,叫jsp的上下文對象

1)可以獲取其他八個內置對象

public class 01_hello_jsp {

public void _jspService(request,response){

創建內置對象

HttpSession session =....;

ServletConfig config = ....;

把8個經常使用的內置對象封裝到PageContext對象中

PageContext pageContext? =封裝;

調用method1方法

method1(pageContext);

}

public void method1(PageContext pageContext){

希望使用內置對象

從PageContext對象中獲取其他8個內置對象

JspWriter out =pageContext.getOut();

HttpServletRequest rquest = pageContext.getRequest();

........

}

}

使用場景:在自定義標簽的時候,PageContext對象頻繁使用到!!!

2)本身是一個域對象

ServletContext context域

HttpServletRequet? request域

HttpSession??? session域--Servlet學習的

PageContext?? page域--jsp學習的

作用:保存數據和獲取數據,用于共享數據

#保存數據

1)默認情況下,保存到page域

pageContext.setAttribute("name");

2)可以向四個域對象保存數據

pageContext.setAttribute("name",域范圍常量)

#獲取數據

1)默認情況下,從page域獲取

pageContext.getAttribute("name")

2)可以從四個域中獲取數據

pageContext.getAttribute("name",域范圍常量)

域范圍常量:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext..SESSION_SCOPE

PageContext.APPLICATION_SCOPE

3)自動在四個域中搜索數據

pageContext.findAttribute("name");

順序:page域-> request域-> session域- > context域(application域)

3 Jsp中的四個域對象

四個域對象:

pageContext????? page域

request????????? request域

session????????? session域

application?????? context域

1)域對象作用:

保存數據和獲取數據,用于數據共享。

2)域對象方法:

setAttribute("name",Object)保存數據

getAttribute("name")獲取數據

removeAttribute("name")清除數據

3)域對象作用范圍:

page域:只能在當前jsp頁面中使用(當前頁面)

request域:只能在同一個請求中使用(轉發)

session域:只能在同一個會話(session對象)中使用(私有的)

context域:只能在同一個web應用中使用。(全局的)

4 Jsp的最佳實踐

Servlet技術:開發動態資源。是一個java類,最擅長寫java代碼

jsp技術:開發動態資源。通過java代碼最擅長輸出html代碼。

各取所長:

在web項目中涉及到邏輯:

1)接收參數servlet做

2)處理業務邏輯,返回結果servlet做

3)顯示數據到瀏覽器jsp做

4)跳轉到其他頁面servlet做

servlet+jsp模式

servlet:

1)接收參數

2)處理業務邏輯

3)把結果保存到域對象中

4)跳轉到jsp頁面

Jsp:

1)從域對象取出數據

2)把數據顯示到瀏覽器

servlet的數據->?? jsp頁面

List使用域對象共享數據

5 EL表達式

5.1 EL作用

jsp的核心語法:jsp表達式<%=%>和jsp腳本<%? %>。

以后開發jsp的原則:盡量在jsp頁面中少寫甚至不寫java代碼。

使用EL表達式替換掉jsp表達式

EL表達式作用:向瀏覽器輸出域對象中的變量值或表達式計算的結果!!!

語法:${變量或表達式}

5.2 EL語法

1)輸出基本數據類型變量

1.1從四個域獲取

${name}

1.2指定域獲取

${pageScope.name}

域范圍:pageScoep / requestScope / sessionScope / applicationScope

2)輸出對象的屬性值

Student

3)輸出集合對象

List和Map

4)EL表達式計算

6 jsp標簽

6.1 jsp標簽的作用

jsp標簽作用:替換jsp腳本。

1)流程判斷(if?? for循環)

2)跳轉頁面(轉發,重定向)

3)。。。。。

6.2 Jsp標簽分類

1)內置標簽(動作標簽):不需要在jsp頁面導入標簽

2)jstl標簽:需要在jsp頁面中導入標簽

3)自定義標簽:開發者自行定義,需要在jsp頁面導入標簽

6.3動作標簽

轉發標簽:

參數標簽:

包含標簽:

原理:包含與被包含的頁面先各自翻譯成java源文件,然后再運行時合并在一起。

(先翻譯再合并),動態包含

靜態包含vs動態包含的區別?

1)語法不同

靜態包含語法:<%@inclue file="被包含的頁面"%>

動態包含語法:

2)參數傳遞不同

靜態包含不能向被包含頁面傳遞參數

動態包含可以向被包含頁面傳遞參數

3)原理不同

靜態包含:先合并再翻譯

動態包含:先翻譯再合并

6.4 JSTL標簽

JSTL (全名:java? standard? tag? libarary?? - ?java標準標簽庫)

核心標簽庫(c標簽庫)天天用

國際化標簽(fmt標簽庫)

EL函數庫(fn函數庫)

xml標簽庫(x標簽庫)

sql標簽庫(sql標簽庫)

6.5使用JSTL標簽步驟

1)導入jstl支持的jar包(標簽背后隱藏的java代碼)

注意:使用javaee5.0的項目自動導入jstl支持jar包

2)使用taglib指令導入標簽庫

<%@tagliburi="tld文件的uri名稱"prefix="簡寫"%>

3)在jsp中使用標簽

核心標簽庫的重點標簽:

保存數據:

獲取數據:

單條件判斷

多條件判斷

循環數據

重定向

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • 1.學習內容 JSP技術入門和常用指令 JSP的內置對象&標簽介紹 EL表達式&EL的內置對象 2.JSP技術入門...
    WendyVIV閱讀 2,161評論 1 18
  • 1.什么是JSP (1)jsp全稱是Java Server Pages,它和Servlet技術一樣都是sun公司定...
    yjaal閱讀 3,680評論 5 99
  • 一、JSP基礎 1.1什么是JSP JSP(Java ServerPage)是Java服務器端動態頁面技術。是su...
    晨星資源閱讀 1,171評論 0 6
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • 這部分主要是與Java Web和Web Service相關的面試題。 96、闡述Servlet和CGI的區別? 答...
    雜貨鋪老板閱讀 1,424評論 0 10