2020-03-24

JSP & EL & JSTL

(一)JSP的回顧

一边器、什么是JSP

? ? JSP:Java Server Pages(Java服務(wù)器端頁面)

? ? JSP就是HTML+Java代碼+JSP自身的東西組成

二鹏氧、JSP由來

? ? Servlet技術(shù)生成動態(tài)網(wǎng)頁的時候很麻煩峰弹,需要通過Response獲得輸出流穗泵,調(diào)用print方法進(jìn)行打印的云头。這種編程方式很麻煩泡嘴,而且美工也不容易處理霎肯。SUN公司為了簡化動態(tài)網(wǎng)頁開發(fā),推出了JSP

三慢哈、JSP的運(yùn)行原理

? ? JSP在執(zhí)行時蔓钟,會被服務(wù)器翻譯為Servlet編譯執(zhí)行的,JSP就是一個Servlet

四卵贱、JSP腳本元素

?<%! %>:JSP聲明奋刽,翻譯成Servlet成員部分的內(nèi)容,聲明變量艰赞、方法、內(nèi)部類

?<%= %>:翻譯成out.print()輸出的內(nèi)容肚吏,在service方法內(nèi)部方妖,用于生成HTML頁面源碼

?<% %>:用于嵌入Java代碼,會被翻譯成service方法內(nèi)部的代碼塊罚攀,聲明變量党觅、內(nèi)部類

(二)JSP的注釋

一、HTML的注釋

? ? ? ? <!--HTML的注釋-->

?存在時機(jī):存在JSP的源碼中斋泄,翻譯成Servlet后杯瞻,注釋也存在,在生成HTML響應(yīng)到頁面時炫掐,注釋也存在

二魁莉、Java代碼的注釋

? ? ? ? <%

? ? ? ? ? ? //單行注釋

? ? ? ? ? ? /*多行注釋*/

? ? ? ? ? ? /**文檔注釋*/

? ? ? ? %>

?存在時機(jī):存在JSP的源碼中,翻譯成Servlet后募胃,Java代碼的注釋也會存在旗唁,但是生成HTML響應(yīng)到頁面后,注釋就消失了

三痹束、JSP注釋

? ? ? ? <%--JSP的注釋--%>

?存在時機(jī):存在JSP的源碼中检疫,翻譯成Servlet后,注釋就沒有了

*注意:Java代碼注釋的話祷嘶,不要使用HTML的注釋

(三)JSP的指令元素的概述

一屎媳、JSP指令元素的作用

? ? 用于指示JSP執(zhí)行的某些步驟

? ? 用于指示JSP表現(xiàn)的特定行為

二夺溢、JSP指令元素的語法

? ? <%@ 指令名稱 屬性名稱=屬性的值 屬性名稱=屬性的值 %>

三、JSP指令元素的分類

? ? page指令:指示JSP的頁面設(shè)置屬性和行為

? ? include指令:指示JSP包含哪些其他頁面

? ? taglib指令:指示JSP頁面包含哪些標(biāo)簽庫

(四)JSP的指令

一烛谊、page指令

1风响、page指令簡介

? ? 寫法:<%@ page 屬性名=屬性值 %>

? ? Page指令用來定義JSP文件的全局屬性

? ? 這些屬性可以單獨(dú)使用,也可以幾個或多個同時使用

? ? 在JSP頁面中晒来,只有import屬性可以出現(xiàn)多次钞诡,其他屬性都只能出現(xiàn)一次

2、Page指令屬性

? ? language屬性:聲明使用腳本的語言湃崩,目前只能是Java

? ? extends屬性:標(biāo)明JSP編譯成Servlet的時候繼承的類荧降,默認(rèn)值是HttpJspBase

? ? session屬性:標(biāo)明JSP中是否可以直接使用session對象,默認(rèn)值是true

? ? buffer屬性:標(biāo)明JSP對客戶端輸出緩沖區(qū)的大小攒读,默認(rèn)值8KB

? ? autoFlush屬性:如果緩沖區(qū)大小溢出朵诫,是否自動刷出,默認(rèn)值true

import屬性:用于導(dǎo)入Java包或類

? ? contentType屬性:標(biāo)明JSP被瀏覽器解析和打開的時候采用的默認(rèn)的字符集

? ? pageEncoding屬性:JSP文件及JSP翻譯后的Servlet保存到硬盤上采用的字符集

? ? isErrorPage屬性:處理JSP頁面的異常

? ? errorPage屬性:處理JSP頁面的異常

isELIgnored屬性:通知JSP是否忽略EL表達(dá)式

二薄扁、include和taglib指令

1剪返、include指令

