#JSP#JavaWeb學(xué)習(xí)筆記(2020/3/3)

一刷后、JSP

JSP全名Java Server Page,運行在服務(wù)器端的頁面廉油,\color{red}{本質(zhì)還是servlet}惠险。
有了JSP我們可以在JSP頁面上,既寫HTML代碼抒线,又可以寫Java代碼班巩,簡化了開發(fā)。

JSP中怎么寫JAVA嘶炭?

  1. <% 代碼 %>:定義的java代碼抱慌,在service方法中。service方法中可以定義什么眨猎,該腳本中就可以定義什么抑进。
  2. <%! 代碼 %>:定義的java代碼,在jsp轉(zhuǎn)換后的java類的成員位置睡陪。
  3. <%= 代碼 %>:定義的java代碼寺渗,會輸出到頁面上匿情。輸出語句中可以定義什么,該腳本中就可以定義什么信殊。

JSP的指令:

<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %>
指令:

  • 1.page 設(shè)置一些配置
    • ①炬称、contentType,相當(dāng)于response.setContentType()
      作用:
      1涡拘、 設(shè)置響應(yīng)體的mime類型以及字符集
      2玲躯、 設(shè)置當(dāng)前jsp頁面的編碼(只能是高級的IDE才能生效,如果使用
      低級工具鳄乏,則需要設(shè)置pageEncoding屬性設(shè)置當(dāng)前頁面的字符集)
    • ②跷车、import:導(dǎo)包
    • ③、errorPage:設(shè)置出現(xiàn)錯誤橱野,跳轉(zhuǎn)的JSP頁面朽缴。
    • ④、isErrorPage:聲明當(dāng)前頁面是錯誤頁面水援,讓該頁面可以使用exception對象不铆。
  • 2.include 在當(dāng)前頁面,導(dǎo)入其他的JSP子頁面使用這個指令裹唆。
  • 3.taglib 導(dǎo)入標(biāo)簽庫資源,使用這個指令只洒。

JSP的九種內(nèi)置對象

  • 1.pageContext對象
  • 2.request對象
  • 3.session對象
  • 4.application對象
  • 5.response對象
  • 6.page對象
  • 7.out對象
  • 8.config對象
  • 9.exception對象


    image.png

二许帐、MVC開發(fā)模式

如果在JSP中寫了過多的代碼,閱讀維護(hù)都會變得是否困難毕谴,分工合作就更加困難了成畦,所以要使用MVC開發(fā)模式。

M:Model(業(yè)務(wù)模型)——> JavaBean
V:View(視圖) ——> JSP
C:Controller(控制器)——> Servlet

JSP盡量只用來寫展示涝开,那么如何獲取數(shù)據(jù)呢循帐?

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

EL表達(dá)式的作用:

1、運算:

  • 運算符:
  1. 算數(shù)運算符: + - * /(div) %(mod)
  2. 比較運算符: > < >= <= == !=
  3. 邏輯運算符: &&(and) ||(or) !(not)
  4. 空運算符: empty
  • 功能:用于判斷字符串舀武、集合拄养、數(shù)組對象是否為null或者長度是否為0
  • ${empty list}:判斷字符串、集合银舱、數(shù)組對象是否為null或者長度為0
  • ${not empty str}:表示判斷字符串瘪匿、集合、數(shù)組對象是否不為null 并且 長度>0

2寻馏、獲取值棋弥、EL表達(dá)式只能從四個內(nèi)置的域?qū)ο笾蝎@取值

  • 1、${域名稱.鍵名}:從指定域中獲取指定鍵的值
    域名稱:

    1. pageScope --> pageContext
    2. requestScope --> request
    3. sessionScope --> session
    4. applicationScope --> application(ServletContext)
  • 2诚欠、 ${鍵名}:表示依次從最小的域中查找是否有該鍵對應(yīng)的值顽染,直到找到為止漾岳。

如何獲取對象中的值?

和BeanUtils類似粉寞,EL表達(dá)式也會去調(diào)用屬性對應(yīng)的getter方法來獲取尼荆。
格式:${域名稱.鍵名.屬性名}

比如:${域名稱.鍵名.name}——>就會去調(diào)用JavaBean中的getName方法。

利用這個原理仁锯,我們可以在類中設(shè)置getXxx的方法耀找,在方法中把數(shù)據(jù)轉(zhuǎn)換好格式,再調(diào)用${域名稱.鍵名.xxx}就能顯示格式化好之后的數(shù)據(jù)了业崖,這叫邏輯視圖野芒,類中并沒有xxx成員變量。

