NO.71 servlet小結(jié)、jsp標(biāo)簽和el表達(dá)式

1.容器處理異常(了解)

將異常拋給容器,讓容器來處理。

2.servlet小結(jié)

(1)Servlet基礎(chǔ)

1)什么是Servlet?

2)如何開發(fā)一個(gè)Servlet?

3)什么是Servlet容器?

4)http協(xié)議(了解)

a.什么是http協(xié)議?

b.特點(diǎn)

c.數(shù)據(jù)包的結(jié)構(gòu)

d.狀態(tài)碼,消息頭

e.get/post請求

5)Servlet是如何運(yùn)行的?

(2)Servlet核心

1)讀取請求參數(shù)值

2)處理表單中文參數(shù)值亂碼問題

3)Servlet輸出中文亂碼問題

4)轉(zhuǎn)發(fā)與重定向

5)Servlet的生命周期

1)什么是Servlet的生命周期?

2)分成哪幾個(gè)階段?

a.實(shí)例化 (load-on-startup) 單例

b.初始化 (一次,overrid init方法)

c.調(diào)用/就緒 (doGet,doPost)

d.銷毀

3)相關(guān)的接口與類 (Servlet,GenericServlet,HttpServlet)

6)Servlet上下文

7)線程安全問題

8)容器如何處理請求資源路徑?

9)如何讓一個(gè)Servlet處理多種請求?

10)路徑問題

(3)狀態(tài)管理

1)什么是狀態(tài)管理?

2)如何進(jìn)行狀態(tài)管理?

3)Cookie

a.什么是Cookie?

b.工作原理 (set-cookie消息頭,cookie消息頭)

c.如何添加Cookie?

d.三個(gè)問題(編碼問題,生存時(shí)間問題,路徑問題)

e.如何讀取Cookie?

f.Cookie的限制

4)Session

a.什么是Session?

b.工作原理

c.如何獲得Session對象 (request.getSession)

d.綁訂數(shù)據(jù)

e.Session超時(shí)

f.刪除Session

(4)數(shù)據(jù)庫訪問

dao

(5)過濾器與監(jiān)聽器

1)什么是過濾器?

2)如何寫一個(gè)過濾器?

3)初始化參數(shù)

4)優(yōu)先級

5)優(yōu)點(diǎn)(了解)

6)什么是監(jiān)聽器?

7)如何寫一個(gè)監(jiān)聽器?

(6)案例

員工管理

登錄/注冊

session驗(yàn)證

驗(yàn)證碼

3. jsp

(1)什么是jsp?

.jsp(html + java代碼) --->Servlet

(2)如何寫jsp?

1)html (css,js): 直接寫

2)java代碼:

a.java代碼片斷:? <%? %>

b.jsp表達(dá)式:? <%=? %>

c.jsp聲明:? <%! 變量或者方法? %>

3)隱含對象

a.什么是隱含對象?

b.為什么可以使用這些隱含對象?

c.有哪些隱含對象?

out,request,response,session,application

pageContext(page上下文):

c1. 容器會為每一個(gè)jsp實(shí)例創(chuàng)建唯一的一個(gè)符合PageContext接口要求的對象。

注: 一個(gè)jsp實(shí)例對應(yīng)一個(gè)pageContext,另外,只要jsp實(shí)例還在,pageContext就在。

c2. 作用

作用1:綁訂數(shù)據(jù) (setAttribute,getAttribute,removeAttribute

注:可以將pageContext看作是一個(gè)“錢包”,綁訂到pageContext上面的數(shù)據(jù),只有對應(yīng)的

jsp實(shí)例才能訪問。

作用2:獲得其它隱含對象

exception(了解):只有當(dāng)page指令的isErrorPage屬性值為true時(shí),才能使用。用來獲取異常的簡潔的描述。

config(了解): ServletConfig

page(不用): jsp實(shí)例本身(jsp對應(yīng)的servlet實(shí)例)

4)指令

