JSP
JSP簡介
概念:java Servlet Pages:java服務器端頁面,本質上是一個Servlet
JSP頁面中可以同時有HTML標籤和java代碼,用於簡化書寫
使用方式:
方式 | 功能描述 |
---|---|
<% java代碼 %> |
Java代碼等效於在Service方法中執行 |
<%! java代碼 %> |
java代碼 |
<%= java代碼 %> |
java代碼會直接輸出到頁面上 |
JSP的內置對象:
-
在jsp頁面中的對象不需要獲取和創建,可以直接使用
-
jsp一共有9個內置對象。
-
request
-
response
-
out
:字符輸出流對象。可以將數據輸出到頁面上。out.write()
與response.getwriter()
區別:response.getWriter()
數據輸出永遠在out.write()
在前
-
指令
作用:用於配置JSP頁面,導入資源文件
格式:
<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ...%>
分類:
page
:配置JSP頁面的include
:頁面包含的。導入頁面的資源文件taglib
:導入資源
page
屬性:
-
contentType
- 設置響應體的mine類型以及字符集
- 設置當前jsp頁面的編碼
注意:只能是高級的IDE才能生效,如果使用低級工具,則需要設置pageEncoding屬性值設置當前頁面的字符集
-
import
:導包 -
errorPage
:當前頁面發生異常後,會自動跳轉到指定的錯誤頁面 -
isErrorPage
:標識當前頁面是否可以顯示異常信息- true:可以使用內置對象Exception
- false:默認,不可以使用
include(極少用)
<%@include file="top.jsp" %>
taglib
<%@ taglib prefix="自定義前綴" url="jsp庫的路徑"
prefix
:前綴,自定義的,用於引用
註釋
- html註釋:
<!--註釋內容-->
(只能用於HTML註釋) - jsp註釋:
<%-- 註釋內容 --%>
(註釋所有)
注意:最好使用jsp註釋
內置對象
概念:在jsp頁面中不需要註釋,直接使用的對象
一共有9個:
變量名 | 真實類型 | 作用 |
---|---|---|
pageContext | PageContext | 當前頁面共享數據,還可以獲取其他8個內置對象 |
request | HttpServletRequest | 一次請求訪問的多個資源 |
session | HttpSession | 一次會話的多個請求間 |
application | ServletContext | 所有用戶間共享數據 |
response | HttpServletResponse | 響應對象 |
page | Object | 當前頁面的對象 |
out | JspWriter | 輸出對象,數據輸出到頁面上 |
config | ServletConfig | Servlet的配置對象 |
exception | Throwable | 異常對象 |
MVC開發模式
含義:
- M(model),模型,使用javaBean
作用:完成具體的業務操作,如:查詢數據庫,封裝對象
- V(view),視圖,使用JSP
作用:展示數據
- C(Controller),控制器,使用Servlet
作用:獲取用戶的輸入,調用模型,將數據交給視圖進行展示
優缺點:
- 優點:耦合性低,方便維護,可以利於分工協作,重用性高
- 缺點:使項目架構複雜
EL表達式
概念:Expression Language 表達式語言
作用:替換和簡化jsp頁面中的編寫
語法:${表達式}
注意:
jsp默認支持el表達式。如果要忽略el表達式
- 設置jsp中page指令中:
isELIgnored="true"
,忽略當前jsp頁面中所有的el表達式 \${表達式}
:將el表達式原樣顯示
運算:
- 算數運算符:+ - * /(div) %(mod)
- 比較運算符:> < >= <= !=
- 邏輯運算符:&&(and) ||(or) !(not)
- 空運算符:empty
- 功能:用於判斷字符串、集合、數組對象是否是null並且長度是否爲0
- 如:
${empty list}
獲取值:
el表達式只能從域對象中獲取值
語法:
${域名稱.鍵名}
:從指定域中獲取指定鍵的值
域名稱 | 原來域 |
---|---|
pageScope | pageContext |
requestScope | request |
sessionScope | session |
applicationScope | application(ServletContext) |
例子:${requestScope.name}
${鍵名}
:表示依次從最小的域中查找是否有該鍵對應的值,直到找到爲止。
獲取對象、List集合、Map集合的值
獲取值來源 | 語法 |
---|---|
對象 | ${域名稱.鍵名.屬性值} |
List集合 | ${域名稱.鍵名[索引]} |
Map集合 | ${域名稱.鍵名.key名稱} ${域名稱.鍵名["key名稱"]} |
- 隱式對象:el表達式中有11個隱式對象
pageContext
:獲取其他8個內置對象
${pageContext.request.contextPath}:動態獲取虛擬目錄
JSTL
概念:JSP標準標籤庫,由Apache組織提供的
作用:用於簡化和替換jsp頁面上的java代碼
使用步驟:
- 導入jstl相關的jar包
- 引入標籤庫:
taglib
指令:<%@ taglib %>
- 使用標籤
常用的jstl標籤:
標籤名稱 | 類似java關鍵字 |
---|---|
if | if |
choose | switch |
when | case |
otherwise | default |
foreach | for |
標籤if
的屬性注意:
test
爲必須屬性,接收boolean表達式- 標籤
if
沒有else情況。
三層架構:軟件架構
架構層次:
-
界面層(表示層):用戶看的得界面。用戶可以通過界面上的組件和服務器進行交互
-
業務邏輯層:處理業務邏輯的。
-
數據訪問層:操作數據存儲文件。