MVC+動(dòng)態(tài)頁(yè)面技術(shù)(JSP/EL/JSTL)復(fù)習(xí)

一坛芽、JSP技術(shù)

1.jsp腳本和注釋

jsp腳本:

  1)<%java代碼%> ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部

  2)<%=java變量或表達(dá)式> ----- 會(huì)被翻譯成service方法內(nèi)部out.print()

  3)<%!java代碼%> ---- 會(huì)被翻譯成servlet的成員的內(nèi)容

jsp注釋:? 不同的注釋可見(jiàn)范圍是不同

  1)Html注釋:<!--注釋內(nèi)容--> ---可見(jiàn)范圍 jsp源碼、翻譯后的servlet且改、頁(yè)面顯示html源碼

  2)java注釋://單行注釋? /*多行注釋*/ --可見(jiàn)范圍 jsp源碼 翻譯后的servlet

  3)jsp注釋:<%--注釋內(nèi)容--%> ----- 可見(jiàn)范圍 jsp源碼可見(jiàn)

2.jsp運(yùn)行原理-----jsp本質(zhì)就是servlet(面試)

jsp在第一次被訪問(wèn)時(shí)會(huì)被Web容器翻譯成servlet脐帝,再執(zhí)行

過(guò)程:

  第一次訪問(wèn)---->helloServlet.jsp---->helloServlet_jsp.java---->編譯運(yùn)行

  PS:被翻譯后的servlet在Tomcat的work目錄中可以找到

3.jsp指令(3個(gè))

jsp的指令是指導(dǎo)jsp翻譯和運(yùn)行的命令软能,jsp包括三大指令:

  1)page指令 --- 屬性最多的指令(實(shí)際開(kāi)發(fā)中page指令默認(rèn))屬性最多的一個(gè)指令俗扇,根據(jù)不同的屬性,指導(dǎo)整個(gè)頁(yè)面特性

    格式:<%@ page 屬性名1= "屬性值1" 屬性名2= "屬性值2" ...%>

    常用屬性如下:

      language:jsp腳本中可以嵌入的語(yǔ)言種類

      pageEncoding:當(dāng)前jsp文件的本身編碼---內(nèi)部可以包含contentType

      contentType:response.setContentType(text/html;charset=UTF-8)

      session:是否jsp在翻譯時(shí)自動(dòng)創(chuàng)建session

      import:導(dǎo)入java的包

      errorPage:當(dāng)當(dāng)前頁(yè)面出錯(cuò)后跳轉(zhuǎn)到哪個(gè)頁(yè)面

      isErrorPage:當(dāng)前頁(yè)面是一個(gè)處理錯(cuò)誤的頁(yè)面

  2)include指令

    頁(yè)面包含(靜態(tài)包含)指令初坠,可以將一個(gè)jsp頁(yè)面包含到另一個(gè)jsp頁(yè)面中

    格式:<%@ include file="被包含的文件地址"%>

  3)taglib指令

    在jsp頁(yè)面中引入標(biāo)簽庫(kù)(jstl標(biāo)簽庫(kù)和簸、struts2標(biāo)簽庫(kù))

    格式:<%@ taglib uri="標(biāo)簽庫(kù)地址" prefix="前綴"%>

4.jsp內(nèi)置/隱式對(duì)象(9個(gè))----- 筆試

jsp被翻譯成servlet之后,service方法中有9個(gè)對(duì)象定義并初始化完畢碟刺,我們?cè)趈sp腳本中可以直接使用這9個(gè)對(duì)象

名稱類型描述

outjavax.servlet.jsp.JspWriter? ??????用于頁(yè)面輸出

requestjavax.servlet.http.HttpServletRequest? ??????得到用戶請(qǐng)求信息锁保,

responsejavax.servlet.http.HttpServletResponse? ??服務(wù)器向客戶端的回應(yīng)信息

configjavax.servlet.ServletConfig? ??????服務(wù)器配置,可以取得初始化參數(shù)

sessionjavax.servlet.http.HttpSession? ??????用來(lái)保存用戶的信息

applicationjavax.servlet.ServletContext? ??????所有用戶的共享信息

pagejava.lang.Object? ??????指當(dāng)前頁(yè)面轉(zhuǎn)換后的Servlet類的實(shí)例

pageContextjavax.servlet.jsp.PageContextJSP? ??????的頁(yè)面容器

exceptionjava.lang.Throwable? ??????表示JSP頁(yè)面所發(fā)生的異常南誊,在錯(cuò)誤頁(yè)中才起作用

(1)out對(duì)象

  out的類型:JspWriter

  out作用就是想客戶端輸出內(nèi)容----out.write()

  out緩沖區(qū)默認(rèn)8kb 可以設(shè)置成0 代表關(guān)閉out緩沖區(qū)內(nèi)容直接寫到respons緩沖區(qū)