(1)include指令簡介

? ? 寫法:<%@ include 屬性名=屬性值%>

? ? 作用:在JSP頁面中靜態(tài)包含一個文件,同時由該JSP解析包含的文件內(nèi)容

(2)include指令屬性

? ? file屬性:指示JSP頁面包含的頁面的路徑

2邓梅、include指令原理(靜態(tài)包含的原理)

? ? 注意:

? ? ? ? 應(yīng)該將被包含的頁面結(jié)構(gòu)去掉

? ? ? ? 在被包含的頁面中定義變量脱盲,在包含的頁面中也可以使用

2、taglib指令

(1)taglib指令簡介

? ? 寫法:<%@ taglib 屬性名=屬性值%>

? ? 作用:用于在JSP頁面中引入標(biāo)簽庫

(2)taglib指令屬性

? ? uri屬性:引入的標(biāo)簽庫的路徑

? ? prefix屬性:引入的標(biāo)簽庫的別名(前綴)

(五)JSP的內(nèi)置對象

一日缨、JSP的內(nèi)置對象概述

1钱反、什么是JSP的內(nèi)置對象

? ? JSP的內(nèi)置對象:指的是可以直接在JSP頁面中使用的對象

2、JSP的內(nèi)置對象有哪些(9大內(nèi)置對象)

? ? request:從客戶端向服務(wù)器發(fā)送的請求對象

? ? response:從服務(wù)器端向客戶端作出的響應(yīng)對象

? ? session:服務(wù)器為客戶端創(chuàng)建會話對象

? ? application:代表應(yīng)用匣距,就是獲得的ServletContext對象

? ? out:向輸出流寫入內(nèi)容的對象

? ? page:當(dāng)前的JSP翻譯成Servlet后的對象的引用

? ? pageContext:本JSP頁面的上下文對象

? ? config:本JSP的ServletConfig對象

? ? exception:表示JSP頁面運(yùn)行時產(chǎn)生的異常對象

3面哥、JSP的內(nèi)置對象具體類型

? ? request??HttpServletRequest

? ? response??HttpServletResponse

? ? session??HttpSession

? ? application?ServletContext

? ? out????JspWriter

? ? page???Object

? ? pageContext?PageContext

? ? config???ServletConfig

? ? exception??Throwable

(六)pageContext對象的概述

一pageContext對象簡介

? ? pageContext對象直接翻譯為“頁面的上下文”對象,代表的是當(dāng)前頁面運(yùn)行的一些屬性毅待,它是javax.servlet.jsp.PageContext類的實例對象

二尚卫、pageContext對象作用

1、提供了page范圍的數(shù)據(jù)存取的方法

? ? ? ? 向page范圍中存入數(shù)據(jù)

? ? ? ? ? ? setAttribute(String name, Object value)

? ? ? ? 從page范圍獲取數(shù)據(jù)

? ? ? ? ? ? getAttribute(String name)

? ? ? ? 從page范圍移除數(shù)據(jù)

? ? ? ? ? ? removeAttribute(String name)

? ? ? ? 查詢屬性的方法

? ? ? ? ? ? findAttribute(String name)

2尸红、通過這個對象獲得其它的8個內(nèi)置對象

? ? ? ? getException()

? ? ? ? getPage()

? ? ? ? getRequest()

? ? ? ? getResponse()

? ? ? ? getServletConfig()

? ? ? ? getServletContext()

? ? ? ? getSession()

? ? ? ? getOut()

(七)JSP的四個作用范圍

一吱涉、JSP的四個作用范圍概述

1、PageScope:頁面范圍

? ? ? ? 頁面范圍指的是在當(dāng)前的頁面內(nèi)有效驶乾,出了這個頁面邑飒,用pageContext保存的數(shù)據(jù)就無效了

2、RequestScope:請求范圍

? ? ? ? 從客戶端向服務(wù)器發(fā)送一次請求级乐,服務(wù)器對這次請求作出了響應(yīng)之后疙咸,用request保存的數(shù)據(jù)就無效了

3、SessionScope:會話范圍

? ? ? ? 每個瀏覽器向服務(wù)器發(fā)送請求(可以是多次請求)风科,到該會話結(jié)束(瀏覽器關(guān)閉或?qū)⒅氨4嬖赟ession中的數(shù)據(jù)銷毀了)

4撒轮、ApplicationScope:應(yīng)用范圍

? ? ? ? 在整個應(yīng)用(項目)中任意的地方都可以獲取

二乞旦、JSP的四個作用范圍演示

三、pageContext對象向四個域范圍存取數(shù)據(jù)

關(guān)閉瀏覽器再訪問

