day13_Jsp加強

1課程回顧

Jsp基礎

1)Jsp的執(zhí)行過程

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

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

2)Jsp語法:

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

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

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

4)jsp注釋:<%!-- jsp注釋--%>用于注釋jsp代碼机断,不會翻譯到java文件中眷蜓,也不會執(zhí)行菌瘪。

3)jsp的三大指令

3.1 include指令:用于包含其他頁面份殿。原理:先合并再翻譯耸黑,叫靜態(tài)包含

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

language:翻譯的動態(tài)語言。

import:類導入

jsp文件編碼問題:

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

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

異常錯誤相關的:

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

isErorrPage:指定當前頁面是否為錯誤處理頁面笤受。false穷缤,不是錯誤處理頁面,則不能使用exception內置對象箩兽;true绅项,是錯誤處理頁面,可以使用exception內置對象比肄。

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


500

/common/500.jsp

404

/common/404.html

session:是否開啟session功能。false囊陡,不能用session內置對象芳绩;true,可以使用session內置對象撞反。

buffer:? jsp頁面的緩存區(qū)大小妥色。

isELIgnore:是否忽略EL表達式。

2 Jsp的內置對象(重點)

2.1什么是內置對象遏片?

在jsp開發(fā)中嘹害,會頻繁使用到一些對象

。例如HttpSession,ServletContext,ServletContext,HttpServletRequet吮便。如果我們每次要使用這些對象都去創(chuàng)建這些對象就顯示非常麻煩笔呀。所以Sun公司設計Jsp時,在jsp頁面加載完畢之后就會自動幫開發(fā)者創(chuàng)建好這些對象髓需,而開發(fā)者只需要直接使用這些對象調用方法即可许师!,這些創(chuàng)建好的對象就叫內置對象A糯摇N⑶!咧擂!

舉例:

servlet:

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

jsp:

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

開發(fā)者做的: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緩沖區(qū)寫出內容

當滿足以下條件之一云芦,緩沖區(qū)內容寫出:

1)緩沖區(qū)滿了

2)刷新緩存區(qū)

3)關閉緩存區(qū)

4)執(zhí)行完畢jsp頁面

2.4 pageContext對象

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

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

public class 01_hello_jsp {

public void _jspService(request,response){

創(chuàng)建內置對象

HttpSession session =....;

ServletConfig config = ....;

把8個經(jīng)常使用的內置對象封裝到PageContext對象中

PageContext pageContext? =封裝攻臀;

調用method1方法

method1(pageContext);

}

public void method1(PageContext pageContext){

希望使用內置對象

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

JspWriter out =pageContext.getOut();

HttpServletRequest rquest = pageContext.getRequest();

........

}

}

使用場景:在自定義標簽的時候焕数,PageContext對象頻繁使用到!E傩ァ堡赔!

2)本身是一個域對象

ServletContext context域

HttpServletRequet? request域

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

PageContext?? page域--jsp學習的

作用:保存數(shù)據(jù)和獲取數(shù)據(jù),用于共享數(shù)據(jù)

#保存數(shù)據(jù)

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

pageContext.setAttribute("name");

2)可以向四個域對象保存數(shù)據(jù)

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

#獲取數(shù)據(jù)

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

pageContext.getAttribute("name")

2)可以從四個域中獲取數(shù)據(jù)

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

域范圍常量:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext..SESSION_SCOPE

PageContext.APPLICATION_SCOPE

3)自動在四個域中搜索數(shù)據(jù)

pageContext.findAttribute("name");

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

3 Jsp中的四個域對象

四個域對象:

pageContext????? page域

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

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

application?????? context域

1)域對象作用:

保存數(shù)據(jù)和獲取數(shù)據(jù)灼捂,用于數(shù)據(jù)共享。

2)域對象方法:

setAttribute("name",Object)保存數(shù)據(jù)

getAttribute("name")獲取數(shù)據(jù)

removeAttribute("name")清除數(shù)據(jù)

3)域對象作用范圍:

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

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

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

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

