一、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

國際化/格式化標籤庫

http://java.sun.com/jsp/jstl/fmt

fmt

資料庫標籤庫

http://java.sun.com/jsp/jstl/sql

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:哪個域