findAttribute方法

查找屬性方法:先根據(jù)小范圍的名稱進(jìn)行查找题山,如果找到了就返回蜻展,如果沒有找到就會去比其大一個域的范圍進(jìn)行查找

(八)JSP的動作標(biāo)簽

一涮帘、JSP的動作標(biāo)簽的概述

1谒兄、什么是JSP的動作標(biāo)簽

? ? JSP的動作標(biāo)簽用于在JSP頁面中提供業(yè)務(wù)邏輯功能赶促,避免在JSP頁面中直接編寫Java代碼,會造成JSP頁面難以維護(hù)

2慨菱、常用的動作標(biāo)簽

?<jsp:forward/>:請求轉(zhuǎn)發(fā)

?<jsp:include/>:包含(動態(tài)包含)

?<jsp:param/>:傳遞參數(shù)

3焰络、演示JSP的動作標(biāo)簽

二、靜態(tài)包含和動態(tài)包含的區(qū)別

? ? 動態(tài)包含的原理

(九)EL

一符喝、EL的概述

1闪彼、什么是EL

? ? EL:Expression Language(表達(dá)式語言)

2、EL作用

? ? EL和JSTL一起使用协饲,取代JSP頁面中嵌入Java代碼的寫法

3畏腕、EL功能

? ? EL獲取數(shù)據(jù)

? ? EL執(zhí)行運(yùn)算

? ? EL獲取Web開發(fā)常用的對象

? ? EL調(diào)用Java方法

4、EL語法

? ? ${ EL表達(dá)式 }

二茉稠、EL獲取數(shù)據(jù)

1描馅、EL如何獲取數(shù)據(jù)

? ? EL表達(dá)式語句在執(zhí)行的時候,會調(diào)用pageContext.findAttribute()方法而线,分別從page流昏、request、session吞获、application范圍查找相應(yīng)對象,找到就會返回相應(yīng)對象谚鄙,找不到返回""(不是null各拷,是空的字符串),EL所獲取的數(shù)據(jù)需要在四個作用范圍中

2闷营、演示EL獲取數(shù)據(jù)

三烤黍、EL獲取數(shù)組和集合中的數(shù)據(jù)

1、獲取數(shù)組的數(shù)據(jù)

2傻盟、獲取List集合的數(shù)據(jù)

3速蕊、獲取Map集合的數(shù)據(jù)

?注意:

如果map的key中包含了特殊字符,就不能使用.必須使用[]

.是用來獲取對象的屬性的

??[]是用來獲得下標(biāo)的

四娘赴、EL執(zhí)行運(yùn)算

1规哲、執(zhí)行算數(shù)運(yùn)算

2、執(zhí)行關(guān)系運(yùn)算

3诽表、執(zhí)行邏輯運(yùn)算

4唉锌、執(zhí)行三元運(yùn)算

5隅肥、empty運(yùn)算符

五、EL獲取web開發(fā)常用對象

1袄简、常用對象有哪些

? ? EL表達(dá)式定義了11個web開發(fā)常用對象腥放。使用這些對象可以很方便的獲取Web開發(fā)中的一些常見對象,并可以讀取這些對象中的數(shù)據(jù)

pageContext

?相當(dāng)于JSP內(nèi)置對象中的pageContext

pageScope

?獲取page域下的名稱的數(shù)據(jù)

requestScope

?獲取request域下的名稱的數(shù)據(jù)

sessionScope

?獲取session域下的名稱的數(shù)據(jù)

applicationScope

?獲取application域下的名稱的數(shù)據(jù)

param

在頁面中接收請求參數(shù)(接收一個名稱對應(yīng)一個值的參數(shù))

paramValues

?在頁面中接收請求參數(shù)(接收一個名稱對應(yīng)多個值的參數(shù))绿语,返回一個數(shù)組

header

在頁面上獲取請求頭(獲取一個Key對應(yīng)一個Value頭)

headerValues

在頁面上獲取請求頭(獲取一個Key對應(yīng)多個Value頭)

cookie

?訪問Cookie的名稱和值(${cookie.key.name}${cookie.key.value})

initParam

?獲取全局初始化參數(shù)的值

(十)JSTL

一秃症、JSTL的概述

1、什么是JSTL

JSTL:JSP的標(biāo)準(zhǔn)標(biāo)簽庫

2吕粹、為什么學(xué)習(xí)JSTL

? ? 主要和EL來取代傳統(tǒng)頁面上直接嵌入Java代碼的寫法种柑,提升程序可讀性、維護(hù)性和方便性

3昂芜、JSTL的版本

? ? JSTL1.0莹规、JSTL1.1和JSTL1.2