4 Jsp的最佳實踐

Servlet技術:開發(fā)動態(tài)資源悉稠。是一個java類,最擅長寫java代碼

jsp技術:開發(fā)動態(tài)資源艘包。通過java代碼最擅長輸出html代碼的猛。

各取所長:

在web項目中涉及到邏輯:

1)接收參數(shù)servlet做

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

3)顯示數(shù)據(jù)到瀏覽器jsp做

4)跳轉到其他頁面servlet做

servlet+jsp模式

servlet:

1)接收參數(shù)

2)處理業(yè)務邏輯

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

4)跳轉到jsp頁面

Jsp:

1)從域對象取出數(shù)據(jù)

2)把數(shù)據(jù)顯示到瀏覽器

servlet的數(shù)據(jù)->?? jsp頁面

List使用域對象共享數(shù)據(jù)

5 EL表達式

5.1 EL作用

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

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

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

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

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

5.2 EL語法

1)輸出基本數(shù)據(jù)類型變量

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循環(huán))

2)跳轉頁面(轉發(fā)裙椭,重定向)

3)躏哩。。揉燃。扫尺。。

6.2 Jsp標簽分類

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

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

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

6.3動作標簽

轉發(fā)標簽:

參數(shù)標簽:

包含標簽:

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

(先翻譯再合并)婿崭,動態(tài)包含

靜態(tài)包含vs動態(tài)包含的區(qū)別拨拓?

1)語法不同

靜態(tài)包含語法:<%@inclue file="被包含的頁面"%>

動態(tài)包含語法:

2)參數(shù)傳遞不同

靜態(tài)包含不能向被包含頁面?zhèn)鬟f參數(shù)

動態(tài)包含可以向被包含頁面?zhèn)鬟f參數(shù)

3)原理不同

靜態(tài)包含:先合并再翻譯

動態(tài)包含:先翻譯再合并

6.4 JSTL標簽

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

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

國際化標簽(fmt標簽庫)

EL函數(shù)庫(fn函數(shù)庫)

xml標簽庫(x標簽庫)

sql標簽庫(sql標簽庫)

6.5使用JSTL標簽步驟

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

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

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

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

3)在jsp中使用標簽

核心標簽庫的重點標簽:

保存數(shù)據(jù):

獲取數(shù)據(jù):

單條件判斷

多條件判斷

循環(huán)數(shù)據(jù)

重定向

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氓栈,隨后出現(xiàn)的幾起案子渣磷,更是在濱河造成了極大的恐慌,老刑警劉巖授瘦,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醋界,死亡現(xiàn)場離奇詭異,居然都是意外死亡提完,警方通過查閱死者的電腦和手機形纺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徒欣,“玉大人逐样,你說我怎么就攤上這事。” “怎么了脂新?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵挪捕,是天一觀的道長。 經(jīng)常有香客問我争便,道長级零,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任滞乙,我火速辦了婚禮奏纪,結果婚禮上,老公的妹妹穿的比我還像新娘斩启。我一直安慰自己亥贸,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布浇垦。 她就那樣靜靜地躺著,像睡著了一般荣挨。 火紅的嫁衣襯著肌膚如雪男韧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天默垄,我揣著相機與錄音此虑,去河邊找鬼。 笑死口锭,一個胖子當著我的面吹牛朦前,可吹牛的內容都是我干的。 我是一名探鬼主播鹃操,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼韭寸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荆隘?” 一聲冷哼從身側響起恩伺,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎椰拒,沒想到半個月后晶渠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡燃观,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年褒脯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缆毁。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡番川,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情爽彤,我是刑警寧澤养盗,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站适篙,受9級特大地震影響往核,放射性物質發(fā)生泄漏。R本人自食惡果不足惜嚷节,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一聂儒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硫痰,春花似錦衩婚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缓屠,卻和暖如春奇昙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敌完。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工储耐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滨溉。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓什湘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晦攒。 傳聞我的和親對象是個殘疾皇子闽撤,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容

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