a.什么是指令?

b.指令的格式? <%@ 指令名? 屬性=值 %>

c.有哪些指令?

c1. page指令

import屬性

pageEncoding屬性

contentType屬性

errorPage屬性(了解):指定一個(gè)異常處理頁面(專門用來處理其它jsp產(chǎn)生的異常)。

isErrorPage屬性(了解):缺省值是false,當(dāng)值為true時(shí),表示這是一個(gè)異常處理頁面。可以在該頁面當(dāng)中,使用exception隱含對象。

session屬性(了解):缺省值是true,如果值設(shè)置為false,則不能夠使用session隱含對象了。

c2. incude指令

file屬性

c3. taglib指令

導(dǎo)入jsp標(biāo)簽。

5)注釋

a.? ? 如果注釋的內(nèi)容有java代碼,會執(zhí)行。

b. <%-- 注釋的內(nèi)容 --%>? 如果注釋的內(nèi)容有java代碼,不會執(zhí)行。

(3)執(zhí)行過程

step1.? jsp轉(zhuǎn)換成Servlet

html-------> service方法,使用out.write輸出。

<%? %> ----> service方法? ,照搬。

<%=? %> ---> service方法,使用out.print輸出。

<%!? %> ---> 為Servlet增加新的屬性和方法。

step2. 調(diào)用Servlet

4. jsp標(biāo)簽和el表達(dá)式

(1)什么是jsp標(biāo)簽?

jsp標(biāo)簽類似于html標(biāo)簽,用來替換jsp中的java代碼。

注:因?yàn)橹苯釉趈sp文件中寫java代碼,不利于jsp文件的維護(hù)(比如,將包含有大量java代碼的jsp交給美工去修改就很不方便),所以,sun公司制訂了jsp標(biāo)簽技術(shù)規(guī)范。使用jsp標(biāo)簽代替java代碼之后,jsp文件變得簡潔,便于維護(hù)。而且便于代碼的復(fù)用。

(2)什么是el表達(dá)式?

是一套運(yùn)算規(guī)則,用于給jsp標(biāo)簽的屬性賦值,也可以直接輸出。

(3)el表達(dá)式的使用

1)訪問bean的屬性

方式一? ${user.name} :? ? 容器依次從pageContext,request,session,application中查找綁訂名為"user"的對象(getAttribute),找到之后,會調(diào)用該對象的"getName"方法,然后輸出;如果找不到,會輸出""。

注:a.依次,指的是先從pageContext上去查找,如果沒有,再查找request,如果找到,則不再向下查找了。

b.如果值為null,會轉(zhuǎn)換成""輸出。

c.如果要指定查找范圍,可以使用pageScope,requestScope,sessionScope,applicationScope。

比如:${requestScope.user.name}。

方式二? ${user['name']}? ? 等價(jià)于${user.name}

注:a.[]可以使用綁訂名。

b.[]可以使用從0開始的下標(biāo),用來讀取數(shù)組中的某個(gè)元素。

2)做一些簡單的運(yùn)算

a. 算術(shù)運(yùn)算? +,-,*,/,%

注: + 只能求和。

b. 關(guān)系運(yùn)算? >,>=,<,<=,==,!=

c. 邏輯運(yùn)算? && || !

d. empty運(yùn)算 empty

用來判斷集合是否為空,或者是否為一個(gè)空字符串。

3)讀取請求參數(shù)值(了解)

${param.username}等價(jià)于request.getParameter("username");

${paramValues.city}等價(jià)于request.getParameterValues("city");

(4)jstl(java standard taglib)標(biāo)簽

注(了解):apache開發(fā)的一套標(biāo)簽,后來捐獻(xiàn)給了sun。

1)如何使用jstl標(biāo)簽。

step1.導(dǎo)包。(jstl.jar)

step2.使用taglib指令,導(dǎo)入要使用的標(biāo)簽。