(2)pageContext對(duì)象

  jsp頁(yè)面的上下文對(duì)象身诺,作用如下:

    page對(duì)象與pageContext對(duì)象不是一回事

  1)pageContext是一個(gè)域?qū)ο?/p>

    setAttribute(String name,Object obj)

    getAttribute(String name)

    removeAttrbute(String name)

  pageContext可以向指定的其他域中存取數(shù)據(jù)

    setAttribute(String name,Object obj,int scope)

    getAttribute(String name,int scope)

    removeAttrbute(String name,int scope)

    findAttribute(String name)

    ---依次從pageContext域,request域抄囚,session域,application域中獲取屬性橄务,在某個(gè)域中獲取后將不在向后尋找

  四大作用域的總結(jié):

    pageContext域:當(dāng)前jsp頁(yè)面范圍

    request域:一次請(qǐng)求

    session域:一次會(huì)話

    application域:整個(gè)web應(yīng)用

2)可以獲得其他8大隱式對(duì)象

  例如: pageContext.getRequest()

     ?pageContext.getSession()

5.jsp標(biāo)簽(動(dòng)作)

1)頁(yè)面包含(動(dòng)態(tài)包含):<jsp:include page="被包含的頁(yè)面"/>

2)請(qǐng)求轉(zhuǎn)發(fā):<jsp:forward page="要轉(zhuǎn)發(fā)的資源" />

靜態(tài)包含與動(dòng)態(tài)包含的區(qū)別幔托?


二、EL技術(shù)

1.EL 表達(dá)式概述

EL(Express Lanuage)表達(dá)式可以嵌入在jsp頁(yè)面內(nèi)部蜂挪,減少jsp腳本的編寫重挑,EL 出現(xiàn)的目的是要替代jsp頁(yè)面中腳本的編寫。

2.EL從域中取出數(shù)據(jù)(EL最重要的作用)

jsp腳本:<%=request.getAttribute(name)%>

EL表達(dá)式替代上面的腳本:${requestScope.name}

EL最主要的作用是獲得四大域中的數(shù)據(jù)棠涮,格式${EL表達(dá)式}

EL獲得pageContext域中的值:${pageScope.key};

EL獲得request域中的值:${requestScope.key};

EL獲得session域中的值:${sessionScope.key};

EL獲得application域中的值:${applicationScope.key};

EL從四個(gè)域中獲得某個(gè)值${key};

---同樣是依次從pageContext域谬哀,request域,session域严肪,application域中獲取屬性史煎,在某個(gè)域中獲取后將不在向后尋找

3.EL的內(nèi)置對(duì)象11個(gè)

pageScope,requestScope,sessionScope,applicationScope?---- 獲取JSP中域中的數(shù)據(jù)

param,paramValues - 接收參數(shù) ? ?相當(dāng)于request.getParameter() ? rquest.getParameterValues()

header,headerValues? - 獲取請(qǐng)求頭信息 ? ?相當(dāng)于request.getHeader(name)

initParam ?- 獲取全局初始化參數(shù) ? ?相當(dāng)于this.getServletContext().getInitParameter(name)

cookie ?- WEB開(kāi)發(fā)中cookie ? ?相當(dāng)于request.getCookies()---cookie.getName()---cookie.getValue()

pageContext - WEB開(kāi)發(fā)中的pageContext.

pageContext獲得其他八大對(duì)象

${pageContext.request.contextPath} ?相當(dāng)于<%=pageContext.getRequest().getContextPath%>? 這句代碼不能實(shí)現(xiàn)?獲得WEB應(yīng)用的名稱

4.EL執(zhí)行表達(dá)式

例如:

  ${1+1}

  ${empty user}

  ${user==null?true:false}

一谦屑、JSTL技術(shù)

1.JSTL概述

JSTL(JSP Standard Tag Library),JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)篇梭,可以嵌入在jsp頁(yè)面中使用標(biāo)簽的形式完成業(yè)務(wù)邏輯等功能氢橙。jstl出現(xiàn)的目的同el一樣也是要代替jsp頁(yè)面中的腳本代碼。JSTL標(biāo)準(zhǔn)標(biāo)準(zhǔn)標(biāo)簽庫(kù)有5個(gè)子庫(kù)恬偷,但隨著發(fā)展悍手,目前常使用的是他的核心庫(kù)

標(biāo)簽庫(kù)標(biāo)簽庫(kù)的URI前綴

Corehttp://java.sun.com/jsp/jstl/corec

I18Nhttp://java.sun.com/jsp/jstl/fmtfmt

SQLhttp://java.sun.com/jsp/jstl/sqlsql

XMLhttp://java.sun.com/jsp/jstl/xmlx

Functionshttp://java.sun.com/jsp/jstl/functionsfn

2.JSTL下載與導(dǎo)入

