一、jsp部分
只要是與頁面顯示相關的都是重點
1.jsp的指令碼
<%java程式碼%>:被翻譯到service方法內部,區域性變數,區域性的功能
<%=表示式或變數%>:翻譯成service方法中out.write(表示式或變數)
<%!java程式碼%>:被翻譯成servlet的全域性的內容,方法,全域性變數
2.jsp的執行原理
jsp在執行時翻譯成servlet
index.jsp------>work/index_jsp.java----->work/index_jsp.class
3.jsp的註釋
html註釋:<!--註釋--> 可見範圍:html原始碼可見
java註釋:註釋寫到指令碼 // /**/ /***/ 可見範圍:翻譯後的servlet
jsp註釋:<%--註釋--%> 可見範圍:jsp原始碼範圍可見
4.jsp的指令
jsp的指令:page指令 taglib指令 include指令
jsp指令的一般格式:<%@ 指令名稱 屬性=“屬性值” 屬性=“屬性值”%>
(1)page指令
配置整個jsp的資訊
屬性:
language:jsp中的指令碼可以嵌入的語言程式碼 只能嵌入java 預設嵌java
import:在jsp中匯入包
pageEncoding:本身jsp的編碼 內部已經包含contentType
contentType:翻譯成response.setContentType("text/html; charset=GBK");
errorPage:jsp出錯後的跳轉的地址
isErrorPage:true代表本身是一個錯誤處理的頁面
isELIgnored:jsp是否可以解析el表示式 預設是false 可以解析
session:是否自動建立session
buffer:out緩衝區的大小 可以設定為0kb
(2)taglib指令
引入標籤庫
<%@ taglib uri=”” prefix=””%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
(3)include指令
包含頁面用----靜態包含
<%@ include file="/jsp/J2.jsp" %>
5.jsp的九大隱式物件(面試筆試常問)
什麼是隱式物件?
在jsp指令碼中直接使用的物件
request
response
pageContext
session
application
config
out
page
exception
其中
out物件:JspWriter
out.write()---->頁面寫內容
pageContext物件:頁面的上下文物件
1)pageContext是一域物件
可見範圍:當前jsp頁面
setAttribute(name,value)
getAttribute(name)
removeAttribute(name)
setAttribute(name,value,scope)
getAttribute(name,scope)
removeAttribute(name,scope)
其中scope是指定的域範圍
pageContext.setAttribute("name", "zhangsan", PageContext.SESSION_SCOPE);
findAttribute(name);
底層實現:從四個域中尋找屬性 從小到大的順序 找到屬性後 後面的域不在尋找了
page域---->request域----->session域----->application域
${requestScope.name}
${name}-----底層findAttribute()
2)pageContext可以獲得其他八大隱式物件
6.jsp的標籤(jsp的動作)
<jsp:include>----面試經常問
包含頁面----動態包含
靜態包含與動態包含的區別?
靜態包含:先將被包含的jsp與包含的jsp進行原始碼級別的合併,然後在翻譯成一個servlet
動態包含:將兩個jsp分別翻譯,在執行階段在將結果合併
<jsp:forward>
<jsp:param>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
二、EL表示式
E L(Expression Language) 目的:為了使JSP寫起來更加簡單
1.El可以獲取域中的資料
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}
${name}
2.El可以進行運算
${1+1}
${name==’zhangsan’?true:false}
${list[2].name=='aaa3'?"等於":"不等於" }
關鍵字empty
${empty 域中的物件/變數}----->true/false
3.EL的內建物件 11個(瞭解)
pageScope requestScope sessionScope applicationScope
pageContext
${pageContext.request.contextPath }
4.El呼叫函式(方法)
使用步驟:
1)引入el函式庫
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
2)在jsp頁面上使用el函式
語法:${fn:函式(引數)} 返回值就是處理後的結果
${fn:toUpperCase("ahdkjalskhd")}
---->AHDKJA....
三、jstl標籤庫
JSTL(JSP Standard Tag Library,JSP標準標籤庫),替代jsp指令碼中的邏輯程式碼
1.JSTL標籤的組成
標籤庫功能描述 |
標籤庫的URI |
建議字首 |
核心標籤庫 |
http://java.sun.com/jsp/jstl/core |
c |
XML標籤庫 |
http://java.sun.com/jsp/jstl/xml |
x |
國際化/格式化標籤庫 |
fmt |
|
資料庫標籤庫 |
sql |
|
EL函式 |
http://java.sun.com/jsp/jstl/functions |
fn |
2.jstl的核心庫
開發步驟:
1)頁面引入jstl核心庫<%@ taglib%>
2)在頁面使用jstl核心庫標籤
jstl標籤:
<c:forEach>
兩種使用方式:
a) items+var+varstatus
b) begin+end+var
<c:if>
test屬性:內部是一個boolean的判斷
<c:set>
直接向域中設定資料
var:域中的資料的name
value:域中的資料的value
scope:哪個域