? ? ? ? 1.0版本不支持EL表達(dá)式

? ? ? ? 1.1和1.2支持了EL表達(dá)式

4、JSTL的標(biāo)簽庫

? ? c標(biāo)簽(Core標(biāo)簽庫)

? ? fmt標(biāo)簽(國際化標(biāo)簽庫)

? ? xml標(biāo)簽

? ? sql標(biāo)簽

? ? jstl函數(shù)庫(EL函數(shù))

二泌神、JSTL的入門

1良漱、引入JSTL的jar包

2、新建JSP頁面

3欢际、引入標(biāo)簽庫

4母市、使用JSTL

三、JSTL的if標(biāo)簽

1损趋、if標(biāo)簽的使用

2患久、if標(biāo)簽的屬性

? ? test屬性:條件

? ? var屬性:將test中的條件的值賦給一個變量,可以在var中定義這個變量

? ? scope屬性:作用范圍

四浑槽、JSTL的foreach標(biāo)簽

foreach標(biāo)簽的使用

(十一)案例——學(xué)生查詢

一蒋失、搭建開發(fā)環(huán)境

1、創(chuàng)建Web項目

2桐玻、引入相關(guān)的jar包

3篙挽、創(chuàng)建包結(jié)構(gòu),引入工具類

4镊靴、創(chuàng)建數(shù)據(jù)庫和表

create database web04_student charset utf8;

use web04_student;

create table student(

sid int primary key auto_increment,

sname varchar(20),

sex varchar(10),

age int

) charset utf8;

insert into student values(null,'張三','男',20);

insert into student values(null,'李四','女',23);

insert into student values(null,'王五','女',18);

insert into student values(null,'趙六','男',25);

insert into student values(null,'孫七','男',21);

二铣卡、案例代碼實現(xiàn)

1、創(chuàng)建實體類

2偏竟、創(chuàng)建Servlet

3煮落、創(chuàng)建Model對象

4、編寫list.jsp

5踊谋、運(yùn)行效果

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝉仇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌量淌,老刑警劉巖骗村,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呀枢,居然都是意外死亡胚股,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門裙秋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琅拌,“玉大人,你說我怎么就攤上這事摘刑〗Γ” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵枷恕,是天一觀的道長党晋。 經(jīng)常有香客問我,道長徐块,這世上最難降的妖魔是什么未玻? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮胡控,結(jié)果婚禮上扳剿,老公的妹妹穿的比我還像新娘。我一直安慰自己昼激,他們只是感情好庇绽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橙困,像睡著了一般瞧掺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凡傅,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天夸盟,我揣著相機(jī)與錄音,去河邊找鬼像捶。 笑死,一個胖子當(dāng)著我的面吹牛桩砰,可吹牛的內(nèi)容都是我干的拓春。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼亚隅,長吁一口氣:“原來是場噩夢啊……” “哼硼莽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤懂鸵,失蹤者是張志新(化名)和其女友劉穎偏螺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匆光,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡套像,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了终息。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夺巩。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖周崭,靈堂內(nèi)的尸體忽然破棺而出柳譬,到底是詐尸還是另有隱情,我是刑警寧澤续镇,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布美澳,位于F島的核電站,受9級特大地震影響摸航,放射性物質(zhì)發(fā)生泄漏制跟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一忙厌、第九天 我趴在偏房一處隱蔽的房頂上張望凫岖。 院中可真熱鬧,春花似錦逢净、人聲如沸哥放。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甥雕。三九已至,卻和暖如春胀茵,著一層夾襖步出監(jiān)牢的瞬間社露,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工琼娘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峭弟,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓脱拼,卻偏偏與公主長得像瞒瘸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子熄浓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • JSP & EL & JSTL (一)JSP的回顧 一情臭、什么是JSP JSP:JavaServerPages(...
    李玉賢_8e75閱讀 221評論 0 0
  • (一)JSP的回顧 一、什么是JSP JSP:JavaServerPages(Java服務(wù)器端頁面) JSP就是H...
    哈哈哈額哈哈哈閱讀 444評論 0 0
  • JSP & EL & JSTL (一)JSP的回顧 一、什么是JSP JSP:JavaServerPages(...
    小湯源O閱讀 204評論 0 0
  • JSP & EL & JSTL (一)JSP的回顧 一俯在、什么是JSP JSP:JavaServerPages(...
    01_ff7c閱讀 117評論 0 0
  • (一)JSP的回顧 一竟秫、什么是JSP JSP:JavaServerPages(Java服務(wù)器端頁面) JS...
    H_5a8d閱讀 185評論 0 0