JSTL下載:

  從Apache的網(wǎng)站下載JSTL的JAR包。進(jìn)入“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”網(wǎng)址下載JSTL的安裝包袍患。jakarta-taglibs-standard-1.1.2.zip坦康,然后將下載好的JSTL安裝包進(jìn)行解壓,此時(shí)诡延,在lib目錄下可以看到兩個(gè)JAR文件涝焙,分別為jstl.jar和standard.jar。? 其中孕暇,jstl.jar文件包含JSTL規(guī)范中定義的接口和相關(guān)類仑撞,standard.jar文件包含用于實(shí)現(xiàn)JSTL的.class文件以及JSTL中5個(gè)標(biāo)簽庫(kù)描述符文件(TLD)

將兩個(gè)jar包導(dǎo)入我們工程的lib中

使用jsp的taglib指令導(dǎo)入核心標(biāo)簽庫(kù)

3.JSTL核心庫(kù)的常用標(biāo)簽

1)<c:if test=””>標(biāo)簽

  其中test是返回boolean的條件

2)<c:forEach>標(biāo)簽

  使用方式有兩種組合形式:

四、javaEE的開(kāi)發(fā)模式

1.什么是模式

模式在開(kāi)發(fā)過(guò)程中總結(jié)出的“套路”妖滔,總結(jié)出的一套約定俗成的設(shè)計(jì)模式

2.javaEE經(jīng)歷的模式

model1模式:

  技術(shù)組成:jsp+javaBean

  model1的弊端:隨著業(yè)務(wù)復(fù)雜性導(dǎo)致jsp頁(yè)面比較混亂

model2模式

  技術(shù)組成:jsp+servlet+javaBean

  model2的優(yōu)點(diǎn):開(kāi)發(fā)中 使用各個(gè)技術(shù)擅長(zhǎng)的方面

  servlet:擅長(zhǎng)處理java業(yè)務(wù)代碼

  jsp:擅長(zhǎng)頁(yè)面的現(xiàn)實(shí)

MVC:---- web開(kāi)發(fā)的設(shè)計(jì)模式

  M:Model---模型 javaBean:封裝數(shù)據(jù)

  V:View-----視圖 jsp:?jiǎn)渭冞M(jìn)行頁(yè)面的顯示

  C:Controller----控制器 Servelt:獲取數(shù)據(jù)--對(duì)數(shù)據(jù)進(jìn)行封裝--傳遞數(shù)據(jù)--指派顯示的jsp頁(yè)面

3.javaEE的三層架構(gòu)

服務(wù)器開(kāi)發(fā)時(shí) 分為三層

  web層:與客戶端交互

  service層:復(fù)雜業(yè)務(wù)處理

  dao層:與數(shù)據(jù)庫(kù)進(jìn)行交互

開(kāi)發(fā)實(shí)踐時(shí) 三層架構(gòu)通過(guò)包結(jié)構(gòu)體現(xiàn)

MVC與三層架構(gòu)有什么關(guān)系隧哮?


總結(jié):

EL表達(dá)式

  從域中取出數(shù)據(jù) ${域中存儲(chǔ)的數(shù)據(jù)的name}

  ${pageContext.request.contextPath}

JSTL標(biāo)簽(核心庫(kù))

  <%@ taglib uri=”” prefix=”c”%>

  <c:if test=””>

  <c:forEach items=”數(shù)組或集合” var=”數(shù)組或集合中的每一個(gè)元素”>

javaEE三層架構(gòu)+MVC

  web層:收集頁(yè)面數(shù)據(jù),封裝數(shù)據(jù)座舍,傳遞數(shù)據(jù)沮翔,指定響應(yīng)jsp頁(yè)面

  service層:邏輯業(yè)務(wù)代碼的編寫

  dao層:數(shù)據(jù)庫(kù)的訪問(wèn)代碼的編寫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市曲秉,隨后出現(xiàn)的幾起案子采蚀,更是在濱河造成了極大的恐慌,老刑警劉巖承二,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榆鼠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡亥鸠,警方通過(guò)查閱死者的電腦和手機(jī)妆够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)负蚊,“玉大人神妹,你說(shuō)我怎么就攤上這事〖易保” “怎么了鸵荠?”我有些...
    開(kāi)封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)伤极。 經(jīng)常有香客問(wèn)我蛹找,道長(zhǎng)姨伤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任熄赡,我火速辦了婚禮姜挺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彼硫。我一直安慰自己炊豪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布拧篮。 她就那樣靜靜地躺著词渤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪串绩。 梳的紋絲不亂的頭發(fā)上缺虐,一...
    開(kāi)封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音礁凡,去河邊找鬼高氮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顷牌,可吹牛的內(nèi)容都是我干的剪芍。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窟蓝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼罪裹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起运挫,我...
    開(kāi)封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤状共,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谁帕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體峡继,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年雇卷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鬓椭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡关划,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翘瓮,到底是詐尸還是另有隱情贮折,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布资盅,位于F島的核電站调榄,受9級(jí)特大地震影響踊赠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜每庆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一筐带、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缤灵,春花似錦伦籍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至胚嘲,卻和暖如春作儿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背馋劈。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工攻锰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妓雾。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓娶吞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親君珠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寝志,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361