2)幾個(gè)核心標(biāo)簽

a. if標(biāo)簽

注:a1. c是命名空間的前綴(別名)。

命名空間(namespace): 為了區(qū)分同名的元素而添加的一個(gè)限定。

a2. 如果test屬性值為true,則執(zhí)行標(biāo)簽體的內(nèi)容。test屬性可以使用el表達(dá)式來計(jì)算。

a3. var屬性指定一個(gè)綁訂名,scope屬性指定綁訂的范圍("page","request","session","application")

b.choose標(biāo)簽

注:b1.when表示一個(gè)分支,如果test屬性值為true,則執(zhí)行該分支。(可以出現(xiàn)1次或者多次)

b2.otherwise表示例外,可以出現(xiàn)0次或者1次。

c.forEach標(biāo)簽

注:c1.用來遍歷集合或者數(shù)組。

c2.items屬性用來指定要遍歷的集合或者數(shù)組,可以使用el表達(dá)式。

c3.var屬性用來指定綁訂名(綁訂范圍是pageContext)。

c4.varStatus屬性用來指定綁訂名(綁訂范圍是pageContext),綁訂值是一個(gè)特殊的對象(由該標(biāo)簽創(chuàng)建,作用是用來獲得當(dāng)前遍歷的狀態(tài),比如getIndex方法:獲得當(dāng)前被遍歷的元素的下標(biāo)。getCount方法用來獲得當(dāng)前是第幾次遍歷)? ? 。

3)自定義jsp標(biāo)簽

編程步驟

step1. 寫一個(gè)java類,繼承SimpleTagSupport類。

step2. override doTag方法,在該方法里面,寫處理邏輯。

step3. 在.tld文件當(dāng)中描述標(biāo)簽。

<body-content>的值可以是emtpy,scriptless,JSP

empty:標(biāo)簽沒有標(biāo)簽體。

scriptless:標(biāo)簽可以有標(biāo)簽體,但是標(biāo)簽體的內(nèi)容不能夠出現(xiàn)java代碼(<%? %>,<%= %>,<%!? %>)。

JSP:標(biāo)簽可以有標(biāo)簽體,標(biāo)簽體的內(nèi)容可以出現(xiàn)java代碼。但是,只有復(fù)雜標(biāo)簽技術(shù)才支持。

注:復(fù)雜標(biāo)簽技術(shù)是一種比較老的標(biāo)簽技術(shù)。繼承自SimpleTagSupport的標(biāo)簽屬于簡單標(biāo)簽技術(shù)。

代碼示例:

標(biāo)簽java類
配置文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 1.學(xué)習(xí)內(nèi)容 JSP技術(shù)入門和常用指令 JSP的內(nèi)置對象&標(biāo)簽介紹 EL表達(dá)式&EL的內(nèi)置對象 2.JSP技術(shù)入門...
    WendyVIV閱讀 2,172評論 1 18
  • 一、JSP基礎(chǔ) 1.1什么是JSP JSP(Java ServerPage)是Java服務(wù)器端動(dòng)態(tài)頁面技術(shù)。是su...
    晨星資源閱讀 1,175評論 0 6
  • 1.什么是JSP (1)jsp全稱是Java Server Pages,它和Servlet技術(shù)一樣都是sun公司定...
    yjaal閱讀 3,685評論 5 99
  • 前面講了servlet入門實(shí)踐現(xiàn)在開始介紹jsp入門實(shí)踐,開發(fā)環(huán)境的搭建請參考我前面的tomcat的文章,jsp入...
    伊豚wall閱讀 3,384評論 2 56
  • 復(fù)習(xí)復(fù)習(xí)!!!搞起來!!Servlet和JSP是Java EE規(guī)范最基本成員,他們是Java Web開發(fā)的重點(diǎn)知識...
    JackFrost_fuzhu閱讀 2,869評論 1 71