JSP&EL&JSTL
阿新 • • 發佈:2020-11-19
今日內容
1. JSP:
1. 指令
2. 註釋
3. 內建物件
2. MVC開發模式
3. EL表示式
4. JSTL標籤
5. 三層架構
JSP:
1. 指令 * 作用:用於配置JSP頁面,匯入資原始檔 * 格式: <%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %> * 分類: 1. page : 配置JSP頁面的 * contentType:等同於response.setContentType() 1. 設定響應體的mime型別以及字符集 2. 設定當前jsp頁面的編碼(只能是高階的IDE才能生效,如果使用低階工具,則需要設定pageEncoding屬性設定當前頁面的字符集) * import:導包 * errorPage:當前頁面發生異常後,會自動跳轉到指定的錯誤頁面 * isErrorPage:標識當前也是是否是錯誤頁面。 * true:是,可以使用內建物件exception * false:否。預設值。不可以使用內建物件exception 2. include : 頁面包含的。匯入頁面的資原始檔 * <%@include file="top.jsp"%> 3. taglib : 匯入資源 * <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> * prefix:字首,自定義的 2. 註釋: 1. html註釋: <!-- -->:只能註釋html程式碼片段 2. jsp註釋:推薦使用 <%-- --%>:可以註釋所有 3. 內建物件 * 在jsp頁面中不需要建立,直接使用的物件 * 一共有9個: 變數名 真實型別 作用 * pageContext PageContext 當前頁面共享資料,還可以獲取其他八個內建物件 * request HttpServletRequest 一次請求訪問的多個資源(轉發) * session HttpSession 一次會話的多個請求間 * application ServletContext 所有使用者間共享資料 * response HttpServletResponse 響應物件 * page Object 當前頁面(Servlet)的物件 this * out JspWriter 輸出物件,資料輸出到頁面上 * config ServletConfig Servlet的配置物件 * exception Throwable 異常物件
MVC:開發模式
1. jsp演變歷史 1. 早期只有servlet,只能使用response輸出標籤資料,非常麻煩 2. 後來又jsp,簡化了Servlet的開發,如果過度使用jsp,在jsp中即寫大量的java程式碼,有寫html表,造成難於維護,難於分工協作 3. 再後來,java的web開發,借鑑mvc開發模式,使得程式的設計更加合理性 2. MVC: 1. M:Model,模型。JavaBean * 完成具體的業務操作,如:查詢資料庫,封裝物件 2. V:View,檢視。JSP * 展示資料 3. C:Controller,控制器。Servlet * 獲取使用者的輸入 * 呼叫模型 * 將資料交給檢視進行展示 * 優缺點: 1. 優點: 1. 耦合性低,方便維護,可以利於分工協作 2. 重用性高 2. 缺點: 1. 使得專案架構變得複雜,對開發人員要求高
EL表示式
1. 概念:Expression Language 表示式語言 2. 作用:替換和簡化jsp頁面中java程式碼的編寫 3. 語法:${表示式} 4. 注意: * jsp預設支援el表示式的。如果要忽略el表示式 1. 設定jsp中page指令中:isELIgnored="true" 忽略當前jsp頁面中所有的el表示式 2. \${表示式} :忽略當前這個el表示式 5. 使用: 1. 運算: * 運算子: 1. 算數運算子: + - * /(div) %(mod) 2. 比較運算子: > < >= <= == != 3. 邏輯運算子: &&(and) ||(or) !(not) 4. 空運算子: empty * 功能:用於判斷字串、集合、陣列物件是否為null或者長度是否為0 * ${empty list}:判斷字串、集合、陣列物件是否為null或者長度為0 * ${not empty str}:表示判斷字串、集合、陣列物件是否不為null 並且 長度>0 2. 獲取值 1. el表示式只能從域物件中獲取值 2. 語法: 1. ${域名稱.鍵名}:從指定域中獲取指定鍵的值 * 域名稱: 1. pageScope --> pageContext 2. requestScope --> request 3. sessionScope --> session 4. applicationScope --> application(ServletContext) * 舉例:在request域中儲存了name=張三 * 獲取:${requestScope.name} 2. ${鍵名}:表示依次從最小的域中查詢是否有該鍵對應的值,直到找到為止。
3. 獲取物件、List集合、Map集合的值
1. 物件:${域名稱.鍵名.屬性名}
* 本質上會去呼叫物件的getter方法
2. List集合:${域名稱.鍵名[索引]}
3. Map集合:
* ${域名稱.鍵名.key名稱}
* ${域名稱.鍵名["key名稱"]}
3. 隱式物件:
* el表示式中有11個隱式物件
* pageContext:
* 獲取jsp其他八個內建物件
* ${pageContext.request.contextPath}:動態獲取虛擬目錄
JSTL
1. 概念:JavaServer Pages Tag Library JSP標準標籤庫
* 是由Apache組織提供的開源的免費的jsp標籤 <標籤>
2. 作用:用於簡化和替換jsp頁面上的java程式碼
3. 使用步驟:
1. 匯入jstl相關jar包
2. 引入標籤庫:taglib指令: <%@ taglib %>
3. 使用標籤
4. 常用的JSTL標籤
1. if:相當於java程式碼的if語句
1. 屬性:
* test 必須屬性,接受boolean表示式
* 如果表示式為true,則顯示if標籤體內容,如果為false,則不顯示標籤體內容
* 一般情況下,test屬性值會結合el表示式一起使用
2. 注意:
* c:if標籤沒有else情況,想要else情況,則可以在定義一個c:if標籤
2. choose:相當於java程式碼的switch語句
1. 使用choose標籤宣告 相當於switch宣告
2. 使用when標籤做判斷 相當於case
3. 使用otherwise標籤做其他情況的宣告 相當於default
3. foreach:相當於java程式碼的for語句
5. 練習:
* 需求:在request域中有一個存有User物件的List集合。需要使用jstl+el將list集合資料展示到jsp頁面的表格table中
三層架構:軟體設計架構
1. 介面層(表示層):使用者看的得介面。使用者可以通過介面上的元件和伺服器進行互動
2. 業務邏輯層:處理業務邏輯的。
3. 資料訪問層:操作資料儲存檔案。
案例:使用者資訊列表展示
1. 需求:使用者資訊的增刪改查操作
2. 設計:
1. 技術選型:Servlet+JSP+MySQL+JDBCTempleat+Duird+BeanUtilS+tomcat
2. 資料庫設計:
create database day17; -- 建立資料庫
use day17; -- 使用資料庫
create table user( -- 建立表
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(5),
age int,
address varchar(32),
qq varchar(20),
email varchar(50)
);
3. 開發:
1. 環境搭建
1. 建立資料庫環境
2. 建立專案,匯入需要的jar包
2. 編碼
4. 測試
5. 部署運維