一刷后、JSP
JSP全名Java Server Page,運行在服務(wù)器端的頁面廉油,惠险。
有了JSP我們可以在JSP頁面上,既寫HTML代碼抒线,又可以寫Java代碼班巩,簡化了開發(fā)。
JSP中怎么寫JAVA嘶炭?
- <% 代碼 %>:定義的java代碼抱慌,在service方法中。service方法中可以定義什么眨猎,該腳本中就可以定義什么抑进。
- <%! 代碼 %>:定義的java代碼,在jsp轉(zhuǎn)換后的java類的成員位置睡陪。
- <%= 代碼 %>:定義的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對象不铆。
- ①炬称、contentType,相當(dāng)于response.setContentType()
- 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對象
二许帐、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、運算:
- 運算符:
- 算數(shù)運算符: + - * /(div) %(mod)
- 比較運算符: > < >= <= == !=
- 邏輯運算符: &&(and) ||(or) !(not)
- 空運算符: empty
- 功能:用于判斷字符串舀武、集合拄养、數(shù)組對象是否為null或者長度是否為0
- ${empty list}:判斷字符串、集合银舱、數(shù)組對象是否為null或者長度為0
- ${not empty str}:表示判斷字符串瘪匿、集合、數(shù)組對象是否不為null 并且 長度>0
2寻馏、獲取值棋弥、EL表達(dá)式只能從四個內(nèi)置的域?qū)ο笾蝎@取值
-
1、${域名稱.鍵名}:從指定域中獲取指定鍵的值
域名稱:- pageScope --> pageContext
- requestScope --> request
- sessionScope --> session
- 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的屬性含義:
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>
- 屬性:
- test 必須屬性,接受boolean表達(dá)式
- 如果表達(dá)式為true死相,則顯示if標(biāo)簽體內(nèi)容融求,如果為false,則不顯示標(biāo)簽體內(nèi)容
- 一般情況下算撮,test屬性值會結(jié)合el表達(dá)式一起使用
- 注意:
- 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)
- 界面層(表示層):用戶看的得界面审洞。用戶可以通過界面上的組件和服務(wù)器進(jìn)行交互莱睁。
- 業(yè)務(wù)邏輯層:處理業(yè)務(wù)邏輯的。
- 數(shù)據(jù)訪問層:操作數(shù)據(jù)存儲文件芒澜。
圖解: