# 1/20 JSP 觀念
###### tags: `JSP`
# 5-60 errorpage與isErrorPage設定

# 5-61.62 errorpage屬性
轉型有問題由這支errorpage="error.jsp"處理程式

true
exception這行印出顯示過程

(errorHandler.jsp)(hello.jsp)
用chrome執行 eclipse用ie會有問題
# 5-63 web.xml設定錯誤時處理
web.xml可以用通用性設定
2邊都設通用性 會以jsp程式優先 jsp沒設就以xml優先
上面靜態 下面動態(error-code):
# 5-64 <jsp:include>標籤
include包page自行生成 add.jsp也會獨立生成
參考(5-121)

(paramTest1.jsp)(paramTest1.jsp)
In paramTest1:->In paramTest2:->In paramTest1:
http://localhost:8080/JSPDemo/paramTest1.jsp(?first=Harry&last=jjj)
看順序

參考(5-117)

# 5-65<jsp:forward>標籤
用forward出去就不會回來


# 5-66 jps pages XML語法化

# 5-67 類xml格式標籤

(counter_xml.jps)
# 5-68 範例(xml格式)

# 5-69 Expression Language(EL)

https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html

Immediate Evaluation:立即驗證
Deferred Evaluation:晚一點驗證
# 5-70 EL討論範例
黃色區塊=黃色區塊 一樣



(eldemo.jsp)

# 5-71.72 Scripting VS.EL

前面強迫轉型 context環境
上面動詞
下面名詞 字首大寫

# 5-73~76 EL
對空值得處裡比較不會死當



要強迫轉型request 才能叫出.getMethod方法 context.request算是一個子類
get動詞(動作)

全部忽略:
參考5-40 

# 5-77~83 使用EL取得屬性
我去抓一個javabean
物件:user get:proprety 取得某人的名子
登入成功
上面javabean
下面el寫法 屬性名稱.運算

陣列orlist用[]

泛型 變數=建構子 泛型


names多個名稱

索引值變數名稱 param.index getparamname 運算式

list name = 子類array

# 5-84.85 EL的隱含物件
Implicit Objects
https://www.javatpoint.com/EL-expression-in-jsp
https://www.tutorialspoint.com/jsp/jsp_expression_language.htm
跟屬性有關
# 5-86.87 EL運算子


# 5-89.90 Implicit Object Available in JSP Pages
Implicit(隱性)<=>Explicit(顯性)
exception特別的



白皮書 80 103頁


原因:
# 5-91~94 Implicit Objects說明

網頁看的到page scope
所在的執行環境

application=context


page=this 就是自己本身


# 5-95 Implicit Objects Available in Error Pages
選告變數 物件名稱少用這樣開頭

(implicit.jsp)(xml)(initTest.jsp)

# 5-96.97.(98) 程式碼練習



# 5-99 Jsp的scope物件
Application servletContext
Session Session
Request Request
page pagecontext
setAttribute()
getAttribute()
removeattribute()

# 5-100 Scope物件

https://javaee.github.io/javaee-spec/javadocs/

用靜態include
不能用同樣的宣告
# 5-102 JSP page就是servlet
parse翻成java檔

# 5-103 JSP的life-cycle phases
七個階段

# 5-104 JSP的Instance產生過程

# 5-105 JSP life-cycle中所呼叫的method
服務完實作

https://javaee.github.io/javaee-spec/javadocs/


# 5-106.7.8 jsp to servlet


樣板文字 out.write
(visitorcounter.jsp)

# 5-109 Translation units
a includ b 不能重複宣告

(參考5-114)
# 5-110 JSP life-cycle範例
(persistent_visitorcounter.jsp)

# 5-111 使用request-time attribute expressions
把資訊帶進去
下面的程式要在執行階段才能執行

# 5-113 Static inclusion
第一行 jsp寫法
第二行 xml

# 5-114 Static inclusion例

# 5-115 Static inclusion的注意事項
上一張a跟b可擺pageContext

# 5-116 Dynamic inclusion
page活的
flush='true'立即送出

# 5-117 Dynamic inclusion範例
各自有serv程式

白皮書 114(參考)

# 5-118.119 JSP include action說明
java語法
servlet語法
jsp include進來
include(StringrelativeUrlPath, boolean flush)
include
If the relativeUrlPath begins with a "/" then the URL specified is calculated relative to the DOCROOT https://javaee.github.io/javaee-spec/javadocs/

白皮書

靜態
```
• A.jsp says <%@ include file=”dir/B.jsp”%> and dir/B.jsp says <%@ include
file=”C.jsp”%>. In this case the relative specification C.jsp resolves to dir/C.jsp.
• A.jsp says <jsp:include page=”dir/B.jsp”/> and dir/B.jsp says <jsp:include
page=”C.jsp” />. In this case the relative specification C.jsp resolves to dir/
C.jsp.
• A.jsp says <jsp:include page=”dir/B.jsp”/> and dir/B.jsp says <%@ include
file=”C.jsp” %>. In this case the relative specification C.jsp resolves to dir/
C.jsp.
• A.jsp says <%@ include file=”dir/B.jsp”%> and dir/B.jsp says <jsp:include
page=”C.jsp”/>. In this case the relative specification C.jsp resolves to C.jsp.
```
1.a->b<c=c
2.a>b>c
3.a->b=c(在b裡面)
4.a靜態->b b動態->c c=a

# 5-120 JSP forward action說明
forward
pagecontext特異功能送出去

# 5-121 傳遞參數給dynamically included compon
送參數

(參考5-64頁)
# 5-122 與dynamically included components共享物件
(參考5-117圖)

# 5-124 甚麼是JavaBeans?
封裝:合法的方法,讓使用者來呼叫,做控管,跟邏輯判斷

# 5-125 JavaBeans的設計規則
沒參數的建構子
建構子的宣告 要寫"沒有參數的建構子"
類別或成員都沒有公開的變數
JavaBean需要package player;

1.2.3.只是一個宣告 實作implements
javaBeans可以把東西都包起來封裝

# 5-126 Jsp tage設定JavaBeans
白皮書
# 5-127.128 <jsp:useBean>的宣告項目(attribute)

type跟class不能亂寫
type父類

# 5-129.130 <jsp:get(set)property>-讀取Bean的值
宣告 取得
property:轉化動作(參考131)
siraple property
index property

# 5-131 範例討論
java.io.Serializable

# 5-132
程式碼去寫javabean去寫
# 5-133~135 範例討論
type沒寫
宣告變數名稱空的

https://javaee.github.io/javaee-spec/javadocs/

# 5-136 <jsp:useBean>
user.setPassword("123456")
.方法
javabean沒有定義setPassword的方法javabean會當掉
大小寫要注意

# 5-137 <jsp:setProperty>

# 5-138.139 <jsp:setProperty>
138跟139相對的
138 找步道user物件,則會建立一個新的物件並設定相關屬性內容,相反則會直接使用139 2條獨立的
# 5-140 <jsp:getProperty>
命名法則很重要

# 5-141 Bean Class的安裝
第三方開發 通常擺lib底下

(參考5-132)
# 5-142~145 Bean範例
(StringBean.jsp)(StringBean.java)

3個不同的寫法(SaleEntry.jsp)(SaleEntry1.java)
import


http://localhost:8080/JSPDemo/SaleEntry1.jsp(?itemID=a1234&numltems=10&discountCode=0.8)
(SaleEntry2.java)
