EL&JSTL筆記
JSP
指令
作用:用於配置jsp頁面,匯入資原始檔
格式:
<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 … %>
分類:
1.page:配置JSP頁面
contentType:等同於response.setContentType()
設定響應體的mime型別以及字符集
設定當前jsp頁面的編碼(只能是高階的IDE才能生效,如果使用低階工具,則需要設定pageEncoding屬性設定當前頁面的字符集)
import:導包
errorPage:當前頁面發生異常後,會自動跳轉到指定的錯誤頁面
isErrorPage:標識當前頁面是否是錯誤頁面
true:是,可以使用內建物件exception
false:否,預設值,不能使用exception
2.include:頁面包含的,匯入頁面的資原始檔
<%@ include file=“top.jsp” %>
3.taglib:匯入資源
<%@ taglib prefix=“c” uri=“
prefix:字首,自定義的
註釋
html註釋:
<!-- -->:
只能註釋html程式碼片段
jsp註釋:
<%-- --%>:
可以註釋所有
內建物件
再jsp頁面中不需要建立,直接使用的物件
一共有9個:
變數名 | 真實型別 | 作用 |
---|---|---|
pageContext | PageContext | 當前頁面共享資料,還可以獲取其他八個內建物件 |
request | HttpServletRequest | 一次請求訪問的多個資源 |
session | HttpSession | 一次會話的多個請求間 |
application | ServletContext | 所有使用者間共享資料 |
response | HttpServletResponse | 響應物件 |
page | Object | 當前頁面(Servlet)的物件,this |
out | JspWriter | 輸出物件,資料輸出到頁面上 |
config | ServletConfig | Servlet的配置物件 |
exception | Throwable | 異常物件 |
開發模式
MVC
M:Model,模型,JavaBean
完成具體的業務操作,如查詢資料庫,封裝物件
V:View,檢視,jsp
展示資料
C:Controller,控制器,Servlet
獲取使用者的輸入,呼叫模型,將資料交給檢視進行展示
優點:
耦合性低,方便為何,可以利於分工協作
重用性高
缺點
使得專案架構變得複雜,對開發人員要求高
EL表示式
概念:Expression Language 表示式語言
作用:替換和簡化jsp頁面中java程式碼的編寫
語法:${表示式}
注意:
jsp預設支援el表示式,如果要忽略el表示式有兩種方式
設定jsp中的page指令:isELIgnored=“true” 忽略當前jsp頁面中所有的el表示式
${表示式}:忽略當前這個el表示式
使用:
運算:
運算子:
算數運算子:+ - * /(div) %(mod)
比較運算子:> < >= <= == !=
邏輯運算子: &(and) ||(or) !(not)
空運算子:empty
功能:用於判斷字串,集合,陣列物件是否為null或者長度是否為0
${empty list}:
${not empty list}:
獲取值
1.el表示式只能從域物件中獲取值
2.語法:
${域名稱.鍵名}:從指定域中獲取指定鍵的值
域名稱:
pageScope–>pageContext
requestScope–>request
sessionScope–>session
applicationScope–>application(ServletContext)
${鍵名}:表示依次從最小的域中查詢是否有該鍵對應的值,直到找到為止
獲取物件,List集合,Map集合的值
物件:
${域名稱.鍵名.屬性名}:本質上會呼叫物件的getter方法
List集合:
${域名稱.鍵名[索引]}
Map集合:
${域名稱.鍵名.key名稱}
${域名稱.鍵名.[“key名稱”]}
3.隱式物件:
el表示式中有11個隱式物件
pageContext:
獲取jsp其他八個內建物件
${pageContext.request.contextPath}:動態獲取虛擬目錄
JSTL
概念:JavaServer Pages Tag Library: JSP標準標籤庫
由apache組織提供的開源的免費的jsp標籤
作用:用於簡化和替換jsp頁面上的java程式碼
使用步驟:
1.匯入jstl相關jar包
2.引入標籤庫:taglib指令:<%@ taglib %>
3.使用標籤
常用的JSTL標籤
1.if:相當於java程式碼的if程式碼
屬性:
test:必須屬性,接收boolean表示式
如果表示式為true,則顯示if標籤體內容,反之不現實
一般情況下test配合el表示式一起使用
c:if沒有else情況,想要else情況,可以定義一個c:if標籤
2.choose:相當於java程式碼的switch語句
使用choose標籤宣告:相當於switch
使用when標籤宣告:相當於case
使用other標籤宣告:相當於default
3.foreach:相當於java程式碼的for語句
begin:起始值
end:結束值
step:步長
var:元素物件
varStatus:元素遍歷的屬性
三層架構
- 介面層(表示層):使用者看的得介面。使用者可以通過介面上的元件和伺服器進行互動
- 業務邏輯層:處理業務邏輯的。
- 資料訪問層:操作資料儲存檔案。