如何獲取List集合中的值双炕?

${域名稱.鍵名[index]}

如何獲取Map集合中的Value值狞悲?

  • 1、${域名稱.鍵名.key的名稱}
  • 2妇斤、${域名稱.鍵名["key的名稱"]}

隱式對象:

  • el表達(dá)式中有11個隱式對象
    • pageContext:
    • 獲取jsp其他八個內(nèi)置對象
    • ${pageContext.request.contextPath}:動態(tài)獲取虛擬目錄

JSTL(JavaServer Pages Tag LIbrary)JSP標(biāo)準(zhǔn)標(biāo)簽庫

作用:用于簡化和替換jsp頁面上的java代碼
使用步驟

  • 1.導(dǎo)入Jar包
  • 2.使用taglib引入資源
   <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
  • 3.使用標(biāo)簽

forEach循環(huán)標(biāo)簽:

<c:forEach items="${requestScope.users}" var="user" varStatus="c">
          循環(huán)體
</c:forEach>

forEach相當(dāng)于增強(qiáng)for循環(huán)摇锋,items 是集合,var是集合中的每個元素
varStatus的屬性含義:

image.png

if標(biāo)簽:相當(dāng)于java代碼的if語句

 <c:if test="">
        若 test中的表達(dá)式為true就顯示if標(biāo)簽體內(nèi)容站超,false就不顯示if標(biāo)簽體內(nèi)容荸恕。
 </c:if>
  1. 屬性:
    • test 必須屬性,接受boolean表達(dá)式
    • 如果表達(dá)式為true死相,則顯示if標(biāo)簽體內(nèi)容融求,如果為false,則不顯示標(biāo)簽體內(nèi)容
    • 一般情況下算撮,test屬性值會結(jié)合el表達(dá)式一起使用
  2. 注意:
    • c:if標(biāo)簽沒有else情況生宛,想要else情況,則可以在定義一個c:if標(biāo)簽

choose選擇標(biāo)簽肮柜、類似于switch標(biāo)簽陷舅。

test中獲取的值等于誰就顯示誰下面的標(biāo)簽體內(nèi)容。

    <c:choose>
        <c:when test=""></c:when>
        <c:when test=""></c:when>
        <c:when test=""></c:when>
        <c:otherwise></c:otherwise>    //相當(dāng)于default
    </c:choose>

三層架構(gòu):軟件設(shè)計架構(gòu)

  1. 界面層(表示層):用戶看的得界面审洞。用戶可以通過界面上的組件和服務(wù)器進(jìn)行交互莱睁。
  2. 業(yè)務(wù)邏輯層:處理業(yè)務(wù)邏輯的。
  3. 數(shù)據(jù)訪問層:操作數(shù)據(jù)存儲文件芒澜。

圖解:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缩赛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子撰糠,更是在濱河造成了極大的恐慌酥馍,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阅酪,死亡現(xiàn)場離奇詭異旨袒,居然都是意外死亡汁针,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門砚尽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來施无,“玉大人,你說我怎么就攤上這事必孤』猓” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵敷搪,是天一觀的道長兴想。 經(jīng)常有香客問我,道長赡勘,這世上最難降的妖魔是什么嫂便? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮闸与,結(jié)果婚禮上毙替,老公的妹妹穿的比我還像新娘。我一直安慰自己践樱,他們只是感情好厂画,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拷邢,像睡著了一般木羹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上解孙,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機(jī)與錄音抛人,去河邊找鬼弛姜。 笑死,一個胖子當(dāng)著我的面吹牛妖枚,可吹牛的內(nèi)容都是我干的廷臼。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼绝页,長吁一口氣:“原來是場噩夢啊……” “哼荠商!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起续誉,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤莱没,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酷鸦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饰躲,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡牙咏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘹裂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妄壶。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寄狼,靈堂內(nèi)的尸體忽然破棺而出丁寄,到底是詐尸還是另有隱情,我是刑警寧澤泊愧,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布伊磺,位于F島的核電站,受9級特大地震影響拼卵,放射性物質(zhì)發(fā)生泄漏奢浑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一腋腮、第九天 我趴在偏房一處隱蔽的房頂上張望雀彼。 院中可真熱鬧扛或,春花似錦屑彻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莺丑。三九已至,卻和暖如春墩蔓,著一層夾襖步出監(jiān)牢的瞬間梢莽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工奸披, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留昏名,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓阵面,卻偏偏與公主長得像轻局,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子样刷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

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